From 264058c1f01fbc3caf113a5b51f721f2c32e1619 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sat, 12 Oct 2024 18:49:48 +0200 Subject: [PATCH 1/2] cli: no longer default test to watch mode when since flag is provided Signed-off-by: Patrik Oldsberg --- .changeset/beige-ghosts-enjoy.md | 5 +++++ packages/cli/src/commands/repo/test.ts | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 .changeset/beige-ghosts-enjoy.md diff --git a/.changeset/beige-ghosts-enjoy.md b/.changeset/beige-ghosts-enjoy.md new file mode 100644 index 0000000000..49ae916939 --- /dev/null +++ b/.changeset/beige-ghosts-enjoy.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': minor +--- + +The `repo test` command will no longer default to watch mode if the `--since` flag is provided. diff --git a/packages/cli/src/commands/repo/test.ts b/packages/cli/src/commands/repo/test.ts index c55969d696..c2a31c1129 100644 --- a/packages/cli/src/commands/repo/test.ts +++ b/packages/cli/src/commands/repo/test.ts @@ -172,7 +172,11 @@ export async function command(opts: OptionValues, cmd: Command): Promise { } // Run in watch mode unless in CI, coverage mode, or running all tests - if (!process.env.CI && !hasFlags('--coverage', '--watch', '--watchAll')) { + if ( + !opts.since && + !process.env.CI && + !hasFlags('--coverage', '--watch', '--watchAll') + ) { const isGitRepo = () => runCheck('git', 'rev-parse', '--is-inside-work-tree'); const isMercurialRepo = () => runCheck('hg', '--cwd', '.', 'root'); From 40c3ae6cfe6758ea35de731c56f1d685315d97b8 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sat, 12 Oct 2024 18:50:34 +0200 Subject: [PATCH 2/2] cli: no longer notify test cache hit when not included in since Signed-off-by: Patrik Oldsberg --- packages/cli/src/commands/repo/test.ts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/cli/src/commands/repo/test.ts b/packages/cli/src/commands/repo/test.ts index c2a31c1129..87f8e004b0 100644 --- a/packages/cli/src/commands/repo/test.ts +++ b/packages/cli/src/commands/repo/test.ts @@ -221,6 +221,7 @@ export async function command(opts: OptionValues, cmd: Command): Promise { return packageGraph; } + let selectedProjects: string[] | undefined = undefined; if (opts.since && !hasFlags('--selectProjects')) { const graph = await getPackageGraph(); const changedPackages = await graph.listChangedPackages({ @@ -228,19 +229,20 @@ export async function command(opts: OptionValues, cmd: Command): Promise { analyzeLockfile: true, }); - const packageNames = Array.from( + selectedProjects = Array.from( graph.collectPackageNames( changedPackages.map(pkg => pkg.name), pkg => pkg.allLocalDependents.keys(), ), ); - if (packageNames.length === 0) { + if (selectedProjects.length === 0) { console.log(`No packages changed since ${opts.since}`); return; } - args.push('--selectProjects', ...packageNames); + selectedProjects = selectedProjects.filter(pkg => pkg.includes('app')); + args.push('--selectProjects', ...selectedProjects); } // This is the only thing that is not implemented by jest.run(), so we do it here instead @@ -350,7 +352,9 @@ export async function command(opts: OptionValues, cmd: Command): Promise { projectHashes.set(packageName, sha); if (cache?.includes(sha)) { - console.log(`Skipped ${packageName} due to cache hit`); + if (!selectedProjects || selectedProjects.includes(packageName)) { + console.log(`Skipped ${packageName} due to cache hit`); + } outputSuccessCache.push(sha); return undefined; }