UNPKG

3.91 kBJavaScriptView Raw
1var test = require('tape')
2var fmt = require('../').transform
3
4var noops = [
5 { str: 'if (!opts) opts = {};\n',
6 msg: 'Noop on single line conditional assignment' },
7
8 { str: 'var g = { name: f, data: fs.readFileSync(f).toString() };\n',
9 msg: 'Noop on single line object assignment'
10 },
11 {
12 str: '{foo: \'bar\'}\n',
13 msg: 'Dont add padding to object braces'
14 },
15 { str: "var x = ['test.js', '**test/failing/**'];\n",
16 msg: 'Noop on singleline arrays'
17 },
18 { str: 'function x () {}\n',
19 msg: 'Noop on named functions correctly spaced'
20 },
21 { str: 'window.wrapFunctionsUntil(1);\n',
22 msg: 'Noop non-functions with function in the name'
23 },
24 { str: 'import * as lib from \'lib\';\n',
25 msg: 'Noop ES2015 import'
26 },
27 { str: 'function* blarg (foo) {yield foo;}\n',
28 msg: 'Noop ES2015 generator'
29 },
30 {
31 str: 'console.log(1 === 2 ? 3 : 4);\n',
32 msg: 'Noop infix'
33 }
34]
35
36test('singleline noop expressions', function (t) {
37 t.plan(noops.length)
38 noops.forEach(function (obj) {
39 t.equal(fmt(obj.str), obj.str, obj.msg)
40 })
41})
42
43var transforms = [
44 {
45 str: 'var x = function() {};\n',
46 expect: 'var x = function () {};\n',
47 msg: 'Anonymous function spacing between keyword and arguments'
48 },
49 {
50 str: 'var x = function (y){};\n',
51 expect: 'var x = function (y) {};\n',
52 msg: 'Anonymous function spacing between arguments and opening brace'
53 },
54 {
55 str: 'function xx() {}\n',
56 expect: 'function xx () {}\n',
57 msg: 'Named function spacing between keyword and arguments'
58 },
59 {
60 str: 'function xx (y){}\n',
61 expect: 'function xx (y) {}\n',
62 msg: 'Named function spacing between arguments and opening brace'
63 },
64 {
65 str: 'var hi = 1;\n',
66 expect: 'var hi = 1;\n',
67 msg: 'Squash spaces around variable value'
68 },
69 {
70 str: 'var hi = 1;\n',
71 expect: 'var hi = 1;\n',
72 msg: 'Space after variable name'
73 },
74 {
75 str: 'var hi;\n hi = 1;\n',
76 expect: 'var hi;\nhi = 1;\n',
77 msg: 'Squash spaces around assignment operator'
78 },
79 {
80 str: 'function foo (x,y,z) {}\n',
81 expect: 'function foo (x, y, z) {}\n',
82 msg: 'Space after commas in function parameters'
83 },
84 {
85 str: 'var array = [1,2,3];\n',
86 expect: 'var array = [1, 2, 3];\n',
87 msg: 'Space after commas in array'
88 },
89 {
90 str: 'var x = 1\n',
91 expect: 'var x = 1;\n',
92 msg: 'Use semicolons'
93 },
94 {
95 str: 'var x = {key:123};\n',
96 expect: 'var x = {key: 123};\n',
97 msg: 'Space after colon (key-spacing)'
98 },
99 {
100 str: 'var x = {key : 123};\n',
101 expect: 'var x = {key: 123};\n',
102 msg: 'No Space before colon (key-spacing)'
103 },
104 {
105 str: 'if(true){}\n',
106 expect: 'if (true) {}\n',
107 msg: 'Space after if'
108 },
109 {
110 str: 'var x = 123 // Useful comment\n',
111 expect: 'var x = 123; // Useful comment\n',
112 msg: 'Add trailing semicolons that are followed by a comment'
113 },
114 {
115 str: 'var x = 123 /* Useful comment */\n',
116 expect: 'var x = 123; /* Useful comment */\n',
117 msg: 'Add trailing semicolons that are followed by a multiline comment'
118 },
119 {
120 str: 'console.log(1===2?3:4);\n',
121 expect: 'console.log(1 === 2 ? 3 : 4);\n',
122 msg: 'infix'
123 },
124 {
125 str: 'const { message, rollup, line, col, type } = origMessage;\n',
126 expect: 'const { message, rollup, line, col, type } = origMessage;\n',
127 msg: 'No space before comma in keys in destructuring assignment'
128 }
129]
130
131test('singleline transforms', function (t) {
132 t.plan(transforms.length)
133 transforms.forEach(function (obj) {
134 t.equal(fmt(obj.str), obj.expect, obj.msg)
135 })
136})
137
138var cr = new RegExp(/\n/g)
139var crlf = '\r\n'
140
141test('singleline transforms CRLF', function (t) {
142 t.plan(transforms.length)
143 transforms.forEach(function (obj) {
144 obj.str = obj.str.replace(cr, crlf)
145 obj.expect = obj.expect.replace(cr, crlf)
146 t.equal(fmt(obj.str), obj.expect, obj.msg)
147 })
148})