Skip to content

Commit

Permalink
chore: add failing test for v9.6.7 npm manifest snapshot
Browse files Browse the repository at this point in the history
  • Loading branch information
lukekarrys committed Jun 6, 2023
1 parent c2a4515 commit f8cf453
Show file tree
Hide file tree
Showing 2 changed files with 193 additions and 0 deletions.
142 changes: 142 additions & 0 deletions tap-snapshots/test/lib/commands/publish.js.test.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,148 @@ exports[`test/lib/commands/publish.js TAP json > new package json 1`] = `
}
`

exports[`test/lib/commands/publish.js TAP manifest > manifest 1`] = `
Object {
"_id": "npm@{VERSION}",
"author": Object {
"name": "GitHub Inc.",
},
"bin": Object {
"npm": "bin/npm-cli.js",
"npx": "bin/npx-cli.js",
},
"bugs": Object {
"url": "https://github.com/npm/cli/issues",
},
"description": "a package manager for JavaScript",
"directories": Object {
"bin": "./bin",
"doc": "./doc",
"lib": "./lib",
"man": "./man",
},
"exports": Object {
".": Array [
Object {
"default": "./index.js",
},
"./index.js",
],
"./package.json": "./package.json",
},
"files": Array [
"bin/",
"lib/",
"index.js",
"docs/content/",
"docs/output/",
"man/",
],
"homepage": "https://docs.npmjs.com/",
"keywords": Array [
"install",
"modules",
"package manager",
"package.json",
],
"license": "Artistic-2.0",
"main": "./index.js",
"man": Array [
"man/man1/npm-access.1",
"man/man1/npm-adduser.1",
"man/man1/npm-audit.1",
"man/man1/npm-bugs.1",
"man/man1/npm-cache.1",
"man/man1/npm-ci.1",
"man/man1/npm-completion.1",
"man/man1/npm-config.1",
"man/man1/npm-dedupe.1",
"man/man1/npm-deprecate.1",
"man/man1/npm-diff.1",
"man/man1/npm-dist-tag.1",
"man/man1/npm-docs.1",
"man/man1/npm-doctor.1",
"man/man1/npm-edit.1",
"man/man1/npm-exec.1",
"man/man1/npm-explain.1",
"man/man1/npm-explore.1",
"man/man1/npm-find-dupes.1",
"man/man1/npm-fund.1",
"man/man1/npm-help-search.1",
"man/man1/npm-help.1",
"man/man1/npm-hook.1",
"man/man1/npm-init.1",
"man/man1/npm-install-ci-test.1",
"man/man1/npm-install-test.1",
"man/man1/npm-install.1",
"man/man1/npm-link.1",
"man/man1/npm-login.1",
"man/man1/npm-logout.1",
"man/man1/npm-ls.1",
"man/man1/npm-org.1",
"man/man1/npm-outdated.1",
"man/man1/npm-owner.1",
"man/man1/npm-pack.1",
"man/man1/npm-ping.1",
"man/man1/npm-pkg.1",
"man/man1/npm-prefix.1",
"man/man1/npm-profile.1",
"man/man1/npm-prune.1",
"man/man1/npm-publish.1",
"man/man1/npm-query.1",
"man/man1/npm-rebuild.1",
"man/man1/npm-repo.1",
"man/man1/npm-restart.1",
"man/man1/npm-root.1",
"man/man1/npm-run-script.1",
"man/man1/npm-search.1",
"man/man1/npm-shrinkwrap.1",
"man/man1/npm-star.1",
"man/man1/npm-stars.1",
"man/man1/npm-start.1",
"man/man1/npm-stop.1",
"man/man1/npm-team.1",
"man/man1/npm-test.1",
"man/man1/npm-token.1",
"man/man1/npm-uninstall.1",
"man/man1/npm-unpublish.1",
"man/man1/npm-unstar.1",
"man/man1/npm-update.1",
"man/man1/npm-version.1",
"man/man1/npm-view.1",
"man/man1/npm-whoami.1",
"man/man1/npm.1",
"man/man1/npx.1",
"man/man5/folders.5",
"man/man5/install.5",
"man/man5/npm-global.5",
"man/man5/npm-json.5",
"man/man5/npm-shrinkwrap-json.5",
"man/man5/npmrc.5",
"man/man5/package-json.5",
"man/man5/package-lock-json.5",
"man/man7/config.7",
"man/man7/dependency-selectors.7",
"man/man7/developers.7",
"man/man7/logging.7",
"man/man7/orgs.7",
"man/man7/package-spec.7",
"man/man7/registry.7",
"man/man7/removal.7",
"man/man7/scope.7",
"man/man7/scripts.7",
"man/man7/workspaces.7",
],
"name": "npm",
"readmeFilename": "README.md",
"repository": Object {
"type": "git",
"url": "git+https://github.com/npm/cli.git",
},
"version": "{VERSION}",
}
`

exports[`test/lib/commands/publish.js TAP no auth dry-run > must match snapshot 1`] = `
+ [email protected]
`
Expand Down
51 changes: 51 additions & 0 deletions test/lib/commands/publish.js
Original file line number Diff line number Diff line change
Expand Up @@ -719,3 +719,54 @@ t.test('public access', async t => {
t.matchSnapshot(joinedOutput(), 'new package version')
t.matchSnapshot(logs.notice)
})

t.test('manifest', async t => {
// https://github.com/npm/cli/pull/6470#issuecomment-1571234863

// snapshot test that was generated against v9.6.7 originally to ensure our
// own manifest does not change unexpectedly when publishing. this test
// asserts a bunch of keys are there that will change often and then snapshots
// the rest of the manifest.

const root = path.resolve(__dirname, '../../..')
const npmPkg = require(path.join(root, 'package.json'))

t.cleanSnapshot = (s) => s.replace(new RegExp(npmPkg.version, 'g'), '{VERSION}')

let manifest = null
const { npm } = await loadMockNpm(t, {
config: {
...auth,
},
chdir: () => root,
mocks: {
libnpmpublish: {
publish: (m) => manifest = m,
},
},
})
await npm.exec('publish', [])

const okKeys = [
'contributors',
'bundleDependencies',
'dependencies',
'devDependencies',
'templateOSS',
'scripts',
'tap',
'readme',
'gitHead',
'engines',
'workspaces',
]

for (const k of okKeys) {
t.ok(manifest[k], k)
delete manifest[k]
}

manifest.man.sort()

t.matchSnapshot(manifest, 'manifest')
})

0 comments on commit f8cf453

Please sign in to comment.