mirror of
https://github.com/thangisme/notes.git
synced 2026-06-11 12:59:17 -04:00
Initial commit
This commit is contained in:
246
node_modules/normalize-package-data/test/normalize.js
generated
vendored
Normal file
246
node_modules/normalize-package-data/test/normalize.js
generated
vendored
Normal file
@@ -0,0 +1,246 @@
|
||||
var tap = require("tap")
|
||||
var fs = require("fs")
|
||||
var path = require("path")
|
||||
|
||||
var normalize = require("../lib/normalize")
|
||||
var warningMessages = require("../lib/warning_messages.json")
|
||||
var safeFormat = require("../lib/safe_format")
|
||||
|
||||
var rpjPath = path.resolve(__dirname,"./fixtures/read-package-json.json")
|
||||
|
||||
tap.test("normalize some package data", function(t) {
|
||||
var packageData = require(rpjPath)
|
||||
var warnings = []
|
||||
normalize(packageData, function(warning) {
|
||||
warnings.push(warning)
|
||||
})
|
||||
// there's no readme data in this particular object
|
||||
t.equal( warnings.length, 1, "There's exactly one warning.")
|
||||
fs.readFile(rpjPath, function(err, data) {
|
||||
if(err) throw err
|
||||
// Various changes have been made
|
||||
t.notEqual(packageData, JSON.parse(data), "Output is different from input.")
|
||||
t.end()
|
||||
})
|
||||
})
|
||||
|
||||
tap.test("runs without passing warning function", function(t) {
|
||||
var packageData = require(rpjPath)
|
||||
fs.readFile(rpjPath, function(err, data) {
|
||||
if(err) throw err
|
||||
normalize(JSON.parse(data))
|
||||
t.ok(true, "If you read this, this means I'm still alive.")
|
||||
t.end()
|
||||
})
|
||||
})
|
||||
|
||||
tap.test("empty object", function(t) {
|
||||
var packageData = {}
|
||||
var expect =
|
||||
{ name: '',
|
||||
version: '',
|
||||
readme: 'ERROR: No README data found!',
|
||||
_id: '@' }
|
||||
|
||||
var warnings = []
|
||||
function warn(m) {
|
||||
warnings.push(m)
|
||||
}
|
||||
normalize(packageData, warn)
|
||||
t.same(packageData, expect)
|
||||
t.same(warnings, [
|
||||
warningMessages.missingDescription,
|
||||
warningMessages.missingRepository,
|
||||
warningMessages.missingReadme,
|
||||
warningMessages.missingLicense
|
||||
])
|
||||
t.end()
|
||||
})
|
||||
|
||||
tap.test("core module name", function(t) {
|
||||
var warnings = []
|
||||
function warn(m) {
|
||||
warnings.push(m)
|
||||
}
|
||||
var a
|
||||
normalize(a={
|
||||
name: "http",
|
||||
readme: "read yourself how about",
|
||||
homepage: 123,
|
||||
bugs: "what is this i don't even",
|
||||
repository: "Hello."
|
||||
}, warn)
|
||||
|
||||
var expect = [
|
||||
safeFormat(warningMessages.conflictingName, 'http'),
|
||||
warningMessages.nonEmailUrlBugsString,
|
||||
warningMessages.emptyNormalizedBugs,
|
||||
warningMessages.nonUrlHomepage,
|
||||
warningMessages.missingLicense
|
||||
]
|
||||
t.same(warnings, expect)
|
||||
t.end()
|
||||
})
|
||||
|
||||
tap.test("urls required", function(t) {
|
||||
var warnings = []
|
||||
function warn(w) {
|
||||
warnings.push(w)
|
||||
}
|
||||
normalize({
|
||||
bugs: {
|
||||
url: "/1",
|
||||
email: "not an email address"
|
||||
}
|
||||
}, warn)
|
||||
var a
|
||||
normalize(a={
|
||||
readme: "read yourself how about",
|
||||
homepage: 123,
|
||||
bugs: "what is this i don't even",
|
||||
repository: "Hello."
|
||||
}, warn)
|
||||
|
||||
console.error(a)
|
||||
|
||||
var expect =
|
||||
[ warningMessages.missingDescription,
|
||||
warningMessages.missingRepository,
|
||||
warningMessages.nonUrlBugsUrlField,
|
||||
warningMessages.nonEmailBugsEmailField,
|
||||
warningMessages.emptyNormalizedBugs,
|
||||
warningMessages.missingReadme,
|
||||
warningMessages.missingLicense,
|
||||
warningMessages.nonEmailUrlBugsString,
|
||||
warningMessages.emptyNormalizedBugs,
|
||||
warningMessages.nonUrlHomepage,
|
||||
warningMessages.missingLicense]
|
||||
t.same(warnings, expect)
|
||||
t.end()
|
||||
})
|
||||
|
||||
tap.test("homepage field must start with a protocol.", function(t) {
|
||||
var warnings = []
|
||||
function warn(w) {
|
||||
warnings.push(w)
|
||||
}
|
||||
var a
|
||||
normalize(a={
|
||||
homepage: 'example.org'
|
||||
}, warn)
|
||||
|
||||
console.error(a)
|
||||
|
||||
var expect =
|
||||
[ warningMessages.missingDescription,
|
||||
warningMessages.missingRepository,
|
||||
warningMessages.missingReadme,
|
||||
warningMessages.missingProtocolHomepage,
|
||||
warningMessages.missingLicense]
|
||||
t.same(warnings, expect)
|
||||
t.same(a.homepage, 'http://example.org')
|
||||
t.end()
|
||||
})
|
||||
|
||||
tap.test("license field should be a valid SPDX expression", function(t) {
|
||||
var warnings = []
|
||||
function warn(w) {
|
||||
warnings.push(w)
|
||||
}
|
||||
var a
|
||||
normalize(a={
|
||||
license: 'Apache 2'
|
||||
}, warn)
|
||||
|
||||
console.error(a)
|
||||
|
||||
var expect =
|
||||
[ warningMessages.missingDescription,
|
||||
warningMessages.missingRepository,
|
||||
warningMessages.missingReadme,
|
||||
warningMessages.invalidLicense]
|
||||
t.same(warnings, expect)
|
||||
t.end()
|
||||
})
|
||||
|
||||
tap.test("gist bugs url", function(t) {
|
||||
var d = {
|
||||
repository: "git@gist.github.com:123456.git"
|
||||
}
|
||||
normalize(d)
|
||||
t.same(d.repository, { type: 'git', url: 'git+ssh://git@gist.github.com/123456.git' })
|
||||
t.same(d.bugs, { url: 'https://gist.github.com/123456' })
|
||||
t.end();
|
||||
});
|
||||
|
||||
tap.test("singularize repositories", function(t) {
|
||||
var d = {repositories:["git@gist.github.com:123456.git"]}
|
||||
normalize(d)
|
||||
t.same(d.repository, { type: 'git', url: 'git+ssh://git@gist.github.com/123456.git' })
|
||||
t.end()
|
||||
});
|
||||
|
||||
tap.test("treat visionmedia/express as github repo", function(t) {
|
||||
var d = {repository: {type: "git", url: "visionmedia/express"}}
|
||||
normalize(d)
|
||||
t.same(d.repository, { type: "git", url: "git+https://github.com/visionmedia/express.git" })
|
||||
t.end()
|
||||
});
|
||||
|
||||
tap.test("treat isaacs/node-graceful-fs as github repo", function(t) {
|
||||
var d = {repository: {type: "git", url: "isaacs/node-graceful-fs"}}
|
||||
normalize(d)
|
||||
t.same(d.repository, { type: "git", url: "git+https://github.com/isaacs/node-graceful-fs.git" })
|
||||
t.end()
|
||||
});
|
||||
|
||||
tap.test("homepage field will set to github url if repository is a github repo", function(t) {
|
||||
var a
|
||||
normalize(a={
|
||||
repository: { type: "git", url: "https://github.com/isaacs/node-graceful-fs" }
|
||||
})
|
||||
t.same(a.homepage, 'https://github.com/isaacs/node-graceful-fs#readme')
|
||||
t.end()
|
||||
})
|
||||
|
||||
tap.test("homepage field will set to github gist url if repository is a gist", function(t) {
|
||||
var a
|
||||
normalize(a={
|
||||
repository: { type: "git", url: "git@gist.github.com:123456.git" }
|
||||
})
|
||||
t.same(a.homepage, 'https://gist.github.com/123456')
|
||||
t.end()
|
||||
})
|
||||
|
||||
tap.test("homepage field will set to github gist url if repository is a shorthand reference", function(t) {
|
||||
var a
|
||||
normalize(a={
|
||||
repository: { type: "git", url: "sindresorhus/chalk" }
|
||||
})
|
||||
t.same(a.homepage, 'https://github.com/sindresorhus/chalk#readme')
|
||||
t.end()
|
||||
})
|
||||
|
||||
tap.test("don't mangle github shortcuts in dependencies", function(t) {
|
||||
var d = {dependencies: {"node-graceful-fs": "isaacs/node-graceful-fs"}}
|
||||
normalize(d)
|
||||
t.same(d.dependencies, {"node-graceful-fs": "github:isaacs/node-graceful-fs" })
|
||||
t.end()
|
||||
});
|
||||
|
||||
tap.test("deprecation warning for array in dependencies fields", function(t) {
|
||||
var a
|
||||
var warnings = []
|
||||
function warn(w) {
|
||||
warnings.push(w)
|
||||
}
|
||||
normalize(a={
|
||||
dependencies: [],
|
||||
devDependencies: [],
|
||||
optionalDependencies: []
|
||||
}, warn)
|
||||
t.ok(~warnings.indexOf(safeFormat(warningMessages.deprecatedArrayDependencies, 'dependencies')), "deprecation warning")
|
||||
t.ok(~warnings.indexOf(safeFormat(warningMessages.deprecatedArrayDependencies, 'devDependencies')), "deprecation warning")
|
||||
t.ok(~warnings.indexOf(safeFormat(warningMessages.deprecatedArrayDependencies, 'optionalDependencies')), "deprecation warning")
|
||||
t.end()
|
||||
})
|
||||
Reference in New Issue
Block a user