1 var validate = require("..")
2 var test = require("tap").test
3 var path = require("path")
6 test("validate-npm-package-name", function (t) {
10 t.deepEqual(validate("some-package"), {validForNewPackages: true, validForOldPackages: true})
11 t.deepEqual(validate("example.com"), {validForNewPackages: true, validForOldPackages: true})
12 t.deepEqual(validate("under_score"), {validForNewPackages: true, validForOldPackages: true})
13 t.deepEqual(validate("period.js"), {validForNewPackages: true, validForOldPackages: true})
14 t.deepEqual(validate("123numeric"), {validForNewPackages: true, validForOldPackages: true})
15 t.deepEqual(validate("crazy!"), {validForNewPackages: true, validForOldPackages: true})
19 t.deepEqual(validate("@npm/thingy"), {validForNewPackages: true, validForOldPackages: true})
20 t.deepEqual(validate("@npm-zors/money!time.js"), {validForNewPackages: true, validForOldPackages: true})
24 t.deepEqual(validate(""), {
25 validForNewPackages: false,
26 validForOldPackages: false,
27 errors: ["name length must be greater than zero"]})
29 t.deepEqual(validate(""), {
30 validForNewPackages: false,
31 validForOldPackages: false,
32 errors: ["name length must be greater than zero"]})
34 t.deepEqual(validate(".start-with-period"), {
35 validForNewPackages: false,
36 validForOldPackages: false,
37 errors: ["name cannot start with a period"]})
39 t.deepEqual(validate("_start-with-underscore"), {
40 validForNewPackages: false,
41 validForOldPackages: false,
42 errors: ["name cannot start with an underscore"]})
44 t.deepEqual(validate("contain:colons"), {
45 validForNewPackages: false,
46 validForOldPackages: false,
47 errors: ["name can only contain URL-friendly characters"]})
49 t.deepEqual(validate(" leading-space"), {
50 validForNewPackages: false,
51 validForOldPackages: false,
52 errors: ["name cannot contain leading or trailing spaces", "name can only contain URL-friendly characters"]})
54 t.deepEqual(validate("trailing-space "), {
55 validForNewPackages: false,
56 validForOldPackages: false,
57 errors: ["name cannot contain leading or trailing spaces", "name can only contain URL-friendly characters"]})
59 t.deepEqual(validate("s/l/a/s/h/e/s"), {
60 validForNewPackages: false,
61 validForOldPackages: false,
62 errors: ["name can only contain URL-friendly characters"]})
64 t.deepEqual(validate("node_modules"), {
65 validForNewPackages: false,
66 validForOldPackages: false,
67 errors: ["node_modules is a blacklisted name"]})
69 t.deepEqual(validate("favicon.ico"), {
70 validForNewPackages: false,
71 validForOldPackages: false,
72 errors: ["favicon.ico is a blacklisted name"]})
76 t.deepEqual(validate("http"), {
77 validForNewPackages: false,
78 validForOldPackages: true,
79 warnings: ["http is a core module name"]})
83 t.deepEqual(validate("ifyouwanttogetthesumoftwonumberswherethosetwonumbersarechosenbyfindingthelargestoftwooutofthreenumbersandsquaringthemwhichismultiplyingthembyitselfthenyoushouldinputthreenumbersintothisfunctionanditwilldothatforyou-"), {
84 validForNewPackages: false,
85 validForOldPackages: true,
86 warnings: ["name can no longer contain more than 214 characters"]
89 t.deepEqual(validate("ifyouwanttogetthesumoftwonumberswherethosetwonumbersarechosenbyfindingthelargestoftwooutofthreenumbersandsquaringthemwhichismultiplyingthembyitselfthenyoushouldinputthreenumbersintothisfunctionanditwilldothatforyou"), {
90 validForNewPackages: true,
91 validForOldPackages: true
96 t.deepEqual(validate("CAPITAL-LETTERS"), {
97 validForNewPackages: false,
98 validForOldPackages: true,
99 warnings: ["name can no longer contain capital letters"]})