You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

73 lines
1.8 KiB

require("../common-tap.js")
var test = require("tap").test
var npm = require("../../lib/npm.js")
// this is the narrowest way to replace a function in the module cache
var found = true
var remoteGitPath = require.resolve("../../lib/cache/add-remote-git.js")
require("module")._cache[remoteGitPath] = {
id: remoteGitPath,
exports: function stub(_, __, cb) {
if (found) {
cb(null, {})
}
else {
cb(new Error("not on filesystem"))
}
}
}
// only load maybeGithub now, so it gets the stub from cache
var maybeGithub = require("../../lib/cache/maybe-github.js")
test("should throw with no parameters", function (t) {
t.plan(1)
t.throws(function () {
maybeGithub()
}, "throws when called without parameters")
})
test("should throw with wrong parameter types", function (t) {
t.plan(2)
t.throws(function () {
maybeGithub({}, function () {})
}, "expects only a package name")
t.throws(function () {
maybeGithub("npm/xxx-noexist", "ham")
}, "is always async")
})
test("should find an existing package on Github", function (t) {
found = true
npm.load({}, function (error) {
t.notOk(error, "bootstrapping succeeds")
t.doesNotThrow(function () {
maybeGithub("npm/npm", function (error, data) {
t.notOk(error, "no issues in looking things up")
t.ok(data, "received metadata from Github")
t.end()
})
})
})
})
test("shouldn't find a nonexistent package on Github", function (t) {
found = false
npm.load({}, function () {
t.doesNotThrow(function () {
maybeGithub("npm/xxx-noexist", function (error, data) {
t.equal(
error.message,
"not on filesystem",
"passed through original error message"
)
t.notOk(data, "didn't pass any metadata")
t.end()
})
})
})
})