Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/npm/cli.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorclaudiahdz <cghr1990@gmail.com>2020-07-08 02:37:13 +0300
committerclaudiahdz <cghr1990@gmail.com>2020-07-08 02:37:13 +0300
commit3fbfaa0ccc4d1188c7bdc7fc9e3a88adcac35e83 (patch)
tree3ab72c9ed590505a00ec0e636668d6ed8f5f58fa
parentdc0ebf930b54705b0ca2e9e44f7cc6c5a96029da (diff)
test: clean up prune/dedupe tests suitetest/v7-dedupe
-rw-r--r--lib/dedupe.js2
-rw-r--r--test/lib/dedupe.js55
-rw-r--r--test/lib/find-dupes.js23
-rw-r--r--test/lib/prune.js8
-rw-r--r--test/tap/dedupe-git-semver.js138
-rw-r--r--test/tap/dedupe-scoped.js155
-rw-r--r--test/tap/dedupe.js122
7 files changed, 87 insertions, 416 deletions
diff --git a/lib/dedupe.js b/lib/dedupe.js
index f09cd4b06..96591329c 100644
--- a/lib/dedupe.js
+++ b/lib/dedupe.js
@@ -10,7 +10,7 @@ const completion = (cb) => cb(null, [])
const cmd = (args, cb) => dedupe(args).then(() => cb()).catch(cb)
const dedupe = async (args) => {
- const dryRun = args.dryRun || npm.flatOptions.dryRun
+ const dryRun = (args && args.dryRun) || npm.flatOptions.dryRun
const where = npm.prefix
const arb = new Arborist({
...npm.flatOptions,
diff --git a/test/lib/dedupe.js b/test/lib/dedupe.js
new file mode 100644
index 000000000..cf6f79e0a
--- /dev/null
+++ b/test/lib/dedupe.js
@@ -0,0 +1,55 @@
+const { test } = require('tap')
+const dedupe = require('../../lib/dedupe.js')
+const requireInject = require('require-inject')
+
+test('should remove dupes using Arborist', (t) => {
+ const dedupe = requireInject('../../lib/dedupe.js', {
+ '../../lib/npm.js': {
+ prefix: 'foo',
+ flatOptions: {
+ 'dryRun': 'false'
+ }
+ },
+ '@npmcli/arborist': function (args) {
+ t.ok(args, 'gets options object')
+ t.ok(args.path, 'gets path option')
+ t.ok(args.dryRun, 'gets dryRun from user')
+ this.dedupe = () => {
+ t.ok(true, 'dedupe is called')
+ }
+ },
+ '../../lib/utils/reify-output.js': (arb) => {
+ t.ok(arb, 'gets arborist tree')
+ }
+ })
+ dedupe({ dryRun: true }, () => {
+ t.ok(true, 'callback is called')
+ t.end()
+ })
+})
+
+test('should remove dupes using Arborist - no arguments', (t) => {
+ const dedupe = requireInject('../../lib/dedupe.js', {
+ '../../lib/npm.js': {
+ prefix: 'foo',
+ flatOptions: {
+ 'dryRun': 'true'
+ }
+ },
+ '@npmcli/arborist': function (args) {
+ t.ok(args.dryRun, 'gets dryRun from flatOptions')
+ this.dedupe = () => {}
+ },
+ '../../lib/utils/reify-output.js': () => {}
+ })
+ dedupe(null, () => {
+ t.end()
+ })
+})
+
+test('calls completion', (t) => {
+ dedupe.completion(() => {
+ t.ok(true, 'callback is called')
+ t.end()
+ })
+})
diff --git a/test/lib/find-dupes.js b/test/lib/find-dupes.js
new file mode 100644
index 000000000..f11eb53e0
--- /dev/null
+++ b/test/lib/find-dupes.js
@@ -0,0 +1,23 @@
+const { test } = require('tap')
+const findDupes = require('../../lib/find-dupes.js')
+const requireInject = require('require-inject')
+
+test('should run dedupe in dryRun mode', (t) => {
+ const findDupes = requireInject('../../lib/find-dupes.js', {
+ '../../lib/dedupe.js': function (args, cb) {
+ t.ok(args.dryRun, 'dryRun is true')
+ cb()
+ }
+ })
+ findDupes(null, () => {
+ t.ok(true, 'callback is called')
+ t.end()
+ })
+})
+
+test('calls completion', (t) => {
+ findDupes.completion(() => {
+ t.ok(true, 'callback is called')
+ t.end()
+ })
+})
diff --git a/test/lib/prune.js b/test/lib/prune.js
index a89c9d360..8c8eb9fff 100644
--- a/test/lib/prune.js
+++ b/test/lib/prune.js
@@ -1,4 +1,5 @@
const { test } = require('tap')
+const prune = require('../../lib/prune.js')
const requireInject = require('require-inject')
test('should prune using Arborist', (t) => {
@@ -25,3 +26,10 @@ test('should prune using Arborist', (t) => {
t.end()
})
})
+
+test('calls completion', (t) => {
+ prune.completion(() => {
+ t.ok(true, 'callback is called')
+ t.end()
+ })
+})
diff --git a/test/tap/dedupe-git-semver.js b/test/tap/dedupe-git-semver.js
deleted file mode 100644
index b7e31b086..000000000
--- a/test/tap/dedupe-git-semver.js
+++ /dev/null
@@ -1,138 +0,0 @@
-'use strict'
-const fs = require('fs')
-const path = require('path')
-const test = require('tap').test
-const requireInject = require('require-inject')
-const Tacks = require('tacks')
-const File = Tacks.File
-const Dir = Tacks.Dir
-
-const manifests = {
- 'git-wrap': {
- name: 'git-wrap',
- version: '1.0.0',
- dependencies: {
- git: 'git+https://example.com/git#semver:1.0'
- }
- },
- git: {
- name: 'git',
- version: '1.0.0'
- }
-}
-
-const npm = requireInject.installGlobally('../../lib/npm.js', {
- pacote: {
- manifest: function (spec) {
- const manifest = manifests[spec.name]
- manifest._requested = spec
- manifest._resolved = spec.saveSpec.replace(/^file:/, '').replace(/(:?#.*)$/, '#0000000000000000000000000000000000000000')
- manifest._from = spec.rawSpec
- return Promise.resolve(manifest)
- }
- },
- '../../lib/utils/output.js': function () {
- // do not output to stdout
- }
-})
-
-const common = require('../common-tap.js')
-const basedir = common.pkg
-const testdir = path.join(basedir, 'testdir')
-const cachedir = common.cache
-const tmpdir = path.join(basedir, 'tmp')
-
-const cwd = process.cwd()
-
-const conf = {
- cache: cachedir,
- tmp: tmpdir,
- loglevel: 'silent',
- 'package-lock-only': true
-}
-
-const fixture = new Tacks(Dir({
- cache: Dir(),
- global: Dir(),
- tmp: Dir(),
- testdir: Dir({
- 'package.json': File({
- name: 'fixture',
- version: '1.0.0',
- dependencies: {
- git: 'git+https://example.com/git#semver:1',
- 'git-wrap': 'file:git-wrap-1.0.0.tgz'
- }
- }),
- // Tarball source:
- // 'git-wrap': Dir({
- // 'package.json': File({
- // name: 'git-wrap',
- // version: '1.0.0',
- // dependencies: {
- // git: 'git+https://example.com/git#semver:1.0'
- // }
- // })
- // }),
- 'git-wrap-1.0.0.tgz': File(Buffer.from(
- '1f8b0800000000000003ed8fcd0ac23010843df729423caaf9c13642df26' +
- 'b44bad9a3434f107a4efeec68aa7de2c8898ef32cb0c3bec3a5d1d7503dc' +
- '8dca0ebeb38b991142a83c27537e44ee30db164a48a994c01987a210a873' +
- '1f32c5d907dde3299ff68cbf90b7fe08f78c106ab5015a12dab46173edb5' +
- 'a3ebe85ea0f76d676320996062746b70606bb0550b1ea3b84f9e9baf82d5' +
- '3e04e74bcee1a68d3b01ab3ac3d15f7a30d8586215c59d211bb26fff9e48' +
- '2412ffcc034458283d00080000',
- 'hex'
- ))
- })
-}))
-
-function setup () {
- cleanup()
- fixture.create(basedir)
-}
-
-function cleanup () {
- fixture.remove(basedir)
-}
-
-test('setup', function (t) {
- setup()
- process.chdir(testdir)
- npm.load(conf, function (err) {
- if (err) throw err
- t.done()
- })
-})
-
-test('dedupe matching git semver ranges', function (t) {
- npm.commands.install(function (err) {
- if (err) throw err
- const packageLock = JSON.parse(fs.readFileSync('package-lock.json'))
- t.same(packageLock, {
- name: 'fixture',
- version: '1.0.0',
- lockfileVersion: 1,
- requires: true,
- dependencies: {
- git: {
- from: 'git+https://example.com/git#semver:1',
- version: 'git+https://example.com/git#0000000000000000000000000000000000000000'
- },
- 'git-wrap': {
- version: 'file:git-wrap-1.0.0.tgz',
- requires: {
- git: 'git+https://example.com/git#semver:1'
- }
- }
- }
- })
- t.done()
- })
-})
-
-test('cleanup', function (t) {
- process.chdir(cwd)
- cleanup()
- t.done()
-})
diff --git a/test/tap/dedupe-scoped.js b/test/tap/dedupe-scoped.js
deleted file mode 100644
index 957f67e14..000000000
--- a/test/tap/dedupe-scoped.js
+++ /dev/null
@@ -1,155 +0,0 @@
-var fs = require('fs')
-var join = require('path').join
-
-var mkdirp = require('mkdirp')
-var rimraf = require('rimraf')
-var test = require('tap').test
-
-var common = require('../common-tap.js')
-var pkg = common.pkg
-var modules = join(pkg, 'node_modules')
-
-var EXEC_OPTS = { cwd: pkg }
-
-var body = [
- 'move\t@scope/shared\t2.1.6\tnode_modules/@scope/shared\t\tnode_modules/first/node_modules/@scope/shared',
- 'move\tfirstUnique\t0.6.0\tnode_modules/firstUnique\t\tnode_modules/first/node_modules/firstUnique',
- 'remove\t@scope/shared\t2.1.6\tnode_modules/second/node_modules/@scope/shared',
- 'move\tsecondUnique\t1.2.0\tnode_modules/secondUnique\t\tnode_modules/second/node_modules/secondUnique'
-]
-
-var deduper = {
- 'name': 'dedupe',
- 'version': '0.0.0',
- 'dependencies': {
- 'first': '1.0.0',
- 'second': '2.0.0'
- }
-}
-
-var first = {
- 'name': 'first',
- 'version': '1.0.0',
- 'dependencies': {
- 'firstUnique': '0.6.0',
- '@scope/shared': '2.1.6'
- },
- '_resolved': 'foo',
- '_integrity': 'sha1-deadbeef'
-}
-
-var second = {
- 'name': 'second',
- 'version': '2.0.0',
- 'dependencies': {
- 'secondUnique': '1.2.0',
- '@scope/shared': '2.1.6'
- },
- '_resolved': 'foo',
- '_integrity': 'sha1-deadbeef'
-}
-
-var shared = {
- 'name': '@scope/shared',
- 'version': '2.1.6',
- '_resolved': 'foo',
- '_integrity': 'sha1-deadbeef'
-}
-
-var firstUnique = {
- 'name': 'firstUnique',
- 'version': '0.6.0',
- '_resolved': 'foo',
- '_integrity': 'sha1-deadbeef'
-}
-
-var secondUnique = {
- 'name': 'secondUnique',
- 'version': '1.2.0',
- '_resolved': 'foo',
- '_integrity': 'sha1-deadbeef'
-}
-
-test('setup', function (t) {
- setup()
- t.end()
-})
-
-// we like the cars
-function ltrimm (l) { return l.trim() }
-
-test('dedupe finds the common scoped modules and moves it up one level', function (t) {
- common.npm(
- [
- 'find-dupes' // I actually found a use for this command!
- ],
- EXEC_OPTS,
- function (err, code, stdout, stderr) {
- t.ifError(err, 'successful dry run against fake install')
- t.notOk(code, 'npm ran without issue')
- t.notOk(stderr, 'npm printed no errors')
- t.same(
- stdout.trim().replace(/\\/g, '/').split('\n').map(ltrimm),
- body.map(ltrimm),
- 'got expected output'
- )
-
- t.end()
- }
- )
-})
-
-test('cleanup', function (t) {
- cleanup()
- t.end()
-})
-
-function setup (cb) {
- cleanup()
-
- mkdirp.sync(pkg)
- fs.writeFileSync(
- join(pkg, 'package.json'),
- JSON.stringify(deduper, null, 2)
- )
-
- mkdirp.sync(join(modules, 'first'))
- fs.writeFileSync(
- join(modules, 'first', 'package.json'),
- JSON.stringify(first, null, 2)
- )
-
- mkdirp.sync(join(modules, 'first', 'node_modules', 'firstUnique'))
- fs.writeFileSync(
- join(modules, 'first', 'node_modules', 'firstUnique', 'package.json'),
- JSON.stringify(firstUnique, null, 2)
- )
-
- mkdirp.sync(join(modules, 'first', 'node_modules', '@scope', 'shared'))
- fs.writeFileSync(
- join(modules, 'first', 'node_modules', '@scope', 'shared', 'package.json'),
- JSON.stringify(shared, null, 2)
- )
-
- mkdirp.sync(join(modules, 'second'))
- fs.writeFileSync(
- join(modules, 'second', 'package.json'),
- JSON.stringify(second, null, 2)
- )
-
- mkdirp.sync(join(modules, 'second', 'node_modules', 'secondUnique'))
- fs.writeFileSync(
- join(modules, 'second', 'node_modules', 'secondUnique', 'package.json'),
- JSON.stringify(secondUnique, null, 2)
- )
-
- mkdirp.sync(join(modules, 'second', 'node_modules', '@scope', 'shared'))
- fs.writeFileSync(
- join(modules, 'second', 'node_modules', '@scope', 'shared', 'package.json'),
- JSON.stringify(shared, null, 2)
- )
-}
-
-function cleanup () {
- rimraf.sync(pkg)
-}
diff --git a/test/tap/dedupe.js b/test/tap/dedupe.js
deleted file mode 100644
index 109f81656..000000000
--- a/test/tap/dedupe.js
+++ /dev/null
@@ -1,122 +0,0 @@
-var fs = require('graceful-fs')
-var path = require('path')
-var existsSync = fs.existsSync || path.existsSync
-
-var mkdirp = require('mkdirp')
-var mr = require('npm-registry-mock')
-var rimraf = require('rimraf')
-var test = require('tap').test
-
-var common = require('../common-tap.js')
-var server
-
-var pkg = common.pkg
-
-var EXEC_OPTS = { cwd: pkg }
-
-var json = {
- author: 'Dedupe tester',
- name: 'dedupe',
- version: '0.0.0',
- dependencies: {
- optimist: '0.6.0',
- clean: '2.1.6'
- }
-}
-
-var shrinkwrap = {
- name: 'dedupe',
- version: '0.0.0',
- dependencies: {
- clean: {
- version: '2.1.6',
- dependencies: {
- checker: {
- version: '0.5.2',
- dependencies: {
- async: { version: '0.2.10' }
- }
- },
- minimist: { version: '0.0.5' }
- }
- },
- optimist: {
- version: '0.6.0',
- dependencies: {
- wordwrap: { version: '0.0.2' },
- minimist: { version: '0.0.5' }
- }
- }
- }
-}
-
-test('setup', function (t) {
- t.comment('test for https://github.com/npm/npm/issues/4675')
- setup(function () {
- t.end()
- })
-})
-
-test('dedupe finds the common module and moves it up one level', function (t) {
- common.npm([
- '--registry', common.registry,
- '--no-save',
- 'install', '.'
- ],
- EXEC_OPTS,
- function (err, code) {
- t.ifError(err, 'successfully installed directory')
- t.equal(code, 0, 'npm install exited with code')
- common.npm(
- [
- 'dedupe'
- ],
- EXEC_OPTS,
- function (err, code) {
- t.ifError(err, 'successfully deduped against previous install')
- t.notOk(code, 'npm dedupe exited with code')
-
- t.ok(existsSync(path.join(pkg, 'node_modules', 'minimist')), 'minimist module exists')
- t.notOk(
- existsSync(path.join(pkg, 'node_modules', 'clean', 'node_modules', 'minimist')),
- 'no clean/minimist'
- )
- t.notOk(
- existsSync(path.join(pkg, 'node_modules', 'optimist', 'node_modules', 'minimist')),
- 'no optmist/minimist'
- )
- t.end()
- }
- )
- })
-})
-
-test('cleanup', function (t) {
- server.close()
- cleanup()
-
- t.end()
-})
-
-function cleanup () {
- rimraf.sync(pkg)
-}
-
-function setup (cb) {
- cleanup()
- mkdirp.sync(pkg)
- fs.writeFileSync(
- path.join(pkg, 'package.json'),
- JSON.stringify(json, null, 2)
- )
- fs.writeFileSync(
- path.join(pkg, 'npm-shrinkwrap.json'),
- JSON.stringify(shrinkwrap, null, 2)
- )
- process.chdir(pkg)
-
- mr({ port: common.port }, function (er, s) {
- server = s
- cb()
- })
-}