1 var test = require("tap").test
2 var path = require("path")
4 var osenv = require("osenv")
5 var rimraf = require("rimraf")
6 var mkdirp = require("mkdirp")
7 var common = require("../common-tap.js")
9 var PKG_DIR = path.resolve(__dirname, "shrinkwrap-local-dependency")
10 var CACHE_DIR = path.resolve(PKG_DIR, "cache")
11 var DEP_DIR = path.resolve(PKG_DIR, "dep")
14 "name": "npm-test-shrinkwrap-local-dependency",
17 "npm-test-shrinkwrap-local-dependency-dep": {
20 "resolved": "file:dep"
26 "author": "Thomas Torp",
27 "name": "npm-test-shrinkwrap-local-dependency",
30 "npm-test-shrinkwrap-local-dependency-dep": "file:./dep"
35 "author": "Thomas Torp",
36 "name": "npm-test-shrinkwrap-local-dependency-dep",
41 test("shrinkwrap uses resolved with file: on local deps", function(t) {
45 ["--cache="+CACHE_DIR, "--loglevel=silent", "install", "."],
47 function (err, code) {
48 t.ifError(err, "npm install worked")
49 t.equal(code, 0, "npm exited normally")
52 ["--cache="+CACHE_DIR, "--loglevel=silent", "shrinkwrap"],
54 function (err, code) {
55 t.ifError(err, "npm shrinkwrap worked")
56 t.equal(code, 0, "npm exited normally")
58 fs.readFile("npm-shrinkwrap.json", { encoding : "utf8" }, function (err, data) {
59 t.ifError(err, "read file correctly")
60 t.deepEqual(JSON.parse(data), desired, "shrinkwrap looks correct")
70 test('"npm install" should install local packages from shrinkwrap', function (t) {
74 ["--cache="+CACHE_DIR, "--loglevel=silent", "install", "."],
76 function (err, code) {
77 t.ifError(err, "install ran correctly")
78 t.notOk(code, "npm install exited with code 0")
79 var dependencyPackageJson = path.resolve(
81 "node_modules/npm-test-shrinkwrap-local-dependency-dep/package.json"
84 JSON.parse(fs.readFileSync(dependencyPackageJson, "utf8")),
85 "package with local dependency installed from shrinkwrap"
93 test("cleanup", function(t) {
101 mkdirp.sync(CACHE_DIR)
104 path.resolve(PKG_DIR, "package.json"),
105 JSON.stringify(root, null, 2)
108 path.resolve(DEP_DIR, "package.json"),
109 JSON.stringify(dependency, null, 2)
111 process.chdir(PKG_DIR)
114 function cleanNodeModules() {
115 rimraf.sync(path.resolve(PKG_DIR, "node_modules"))
119 process.chdir(osenv.tmpdir())