3 if (process.argv[2] === "write-builtin") {
4 var pid = process.argv[3]
5 fs.writeFileSync("npmrc", "foo=bar\npid=" + pid + "\n")
9 var rcdata = "foo=bar\npid=" + process.pid + "\n"
10 var common = require("../common-tap.js")
11 var path = require("path")
12 var rimraf = require("rimraf")
13 var mkdirp = require("mkdirp")
14 var folder = path.resolve(__dirname, "builtin-config")
15 var test = require("tap").test
16 var npm = path.resolve(__dirname, "../..")
17 var spawn = require("child_process").spawn
18 var node = process.execPath
20 test("setup", function (t) {
22 mkdirp.sync(folder + "/first")
23 mkdirp.sync(folder + "/second")
24 mkdirp.sync(folder + "/cache")
25 mkdirp.sync(folder + "/tmp")
27 t.pass("finished setup")
32 test("install npm into first folder", function (t) {
33 var args = ["install", npm, "-g",
34 "--prefix=" + folder + "/first",
36 "--cache=" + folder + "/cache",
39 "--tmp=" + folder + "/tmp"]
40 common.npm(args, {stdio: "inherit"}, function (er, code) {
47 test("write npmrc file", function (t) {
48 common.npm(["explore", "npm", "-g",
49 "--prefix=" + folder + "/first",
50 "--cache=" + folder + "/cache",
51 "--tmp=" + folder + "/tmp",
54 node, __filename, "write-builtin", process.pid
64 test("use first npm to install second npm", function (t) {
65 // get the root location
66 common.npm([ "root", "-g",
67 "--prefix=" + folder + "/first",
68 "--cache=" + folder + "/cache",
69 "--tmp=" + folder + "/tmp",
71 ], {}, function (er, code, so) {
75 t.ok(fs.statSync(root).isDirectory())
77 var bin = path.resolve(root, "npm/bin/npm-cli.js")
82 , "--prefix=" + folder + "/second"
83 , "--cache=" + folder + "/cache"
84 , "--tmp=" + folder + "/tmp"
87 .on("error", function (er) { throw er })
88 .on("close", function (code) {
89 t.equal(code, 0, "code is zero")
95 test("verify that the builtin config matches", function (t) {
96 common.npm([ "root", "-g",
97 "--prefix=" + folder + "/first",
98 "--cache=" + folder + "/cache",
99 "--tmp=" + folder + "/tmp"
100 ], {}, function (er, code, so) {
103 var firstRoot = so.trim()
104 common.npm([ "root", "-g",
105 "--prefix=" + folder + "/second",
106 "--cache=" + folder + "/cache",
107 "--tmp=" + folder + "/tmp"
108 ], {}, function (er, code, so) {
111 var secondRoot = so.trim()
112 var firstRc = path.resolve(firstRoot, "npm", "npmrc")
113 var secondRc = path.resolve(secondRoot, "npm", "npmrc")
114 var firstData = fs.readFileSync(firstRc, "utf8")
115 var secondData = fs.readFileSync(secondRc, "utf8")
116 t.equal(firstData, secondData)
123 test("clean", function (t) {