]> gerrit.simantics Code Review - simantics/district.git/blob - org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/test/tap/dedupe-scoped.js
Adding integrated tile server
[simantics/district.git] / org.simantics.maps.server / node / node-v4.8.0-win-x64 / node_modules / npm / test / tap / dedupe-scoped.js
1 var fs = require('fs')
2 var join = require('path').join
3
4 var mkdirp = require('mkdirp')
5 var rimraf = require('rimraf')
6 var test = require('tap').test
7
8 var common = require('../common-tap.js')
9 var pkg = join(__dirname, 'dedupe-scoped')
10 var modules = join(pkg, 'node_modules')
11
12 var EXEC_OPTS = { cwd: pkg }
13
14 var prolog = 'dedupe@0.0.0 ' + pkg
15 var body = function () {/*
16 ├─┬ first@1.0.0
17 │ └── @scope/shared@2.1.6
18 └─┬ second@2.0.0
19   └── @scope/shared@2.1.6
20 */}.toString().split('\n').slice(1, -1)
21
22 var deduper = {
23   'name': 'dedupe',
24   'version': '0.0.0',
25   'dependencies': {
26     'first': '1.0.0',
27     'second': '2.0.0'
28   }
29 }
30
31 var first = {
32   'name': 'first',
33   'version': '1.0.0',
34   'dependencies': {
35     'firstUnique': '0.6.0',
36     '@scope/shared': '2.1.6'
37   }
38 }
39
40 var second = {
41   'name': 'second',
42   'version': '2.0.0',
43   'dependencies': {
44     'secondUnique': '1.2.0',
45     '@scope/shared': '2.1.6'
46   }
47 }
48
49 var shared = {
50   'name': '@scope/shared',
51   'version': '2.1.6'
52 }
53
54 var firstUnique = {
55   'name': 'firstUnique',
56   'version': '0.6.0'
57 }
58
59 var secondUnique = {
60   'name': 'secondUnique',
61   'version': '1.2.0'
62 }
63
64
65 test('setup', function (t) {
66   setup()
67   t.end()
68 })
69
70 // we like the cars
71 function ltrimm (l) { return l.trim() }
72
73 test('dedupe finds the common scoped modules and moves it up one level', function (t) {
74   common.npm(
75     [
76       'find-dupes' // I actually found a use for this command!
77     ],
78     EXEC_OPTS,
79     function (err, code, stdout, stderr) {
80       t.ifError(err, 'successful dry run against fake install')
81       t.notOk(code, 'npm ran without issue')
82       t.notOk(stderr, 'npm printed no errors')
83       t.same(
84         stdout.trim().split('\n').map(ltrimm),
85         [prolog].concat(body).map(ltrimm),
86         'got expected output'
87       )
88
89       t.end()
90     }
91   )
92 })
93
94 test('cleanup', function (t) {
95   cleanup()
96   t.end()
97 })
98
99 function setup (cb) {
100   cleanup()
101
102   mkdirp.sync(pkg)
103   fs.writeFileSync(
104     join(pkg, 'package.json'),
105     JSON.stringify(deduper, null, 2)
106   )
107
108   mkdirp.sync(join(modules, 'first'))
109   fs.writeFileSync(
110     join(modules, 'first', 'package.json'),
111     JSON.stringify(first, null, 2)
112   )
113
114   mkdirp.sync(join(modules, 'first', 'node_modules', 'firstUnique'))
115   fs.writeFileSync(
116     join(modules, 'first', 'node_modules', 'firstUnique', 'package.json'),
117     JSON.stringify(firstUnique, null, 2)
118   )
119
120   mkdirp.sync(join(modules, 'first', 'node_modules', '@scope', 'shared'))
121   fs.writeFileSync(
122     join(modules, 'first', 'node_modules', '@scope', 'shared', 'package.json'),
123     JSON.stringify(shared, null, 2)
124   )
125
126   mkdirp.sync(join(modules, 'second'))
127   fs.writeFileSync(
128     join(modules, 'second', 'package.json'),
129     JSON.stringify(second, null, 2)
130   )
131
132   mkdirp.sync(join(modules, 'second', 'node_modules', 'secondUnique'))
133   fs.writeFileSync(
134     join(modules, 'second', 'node_modules', 'secondUnique', 'package.json'),
135     JSON.stringify(secondUnique, null, 2)
136   )
137
138   mkdirp.sync(join(modules, 'second', 'node_modules', '@scope', 'shared'))
139   fs.writeFileSync(
140     join(modules, 'second', 'node_modules', '@scope', 'shared', 'package.json'),
141     JSON.stringify(shared, null, 2)
142   )
143 }
144
145 function cleanup () {
146   rimraf.sync(pkg)
147 }