From 823ccf85d764ab01aecc9945d599d348a52272ab Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Tue, 2 Feb 2021 23:52:51 +0100 Subject: [PATCH 1/3] fix(build): fix markBumpedFilesAsAssumeUnchanged file location `name` would be the package name, e.g. `@mongosh/build`, which would not be present in that form on the file system. We also need to use `lerna list --all`, since otherwise private packages are not included. --- packages/build/src/npm-packages.spec.ts | 11 ++++++----- packages/build/src/npm-packages.ts | 19 ++++++++++++++----- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/packages/build/src/npm-packages.spec.ts b/packages/build/src/npm-packages.spec.ts index 4cdcd3e14a..27b0b87139 100644 --- a/packages/build/src/npm-packages.spec.ts +++ b/packages/build/src/npm-packages.spec.ts @@ -6,7 +6,8 @@ import { listNpmPackages, markBumpedFilesAsAssumeUnchanged, publishNpmPackages, - spawnSync + spawnSync, + LernaPackageDescription } from './npm-packages'; @@ -167,16 +168,16 @@ describe('npm-packages', () => { }); describe('markBumpedFilesAsAssumeUnchanged', () => { - let packages: { name: string; version: string }[]; + let packages: LernaPackageDescription[]; let expectedFiles: string[]; let spawnSync: SinonStub; beforeEach(() => { expectedFiles = ['lerna.json']; packages = listNpmPackages(); - packages.forEach(({ name }) => { - expectedFiles.push(`packages/${name}/package.json`); - expectedFiles.push(`packages/${name}/package-lock.json`); + packages.forEach(({ location }) => { + expectedFiles.push(`${location}/package.json`); + expectedFiles.push(`${location}/package-lock.json`); }); spawnSync = sinon.stub(); diff --git a/packages/build/src/npm-packages.ts b/packages/build/src/npm-packages.ts index 81539ba52f..e3894d9fd8 100644 --- a/packages/build/src/npm-packages.ts +++ b/packages/build/src/npm-packages.ts @@ -6,6 +6,13 @@ const PLACEHOLDER_VERSION = '0.0.0-dev.0'; const PROJECT_ROOT = path.resolve(__dirname, '..', '..', '..'); const LERNA_BIN = path.resolve(PROJECT_ROOT, 'node_modules', '.bin', 'lerna'); +export interface LernaPackageDescription { + name: string; + version: string; + private: boolean; + location: string; +} + export function spawnSync(command: string, args: string[], options: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns { const result = spawn.sync(command, args, options); if (result.error) { @@ -88,11 +95,12 @@ export function publishNpmPackages( } } -export function listNpmPackages(): { name: string; version: string }[] { +export function listNpmPackages(): LernaPackageDescription[] { const lernaListOutput = spawnSync( LERNA_BIN, [ 'list', '--json', + '--all' ], { cwd: PROJECT_ROOT, @@ -104,15 +112,16 @@ export function listNpmPackages(): { name: string; version: string }[] { } export function markBumpedFilesAsAssumeUnchanged( - packages: { name: string }[], assumeUnchanged: boolean, + packages: LernaPackageDescription[], + assumeUnchanged: boolean, spawnSyncFn: typeof spawnSync = spawnSync ): void { const filesToAssume = [ 'lerna.json' ]; - packages.forEach(({ name }) => { - filesToAssume.push(`packages/${name}/package.json`); - filesToAssume.push(`packages/${name}/package-lock.json`); + packages.forEach(({ location }) => { + filesToAssume.push(`${location}/package.json`); + filesToAssume.push(`${location}/package-lock.json`); }); filesToAssume.forEach(f => { From 4c1e1366f8116249e529c3dc1485b1c4f5770443 Mon Sep 17 00:00:00 2001 From: Michael Rose Date: Wed, 3 Feb 2021 09:46:14 +0100 Subject: [PATCH 2/3] fixup --- packages/build/src/npm-packages.spec.ts | 8 +++++--- packages/build/src/npm-packages.ts | 6 +++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/packages/build/src/npm-packages.spec.ts b/packages/build/src/npm-packages.spec.ts index 27b0b87139..7a28674693 100644 --- a/packages/build/src/npm-packages.spec.ts +++ b/packages/build/src/npm-packages.spec.ts @@ -173,11 +173,13 @@ describe('npm-packages', () => { let spawnSync: SinonStub; beforeEach(() => { - expectedFiles = ['lerna.json']; + expectedFiles = [ + path.resolve(__dirname, '..', '..', '..', 'lerna.json') + ]; packages = listNpmPackages(); packages.forEach(({ location }) => { - expectedFiles.push(`${location}/package.json`); - expectedFiles.push(`${location}/package-lock.json`); + expectedFiles.push(path.resolve(location, 'package.json')); + expectedFiles.push(path.resolve(location, 'package-lock.json')); }); spawnSync = sinon.stub(); diff --git a/packages/build/src/npm-packages.ts b/packages/build/src/npm-packages.ts index e3894d9fd8..d139842c85 100644 --- a/packages/build/src/npm-packages.ts +++ b/packages/build/src/npm-packages.ts @@ -117,11 +117,11 @@ export function markBumpedFilesAsAssumeUnchanged( spawnSyncFn: typeof spawnSync = spawnSync ): void { const filesToAssume = [ - 'lerna.json' + path.resolve(PROJECT_ROOT, 'lerna.json') ]; packages.forEach(({ location }) => { - filesToAssume.push(`${location}/package.json`); - filesToAssume.push(`${location}/package-lock.json`); + filesToAssume.push(path.resolve(location, 'package.json')); + filesToAssume.push(path.resolve(location, 'package-lock.json')); }); filesToAssume.forEach(f => { From e46ddc19ab127ba33722c016212777a817107b5b Mon Sep 17 00:00:00 2001 From: Michael Rose Date: Wed, 3 Feb 2021 09:50:55 +0100 Subject: [PATCH 3/3] fixup --- packages/build/src/npm-packages.spec.ts | 5 +++++ packages/build/src/npm-packages.ts | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/packages/build/src/npm-packages.spec.ts b/packages/build/src/npm-packages.spec.ts index 7a28674693..b41ed44a8f 100644 --- a/packages/build/src/npm-packages.spec.ts +++ b/packages/build/src/npm-packages.spec.ts @@ -59,6 +59,11 @@ describe('npm-packages', () => { ['version', '0.7.0', '--no-changelog', '--no-push', '--exact', '--no-git-tag-version', '--force-publish', '--yes'], sinon.match.any ); + expect(spawnSync).to.have.been.calledWith( + 'git', + ['status', '--porcelain'], + sinon.match.any + ); }); }); diff --git a/packages/build/src/npm-packages.ts b/packages/build/src/npm-packages.ts index d139842c85..a2837a45e1 100644 --- a/packages/build/src/npm-packages.ts +++ b/packages/build/src/npm-packages.ts @@ -53,6 +53,11 @@ export function bumpNpmPackages( cwd: PROJECT_ROOT, encoding: 'utf8' }); + spawnSyncFn('git', ['status', '--porcelain'], { + stdio: 'inherit', + cwd: PROJECT_ROOT, + encoding: 'utf8' + }); } export function publishNpmPackages(