1 | var test = require('tape')
|
2 | var fmt = require('../').transform
|
3 |
|
4 | var 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 |
|
36 | test('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 |
|
43 | var 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 |
|
131 | test('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 |
|
138 | var cr = new RegExp(/\n/g)
|
139 | var crlf = '\r\n'
|
140 |
|
141 | test('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 | })
|