]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/test/tap/version-git-not-clean.js
Adding integrated tile server
[simantics/district.git] / org.simantics.maps.server / node / node-v4.8.0-win-x64 / node_modules / npm / test / tap / version-git-not-clean.js
diff --git a/org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/test/tap/version-git-not-clean.js b/org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/test/tap/version-git-not-clean.js
new file mode 100644 (file)
index 0000000..22ffb7c
--- /dev/null
@@ -0,0 +1,96 @@
+var common = require('../common-tap.js')
+var test = require('tap').test
+var npm = require('../../')
+var osenv = require('osenv')
+var path = require('path')
+var fs = require('fs')
+var rimraf = require('rimraf')
+var mkdirp = require('mkdirp')
+var which = require('which')
+var spawn = require('child_process').spawn
+
+var pkg = path.resolve(__dirname, 'version-git-not-clean')
+var cache = path.resolve(pkg, 'cache')
+
+test('npm version <semver> with working directory not clean', function (t) {
+  setup()
+  npm.load({ cache: cache, registry: common.registry, prefix: pkg }, function () {
+    which('git', function (err, git) {
+      t.ifError(err, 'git found')
+
+      function addPackageJSON (_cb) {
+        var data = JSON.stringify({ name: 'blah', version: '0.1.2' })
+        fs.writeFile('package.json', data, function () {
+          var child = spawn(git, ['add', 'package.json'])
+          child.on('exit', function () {
+            var child2 = spawn(git, ['commit', 'package.json', '-m', 'init'])
+            var out = ''
+            child2.stdout.on('data', function (d) {
+              out += d.toString()
+            })
+            child2.on('exit', function () {
+              return _cb(out)
+            })
+          })
+        })
+      }
+
+      common.makeGitRepo({path: pkg}, function () {
+        addPackageJSON(function () {
+          var data = JSON.stringify({ name: 'blah', version: '0.1.3' })
+          fs.writeFile('package.json', data, function () {
+            npm.commands.version(['patch'], function (err) {
+              if (!err) {
+                t.fail('should fail on non-clean working directory')
+              } else {
+                t.ok(err.message.match(/Git working directory not clean./))
+                t.ok(err.message.match(/M package.json/))
+              }
+              t.end()
+            })
+          })
+        })
+      })
+    })
+  })
+})
+
+test('npm version <semver> --force with working directory not clean', function (t) {
+  common.npm(
+    [
+      '--force',
+      '--no-sign-git-tag',
+      '--registry', common.registry,
+      '--prefix', pkg,
+      'version',
+      'patch'
+    ],
+    { cwd: pkg, env: {PATH: process.env.PATH} },
+    function (err, code, stdout, stderr) {
+      t.ifError(err, 'npm version ran without issue')
+      t.notOk(code, 'exited with a non-error code')
+      var errorLines = stderr.trim().split('\n')
+        .map(function (line) {
+          return line.trim()
+        })
+        .filter(function (line) {
+          return !line.indexOf('using --force')
+        })
+      t.notOk(errorLines.length, 'no error output')
+      t.end()
+    })
+})
+
+test('cleanup', function (t) {
+  // windows fix for locked files
+  process.chdir(osenv.tmpdir())
+
+  rimraf.sync(pkg)
+  t.end()
+})
+
+function setup () {
+  mkdirp.sync(pkg)
+  mkdirp.sync(cache)
+  process.chdir(pkg)
+}