From ca7c69778a0c20d0eb433279747fdba6bcf9f87c Mon Sep 17 00:00:00 2001 From: Jeff Ching Date: Mon, 28 Feb 2022 14:15:44 -0800 Subject: [PATCH 1/4] test: fix tests for updating dependency versions --- __snapshots__/node-workspace.js | 6 ++--- test/plugins/node-workspace.ts | 42 +++++++++++++++++++++++++++------ 2 files changed, 38 insertions(+), 10 deletions(-) diff --git a/__snapshots__/node-workspace.js b/__snapshots__/node-workspace.js index 8bcbdd278..c31e2dd0f 100644 --- a/__snapshots__/node-workspace.js +++ b/__snapshots__/node-workspace.js @@ -18,7 +18,7 @@ Release notes for path: node1, releaseType: node * @here/pkgA bumped from 3.3.3 to ^3.3.4 -
@here/pkgC: 1.1.1 +
@here/pkgC: 1.1.2 ### Dependencies @@ -74,7 +74,7 @@ exports['NodeWorkspace plugin run walks dependency tree and updates previously u Release notes for path: node1, releaseType: node
-
@here/pkgB: 2.2.2 +
@here/pkgB: 2.2.3 ### Dependencies @@ -83,7 +83,7 @@ Release notes for path: node1, releaseType: node * @here/pkgA bumped from 3.3.3 to ^3.3.4
-
@here/pkgC: 1.1.1 +
@here/pkgC: 1.1.2 ### Dependencies diff --git a/test/plugins/node-workspace.ts b/test/plugins/node-workspace.ts index ff7a2ef8a..70051b390 100644 --- a/test/plugins/node-workspace.ts +++ b/test/plugins/node-workspace.ts @@ -53,6 +53,13 @@ export function buildMockPackageUpdate( }; } +function assertHasVersionUpdate(update: Update, expectedVersion: string) { + expect(update.updater).instanceof(RawContent); + const updater = update.updater as RawContent; + const data = JSON.parse(updater.rawContent); + expect(data.version).to.eql(expectedVersion); +} + describe('NodeWorkspace plugin', () => { let github: GitHub; let plugin: ManifestPlugin; @@ -170,10 +177,22 @@ describe('NodeWorkspace plugin', () => { ); expect(nodeCandidate).to.not.be.undefined; const updates = nodeCandidate!.pullRequest.updates; - assertHasUpdate(updates, 'node1/package.json', RawContent); - assertHasUpdate(updates, 'node2/package.json', RawContent); - assertHasUpdate(updates, 'node3/package.json', RawContent); - assertHasUpdate(updates, 'node4/package.json', RawContent); + assertHasVersionUpdate( + assertHasUpdate(updates, 'node1/package.json', RawContent), + '3.3.4' + ); + assertHasVersionUpdate( + assertHasUpdate(updates, 'node2/package.json', RawContent), + '2.2.3' + ); + assertHasVersionUpdate( + assertHasUpdate(updates, 'node3/package.json', RawContent), + '1.1.2' + ); + assertHasVersionUpdate( + assertHasUpdate(updates, 'node4/package.json', RawContent), + '4.4.5' + ); snapshot(dateSafe(nodeCandidate!.pullRequest.body.toString())); }); it('appends dependency notes to an updated module', async () => { @@ -212,9 +231,18 @@ describe('NodeWorkspace plugin', () => { ); expect(nodeCandidate).to.not.be.undefined; const updates = nodeCandidate!.pullRequest.updates; - assertHasUpdate(updates, 'node1/package.json', RawContent); - assertHasUpdate(updates, 'node2/package.json', RawContent); - assertHasUpdate(updates, 'node3/package.json', RawContent); + assertHasVersionUpdate( + assertHasUpdate(updates, 'node1/package.json', RawContent), + '3.3.4' + ); + assertHasVersionUpdate( + assertHasUpdate(updates, 'node2/package.json', RawContent), + '2.2.3' + ); + assertHasVersionUpdate( + assertHasUpdate(updates, 'node3/package.json', RawContent), + '1.1.2' + ); assertNoHasUpdate(updates, 'node4/package.json'); snapshot(dateSafe(nodeCandidate!.pullRequest.body.toString())); }); From 028684085d22046dd267d7c0ee5aadef802250c2 Mon Sep 17 00:00:00 2001 From: Jeff Ching Date: Mon, 28 Feb 2022 14:17:54 -0800 Subject: [PATCH 2/4] fix: node-workspace plugin should update package.json versions --- src/plugins/node-workspace.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/plugins/node-workspace.ts b/src/plugins/node-workspace.ts index d26be4cd9..e7c17f387 100644 --- a/src/plugins/node-workspace.ts +++ b/src/plugins/node-workspace.ts @@ -157,6 +157,13 @@ export class NodeWorkspace extends WorkspacePlugin { throw new Error(`Could not find graph package for ${pkg.name}`); } const updatedPackage = pkg.clone(); + // Update version of the package + const newVersion = updatedVersions.get(updatedPackage.name); + if (newVersion) { + logger.info(`Updating ${updatedPackage.name} to ${newVersion}`); + updatedPackage.version = newVersion.toString(); + } + // Update dependency versions for (const [depName, resolved] of graphPackage.localDependencies) { const depVersion = updatedVersions.get(depName); if (depVersion && resolved.type !== 'directory') { @@ -213,6 +220,12 @@ export class NodeWorkspace extends WorkspacePlugin { throw new Error(`Could not find graph package for ${pkg.name}`); } const updatedPackage = pkg.clone(); + // Update version of the package + const newVersion = updatedVersions.get(updatedPackage.name); + if (newVersion) { + logger.info(`Updating ${updatedPackage.name} to ${newVersion}`); + updatedPackage.version = newVersion.toString(); + } for (const [depName, resolved] of graphPackage.localDependencies) { const depVersion = updatedVersions.get(depName); if (depVersion && resolved.type !== 'directory') { From 744d2ee8ae41fba08809d6932a28de946c6c429b Mon Sep 17 00:00:00 2001 From: Jeff Ching Date: Mon, 28 Feb 2022 14:59:35 -0800 Subject: [PATCH 3/4] test: add failing test for CHANGELOG dependency section updates --- __snapshots__/node-workspace.js | 21 ++++++++++++++++++ test/plugins/node-workspace.ts | 39 ++++++++++++++++++++++++++++++++- 2 files changed, 59 insertions(+), 1 deletion(-) diff --git a/__snapshots__/node-workspace.js b/__snapshots__/node-workspace.js index c31e2dd0f..696912440 100644 --- a/__snapshots__/node-workspace.js +++ b/__snapshots__/node-workspace.js @@ -31,6 +31,27 @@ Release notes for path: node1, releaseType: node This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). ` +exports['NodeWorkspace plugin run appends dependency notes to an updated module 2'] = ` +other notes +` + +exports['NodeWorkspace plugin run appends dependency notes to an updated module 3'] = ` +### Dependencies + +* update dependency foo/bar to 1.2.3 +* The following workspace dependencies were updated + * dependencies + * @here/pkgA bumped from 3.3.3 to ^3.3.4 +` + +exports['NodeWorkspace plugin run appends dependency notes to an updated module 4'] = ` +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @here/pkgB bumped from 2.2.2 to ^2.2.3 +` + exports['NodeWorkspace plugin run combines node packages 1'] = ` :robot: I have created a release *beep* *boop* --- diff --git a/test/plugins/node-workspace.ts b/test/plugins/node-workspace.ts index 70051b390..b74d95de3 100644 --- a/test/plugins/node-workspace.ts +++ b/test/plugins/node-workspace.ts @@ -28,10 +28,12 @@ import { dateSafe, assertNoHasUpdate, buildMockCandidatePullRequest, + buildGitHubFileRaw, } from '../helpers'; import {RawContent} from '../../src/updaters/raw-content'; import snapshot = require('snap-shot-it'); import {ManifestPlugin} from '../../src/plugin'; +import {Changelog} from '../../src/updaters/changelog'; const sandbox = sinon.createSandbox(); const fixturesPath = './test/fixtures/plugins/node-workspace'; @@ -53,6 +55,23 @@ export function buildMockPackageUpdate( }; } +function buildMockChangelogUpdate( + path: string, + versionString: string, + changelogEntry: string +): Update { + const cachedFileContents = buildGitHubFileRaw(changelogEntry); + return { + path, + createIfMissing: false, + cachedFileContents, + updater: new Changelog({ + changelogEntry, + version: Version.parse(versionString), + }), + }; +} + function assertHasVersionUpdate(update: Update, expectedVersion: string) { expect(update.updater).instanceof(RawContent); const updater = update.updater as RawContent; @@ -201,13 +220,25 @@ describe('NodeWorkspace plugin', () => { const candidates: CandidateReleasePullRequest[] = [ buildMockCandidatePullRequest('node1', 'node', '3.3.4', '@here/pkgA', [ buildMockPackageUpdate('node1/package.json', 'node1/package.json'), + buildMockChangelogUpdate( + 'node1/CHANGELOG.md', + '3.3.4', + 'other notes' + ), ]), buildMockCandidatePullRequest( 'node2', 'node', '2.2.3', '@here/pkgB', - [buildMockPackageUpdate('node2/package.json', 'node2/package.json')], + [ + buildMockPackageUpdate('node2/package.json', 'node2/package.json'), + buildMockChangelogUpdate( + 'node2/CHANGELOG.md', + '3.3.4', + existingNotes + ), + ], existingNotes ), ]; @@ -245,6 +276,12 @@ describe('NodeWorkspace plugin', () => { ); assertNoHasUpdate(updates, 'node4/package.json'); snapshot(dateSafe(nodeCandidate!.pullRequest.body.toString())); + const update = assertHasUpdate(updates, 'node1/CHANGELOG.md', Changelog); + snapshot((update.updater as Changelog).changelogEntry); + const update2 = assertHasUpdate(updates, 'node2/CHANGELOG.md', Changelog); + snapshot((update2.updater as Changelog).changelogEntry); + const update3 = assertHasUpdate(updates, 'node3/CHANGELOG.md', Changelog); + snapshot((update3.updater as Changelog).changelogEntry); }); }); }); From fbc87ba5ba48700b53c4bea673d80d7af6f62e2f Mon Sep 17 00:00:00 2001 From: Jeff Ching Date: Mon, 28 Feb 2022 15:00:30 -0800 Subject: [PATCH 4/4] fix: fix dependency update notes --- src/plugins/node-workspace.ts | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/plugins/node-workspace.ts b/src/plugins/node-workspace.ts index e7c17f387..478dfa037 100644 --- a/src/plugins/node-workspace.ts +++ b/src/plugins/node-workspace.ts @@ -185,10 +185,13 @@ export class NodeWorkspace extends WorkspacePlugin { jsonStringify(updatedPackage.toJSON(), updatedPackage.rawContent) ); } else if (update.updater instanceof Changelog) { - update.updater.changelogEntry = appendDependenciesSectionToChangelog( - update.updater.changelogEntry, - dependencyNotes - ); + if (dependencyNotes) { + update.updater.changelogEntry = + appendDependenciesSectionToChangelog( + update.updater.changelogEntry, + dependencyNotes + ); + } } return update; }); @@ -264,7 +267,10 @@ export class NodeWorkspace extends WorkspacePlugin { createIfMissing: false, updater: new Changelog({ version, - changelogEntry: dependencyNotes, + changelogEntry: appendDependenciesSectionToChangelog( + '', + dependencyNotes + ), }), }, ],