]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/test/tap/gently-rm-symlink.js
Adding integrated tile server
[simantics/district.git] / org.simantics.maps.server / node / node-v4.8.0-win-x64 / node_modules / npm / test / tap / gently-rm-symlink.js
diff --git a/org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/test/tap/gently-rm-symlink.js b/org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/test/tap/gently-rm-symlink.js
new file mode 100644 (file)
index 0000000..d69b62e
--- /dev/null
@@ -0,0 +1,113 @@
+var resolve = require("path").resolve
+var fs = require("graceful-fs")
+var test = require("tap").test
+var mkdirp = require("mkdirp")
+var rimraf = require("rimraf")
+
+var common = require("../common-tap.js")
+
+var pkg = resolve(__dirname, "gently-rm-linked")
+var dep = resolve(__dirname, "test-linked")
+var glb = resolve(__dirname, "test-global")
+var lnk = resolve(__dirname, "test-global-link")
+
+var EXEC_OPTS = {
+  cwd : pkg
+}
+
+
+var index = "module.exports = function () { console.log('whoop whoop') }"
+
+var fixture = {
+  name: "@test/linked",
+  version: "1.0.0",
+  bin: {
+    linked: "./index.js"
+  }
+}
+
+test("setup", function (t) {
+  cleanup()
+  setup()
+
+  t.end()
+})
+
+test("install and link", function (t) {
+  common.npm(
+    [
+      "--global",
+      "--prefix",   lnk,
+      "--loglevel", "silent",
+      "install",    "../test-linked"
+    ],
+    EXEC_OPTS,
+    function (er, code, stdout, stderr) {
+      t.ifError(er, "test-linked install didn't explode")
+      t.notOk(code, "test-linked install also failed")
+      t.notOk(stderr, "no log output")
+
+      verify(t, stdout)
+
+      // again, to make sure unlinking works properlyt
+      common.npm(
+        [
+          "--global",
+          "--prefix", lnk,
+          "--loglevel", "silent",
+          "install", "../test-linked"
+        ],
+        EXEC_OPTS,
+        function (er, code, stdout, stderr) {
+          t.ifError(er, "test-linked install didn't explode")
+          t.notOk(code, "test-linked install also failed")
+          t.notOk(stderr, "no log output")
+
+          verify(t, stdout)
+
+          fs.readdir(pkg, function (er, files) {
+            t.ifError(er, "package directory is still there")
+            t.deepEqual(files, ["node_modules"], "only stub modules dir remains")
+
+            t.end()
+          })
+        }
+      )
+    }
+  )
+})
+
+test("cleanup", function (t) {
+  cleanup()
+
+  t.end()
+})
+
+function verify (t, stdout) {
+  var binPath = resolve(lnk, "bin", "linked")
+  var pkgPath = resolve(lnk, "lib", "node_modules", "@test", "linked")
+  var trgPath = resolve(pkgPath, "index.js")
+  t.equal(
+    stdout,
+    binPath+" -> "+trgPath+"\n@test/linked@1.0.0 "+pkgPath+"\n",
+    "got expected install output"
+  )
+}
+
+function cleanup () {
+  rimraf.sync(pkg)
+  rimraf.sync(dep)
+  rimraf.sync(lnk)
+  rimraf.sync(glb)
+}
+
+function setup () {
+  mkdirp.sync(pkg)
+  mkdirp.sync(glb)
+  fs.symlinkSync(glb, lnk)
+  // so it doesn't try to install into npm's own node_modules
+  mkdirp.sync(resolve(pkg, "node_modules"))
+  mkdirp.sync(dep)
+  fs.writeFileSync(resolve(dep, "package.json"), JSON.stringify(fixture))
+  fs.writeFileSync(resolve(dep, "index.js"), index)
+}