]> gerrit.simantics Code Review - simantics/district.git/blob - org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/test/tap/install-scoped-already-installed.js
Adding integrated tile server
[simantics/district.git] / org.simantics.maps.server / node / node-v4.8.0-win-x64 / node_modules / npm / test / tap / install-scoped-already-installed.js
1 var fs = require('graceful-fs')
2 var path = require('path')
3 var existsSync = fs.existsSync || path.existsSync
4
5 var mkdirp = require('mkdirp')
6 var osenv = require('osenv')
7 var rimraf = require('rimraf')
8 var test = require('tap').test
9
10 var common = require('../common-tap')
11
12 var root = path.join(__dirname, 'install-scoped-already-installed')
13 var pkg = path.join(root, 'package-with-scoped-paths')
14 var modules = path.join(pkg, 'node_modules')
15
16 var EXEC_OPTS = { cwd: pkg }
17
18 var scopedPaths = {
19   name: 'package-with-scoped-paths',
20   version: '0.0.0',
21   dependencies: {
22     'package-local-dependency': 'file:../package-local-dependency',
23     '@scoped/package-scoped-dependency': 'file:../package-scoped-dependency'
24   }
25 }
26
27 var localDependency = {
28   name: 'package-local-dependency',
29   version: '0.0.0',
30   description: 'Test for local installs'
31 }
32
33 var scopedDependency = {
34   name: '@scoped/package',
35   version: '0.0.0',
36   description: 'Test for local installs'
37 }
38
39 test('setup', function (t) {
40   rimraf.sync(root)
41   mkdirp.sync(pkg)
42   fs.writeFileSync(
43     path.join(pkg, 'package.json'),
44     JSON.stringify(scopedPaths, null, 2)
45   )
46
47   mkdirp.sync(path.join(root, 'package-local-dependency'))
48   fs.writeFileSync(
49     path.join(root, 'package-local-dependency', 'package.json'),
50     JSON.stringify(localDependency, null, 2)
51   )
52
53   mkdirp.sync(path.join(root, 'package-scoped-dependency'))
54   fs.writeFileSync(
55     path.join(root, 'package-scoped-dependency', 'package.json'),
56     JSON.stringify(scopedDependency, null, 2)
57   )
58
59   process.chdir(pkg)
60   t.end()
61 })
62
63 test('installing already installed local scoped package', function (t) {
64   common.npm(
65     [
66       '--loglevel', 'silent',
67       'install'
68     ],
69     EXEC_OPTS,
70     function (err, code, stdout) {
71       var installed = parseNpmInstallOutput(stdout)
72       t.ifError(err, 'install ran to completion without error')
73       t.notOk(code, 'npm install exited with code 0')
74
75       t.ok(
76         existsSync(path.join(modules, '@scoped', 'package', 'package.json')),
77         'package installed'
78       )
79       t.ok(
80         contains(installed, 'node_modules/@scoped/package'),
81         'installed @scoped/package'
82       )
83       t.ok(
84         contains(installed, 'node_modules/package-local-dependency'),
85         'installed package-local-dependency'
86       )
87
88       common.npm(
89         [
90           '--loglevel', 'silent',
91           'install'
92         ],
93         EXEC_OPTS,
94         function (err, code, stdout) {
95           t.ifError(err, 'install ran to completion without error')
96           t.notOk(code, 'npm install raised no error code')
97
98           installed = parseNpmInstallOutput(stdout)
99
100           t.ok(
101             existsSync(path.join(modules, '@scoped', 'package', 'package.json')),
102             'package installed'
103           )
104
105           t.notOk(
106             contains(installed, 'node_modules/@scoped/package'),
107             'did not reinstall @scoped/package'
108           )
109           t.notOk(
110             contains(installed, 'node_modules/package-local-dependency'),
111             'did not reinstall package-local-dependency'
112           )
113           t.end()
114         }
115       )
116     }
117   )
118 })
119
120 test('cleanup', function (t) {
121   process.chdir(osenv.tmpdir())
122   rimraf.sync(root)
123   t.end()
124 })
125
126 function contains (list, element) {
127   for (var i = 0; i < list.length; ++i) {
128     if (list[i] === element) {
129       return true
130     }
131   }
132   return false
133 }
134
135 function parseNpmInstallOutput (stdout) {
136   return stdout.trim().split(/\n\n|\s+/)
137 }