|
1 | | -var validate = require("..") |
2 | | -var test = require("tap").test |
3 | | -var path = require("path") |
4 | | -var fs = require("fs") |
| 1 | +'use strict' |
5 | 2 |
|
6 | | -test("validate-npm-package-name", function (t) { |
| 3 | +var validate = require('..') |
| 4 | +var test = require('tap').test |
7 | 5 |
|
| 6 | +test('validate-npm-package-name', function (t) { |
8 | 7 | // Traditional |
9 | 8 |
|
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}) |
| 9 | + t.deepEqual(validate('some-package'), {validForNewPackages: true, validForOldPackages: true}) |
| 10 | + t.deepEqual(validate('example.com'), {validForNewPackages: true, validForOldPackages: true}) |
| 11 | + t.deepEqual(validate('under_score'), {validForNewPackages: true, validForOldPackages: true}) |
| 12 | + t.deepEqual(validate('period.js'), {validForNewPackages: true, validForOldPackages: true}) |
| 13 | + t.deepEqual(validate('123numeric'), {validForNewPackages: true, validForOldPackages: true}) |
| 14 | + t.deepEqual(validate('crazy!'), { |
| 15 | + validForNewPackages: false, |
| 16 | + validForOldPackages: true, |
| 17 | + warnings: ['name can no longer contain special characters ("~\'!()*")'] |
| 18 | + }) |
16 | 19 |
|
17 | 20 | // Scoped (npm 2+) |
18 | 21 |
|
19 | | - t.deepEqual(validate("@npm/thingy"), {validForNewPackages: true, validForOldPackages: true}) |
20 | | - t.deepEqual(validate("@npm-zors/money!time.js"), {validForNewPackages: true, validForOldPackages: true}) |
| 22 | + t.deepEqual(validate('@npm/thingy'), {validForNewPackages: true, validForOldPackages: true}) |
| 23 | + t.deepEqual(validate('@npm-zors/money!time.js'), { |
| 24 | + validForNewPackages: false, |
| 25 | + validForOldPackages: true, |
| 26 | + warnings: ['name can no longer contain special characters ("~\'!()*")'] |
| 27 | + }) |
21 | 28 |
|
22 | 29 | // Invalid |
23 | 30 |
|
24 | | - t.deepEqual(validate(""), { |
| 31 | + t.deepEqual(validate(''), { |
25 | 32 | validForNewPackages: false, |
26 | 33 | validForOldPackages: false, |
27 | | - errors: ["name length must be greater than zero"]}) |
| 34 | + errors: ['name length must be greater than zero']}) |
28 | 35 |
|
29 | | - t.deepEqual(validate(""), { |
| 36 | + t.deepEqual(validate(''), { |
30 | 37 | validForNewPackages: false, |
31 | 38 | validForOldPackages: false, |
32 | | - errors: ["name length must be greater than zero"]}) |
| 39 | + errors: ['name length must be greater than zero']}) |
33 | 40 |
|
34 | | - t.deepEqual(validate(".start-with-period"), { |
| 41 | + t.deepEqual(validate('.start-with-period'), { |
35 | 42 | validForNewPackages: false, |
36 | 43 | validForOldPackages: false, |
37 | | - errors: ["name cannot start with a period"]}) |
| 44 | + errors: ['name cannot start with a period']}) |
38 | 45 |
|
39 | | - t.deepEqual(validate("_start-with-underscore"), { |
| 46 | + t.deepEqual(validate('_start-with-underscore'), { |
40 | 47 | validForNewPackages: false, |
41 | 48 | validForOldPackages: false, |
42 | | - errors: ["name cannot start with an underscore"]}) |
| 49 | + errors: ['name cannot start with an underscore']}) |
43 | 50 |
|
44 | | - t.deepEqual(validate("contain:colons"), { |
| 51 | + t.deepEqual(validate('contain:colons'), { |
45 | 52 | validForNewPackages: false, |
46 | 53 | validForOldPackages: false, |
47 | | - errors: ["name can only contain URL-friendly characters"]}) |
| 54 | + errors: ['name can only contain URL-friendly characters']}) |
48 | 55 |
|
49 | | - t.deepEqual(validate(" leading-space"), { |
| 56 | + t.deepEqual(validate(' leading-space'), { |
50 | 57 | validForNewPackages: false, |
51 | 58 | validForOldPackages: false, |
52 | | - errors: ["name cannot contain leading or trailing spaces", "name can only contain URL-friendly characters"]}) |
| 59 | + errors: ['name cannot contain leading or trailing spaces', 'name can only contain URL-friendly characters']}) |
53 | 60 |
|
54 | | - t.deepEqual(validate("trailing-space "), { |
| 61 | + t.deepEqual(validate('trailing-space '), { |
55 | 62 | validForNewPackages: false, |
56 | 63 | validForOldPackages: false, |
57 | | - errors: ["name cannot contain leading or trailing spaces", "name can only contain URL-friendly characters"]}) |
| 64 | + errors: ['name cannot contain leading or trailing spaces', 'name can only contain URL-friendly characters']}) |
58 | 65 |
|
59 | | - t.deepEqual(validate("s/l/a/s/h/e/s"), { |
| 66 | + t.deepEqual(validate('s/l/a/s/h/e/s'), { |
60 | 67 | validForNewPackages: false, |
61 | 68 | validForOldPackages: false, |
62 | | - errors: ["name can only contain URL-friendly characters"]}) |
| 69 | + errors: ['name can only contain URL-friendly characters']}) |
63 | 70 |
|
64 | | - t.deepEqual(validate("node_modules"), { |
| 71 | + t.deepEqual(validate('node_modules'), { |
65 | 72 | validForNewPackages: false, |
66 | 73 | validForOldPackages: false, |
67 | | - errors: ["node_modules is a blacklisted name"]}) |
| 74 | + errors: ['node_modules is a blacklisted name']}) |
68 | 75 |
|
69 | | - t.deepEqual(validate("favicon.ico"), { |
| 76 | + t.deepEqual(validate('favicon.ico'), { |
70 | 77 | validForNewPackages: false, |
71 | 78 | validForOldPackages: false, |
72 | | - errors: ["favicon.ico is a blacklisted name"]}) |
| 79 | + errors: ['favicon.ico is a blacklisted name']}) |
73 | 80 |
|
74 | 81 | // Node/IO Core |
75 | 82 |
|
76 | | - t.deepEqual(validate("http"), { |
| 83 | + t.deepEqual(validate('http'), { |
77 | 84 | validForNewPackages: false, |
78 | 85 | validForOldPackages: true, |
79 | | - warnings: ["http is a core module name"]}) |
| 86 | + warnings: ['http is a core module name']}) |
80 | 87 |
|
81 | 88 | // Long Package Names |
82 | 89 |
|
83 | | - t.deepEqual(validate("ifyouwanttogetthesumoftwonumberswherethosetwonumbersarechosenbyfindingthelargestoftwooutofthreenumbersandsquaringthemwhichismultiplyingthembyitselfthenyoushouldinputthreenumbersintothisfunctionanditwilldothatforyou-"), { |
| 90 | + t.deepEqual(validate('ifyouwanttogetthesumoftwonumberswherethosetwonumbersarechosenbyfindingthelargestoftwooutofthreenumbersandsquaringthemwhichismultiplyingthembyitselfthenyoushouldinputthreenumbersintothisfunctionanditwilldothatforyou-'), { |
84 | 91 | validForNewPackages: false, |
85 | 92 | validForOldPackages: true, |
86 | | - warnings: ["name can no longer contain more than 214 characters"] |
| 93 | + warnings: ['name can no longer contain more than 214 characters'] |
87 | 94 | }) |
88 | 95 |
|
89 | | - t.deepEqual(validate("ifyouwanttogetthesumoftwonumberswherethosetwonumbersarechosenbyfindingthelargestoftwooutofthreenumbersandsquaringthemwhichismultiplyingthembyitselfthenyoushouldinputthreenumbersintothisfunctionanditwilldothatforyou"), { |
| 96 | + t.deepEqual(validate('ifyouwanttogetthesumoftwonumberswherethosetwonumbersarechosenbyfindingthelargestoftwooutofthreenumbersandsquaringthemwhichismultiplyingthembyitselfthenyoushouldinputthreenumbersintothisfunctionanditwilldothatforyou'), { |
90 | 97 | validForNewPackages: true, |
91 | 98 | validForOldPackages: true |
92 | 99 | }) |
93 | 100 |
|
94 | 101 | // Legacy Mixed-Case |
95 | 102 |
|
96 | | - t.deepEqual(validate("CAPITAL-LETTERS"), { |
| 103 | + t.deepEqual(validate('CAPITAL-LETTERS'), { |
97 | 104 | validForNewPackages: false, |
98 | 105 | validForOldPackages: true, |
99 | | - warnings: ["name can no longer contain capital letters"]}) |
| 106 | + warnings: ['name can no longer contain capital letters']}) |
100 | 107 |
|
101 | 108 | t.end() |
102 | 109 | }) |
0 commit comments