Skip to content

Commit 49ba744

Browse files
hanslalexeagle
authored andcommitted
test: add filter, seed and better diff checking to test script
It wasnt checking the staging area. It also now shows the packages that will be tested. Filter and Seed are arguments that are directly passed to Jasmine. They can be used to reproduce tests.
1 parent 7f70af4 commit 49ba744

File tree

1 file changed

+19
-7
lines changed

1 file changed

+19
-7
lines changed

scripts/test.ts

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import { join, relative } from 'path';
1717
import { Position, SourceMapConsumer } from 'source-map';
1818
import * as ts from 'typescript';
1919
import { packages } from '../lib/packages';
20+
import { diff } from 'semver';
2021

2122
const codeMap = require('../lib/istanbul-local').codeMap;
2223
const Jasmine = require('jasmine');
@@ -225,12 +226,15 @@ export default function (args: ParsedArgs, logger: logging.Logger) {
225226
const sha = branchRevList.find(s => masterRevList.includes(s));
226227

227228
if (sha) {
228-
const diffFiles = _exec(
229-
'git',
230-
['diff', sha, 'HEAD', '--name-only'],
231-
{},
232-
logger,
233-
).trim().split('\n');
229+
const diffFiles = [
230+
// Get diff between $SHA and HEAD.
231+
..._exec('git', ['diff', sha, 'HEAD', '--name-only'], {}, logger)
232+
.trim().split('\n'),
233+
// And add the current status to it (so it takes the non-committed changes).
234+
..._exec('git', ['status', '--short', '--show-stash'], {}, logger)
235+
.split('\n').map(x => x.slice(2).trim()),
236+
].filter(x => x !== '');
237+
234238
const diffPackages = new Set();
235239
for (const pkgName of Object.keys(packages)) {
236240
const relativeRoot = relative(projectBaseDir, packages[pkgName].root);
@@ -241,6 +245,10 @@ export default function (args: ParsedArgs, logger: logging.Logger) {
241245
}
242246
}
243247

248+
// Show the packages that we will test.
249+
logger.info(`Found ${diffPackages.size} packages:`);
250+
logger.info(JSON.stringify([...diffPackages], null, 2));
251+
244252
// Remove the tests from packages that haven't changed.
245253
tests = tests
246254
.filter(p => Object.keys(packages).some(name => {
@@ -267,6 +275,10 @@ export default function (args: ParsedArgs, logger: logging.Logger) {
267275

268276
return new Promise(resolve => {
269277
runner.onComplete((passed: boolean) => resolve(passed ? 0 : 1));
270-
runner.execute(tests);
278+
if (args.seed != undefined) {
279+
runner.seed(args.seed);
280+
}
281+
282+
runner.execute(tests, args.filter);
271283
});
272284
}

0 commit comments

Comments
 (0)