UNPKG

12 kBJavaScriptView Raw
1/*global describe, it*/
2"use strict";
3
4delete require.cache[require.resolve('../')];
5
6var fs = require("fs");
7var es = require("event-stream");
8var assert = require("assert");
9var gutil = require("gulp-util");
10var convert = require('convert-source-map');
11var espower = require("../");
12
13describe("gulp-espower", function () {
14
15 describe("should produce expected file via buffer", function () {
16 var stream, srcFile, expectedFile;
17 beforeEach(function () {
18 stream = espower();
19 srcFile = new gutil.File({
20 path: process.cwd() + "/test/fixtures/example.js",
21 cwd: process.cwd(),
22 base: process.cwd() + "/test/fixtures",
23 contents: fs.readFileSync("test/fixtures/example.js")
24 });
25 expectedFile = new gutil.File({
26 path: process.cwd() + "/test/expected/example.js",
27 cwd: process.cwd(),
28 base: process.cwd() + "/test/expected",
29 contents: fs.readFileSync("test/expected/example.js")
30 });
31 });
32 describe('without upstream sourceMap', function () {
33 it("produce code without sourceMap", function (done) {
34 stream.on("error", function(err) {
35 assert(err);
36 done(err);
37 });
38 stream.on("data", function (newFile) {
39 assert(newFile);
40 assert(newFile.contents);
41 assert(expectedFile.contents);
42 assert.equal(newFile.contents.toString() + '\n', expectedFile.contents.toString());
43 assert(! newFile.sourceMap);
44 done();
45 });
46 stream.write(srcFile);
47 stream.end();
48 });
49 });
50 describe('with upstream sourceMap', function () {
51 beforeEach(function () {
52 srcFile.sourceMap = {
53 version : 3,
54 file: srcFile.relative,
55 names: [],
56 mappings: '',
57 sources: [srcFile.relative],
58 sourcesContent: [srcFile.contents.toString()]
59 };
60 });
61 it("push file.sourceMap to downstream", function (done) {
62 stream.on("error", function(err) {
63 assert(err);
64 done(err);
65 });
66 stream.on("data", function (newFile) {
67 assert(newFile);
68 assert(newFile.contents);
69 assert.equal(newFile.contents.toString() + '\n', expectedFile.contents.toString());
70 assert(newFile.sourceMap);
71 assert.deepEqual(newFile.sourceMap, {
72 version: 3,
73 sources: [
74 'example.js'
75 ],
76 names: [
77 'assert',
78 'require',
79 'truthy',
80 'falsy',
81 '_expr',
82 '_capt',
83 'content',
84 'filepath',
85 'line',
86 'equal'
87 ],
88 mappings: 'AAAA,IAAIA,MAAA,GAASC,OAAA,CAAQ,cAAR,CAAb,EACIC,MAAA,GAAS,MADb,EAEIC,KAAA,GAAQ,OAFZ;AAGAH,MAAA,CAAOA,MAAA,CAAAI,KAAA,CAAAJ,MAAA,CAAAK,KAAA,CAAAF,KAAA;AAAA,IAAAG,OAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,IAAA;AAAA,EAAP,EAHA;AAIAR,MAAA,CAAOS,KAAP,CAAaT,MAAA,CAAAI,KAAA,CAAAJ,MAAA,CAAAK,KAAA,CAAAH,MAAA;AAAA,IAAAI,OAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,IAAA;AAAA,EAAb,EAAqBR,MAAA,CAAAI,KAAA,CAAAJ,MAAA,CAAAK,KAAA,CAAAF,KAAA;AAAA,IAAAG,OAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,IAAA;AAAA,EAArB',
89 file: 'example.js',
90 sourcesContent: [ 'var assert = require(\'power-assert\'),\n truthy = \'true\',\n falsy = \'false\';\nassert(falsy);\nassert.equal(truthy, falsy);\n' ]
91 });
92 done();
93 });
94 stream.write(srcFile);
95 stream.end();
96 });
97 });
98 });
99
100
101
102 describe("custom options", function (done) {
103 var stream, srcFile, expectedFile;
104 beforeEach(function () {
105 stream = espower({
106 patterns: [
107 'refute(actual, [message])',
108 'refute.same(actual, expected, [message])',
109 'refute.isNull(object, [message])'
110 ]
111 });
112 srcFile = new gutil.File({
113 path: process.cwd() + "/test/fixtures/customized.js",
114 cwd: process.cwd(),
115 base: process.cwd() + "/test/fixtures",
116 contents: fs.readFileSync("test/fixtures/customized.js")
117 });
118 expectedFile = new gutil.File({
119 path: process.cwd() + "/test/expected/example.js",
120 cwd: process.cwd(),
121 base: process.cwd() + "/test/expected",
122 contents: fs.readFileSync("test/expected/customized.js")
123 });
124 });
125 describe('without upstream sourceMap', function () {
126 it("produce code without sourceMap", function (done) {
127 stream.on("error", function(err) {
128 assert(err);
129 done(err);
130 });
131 stream.on("data", function (newFile) {
132 assert(newFile);
133 assert(newFile.contents);
134 assert.equal(newFile.contents.toString() + '\n', expectedFile.contents.toString());
135 assert(! newFile.sourceMap);
136 done();
137 });
138 stream.write(srcFile);
139 stream.end();
140 });
141 });
142 describe('with upstream sourceMap', function () {
143 beforeEach(function () {
144 srcFile.sourceMap = {
145 version : 3,
146 file: srcFile.relative,
147 names: [],
148 mappings: '',
149 sources: [srcFile.relative],
150 sourcesContent: [srcFile.contents.toString()]
151 };
152 });
153 it("push file.sourceMap to downstream", function (done) {
154 stream.on("error", function(err) {
155 assert(err);
156 done(err);
157 });
158 stream.on("data", function (newFile) {
159 assert(newFile);
160 assert(newFile.contents);
161 assert.equal(newFile.contents.toString() + '\n', expectedFile.contents.toString());
162 assert(newFile.sourceMap);
163 assert.deepEqual(newFile.sourceMap, {
164 version: 3,
165 sources: [
166 'customized.js'
167 ],
168 names: [
169 'empower',
170 'require',
171 'formatter',
172 'busterAssertions',
173 'refute',
174 'targetMethods',
175 'oneArg',
176 'twoArgs',
177 'truthy',
178 'falsy',
179 '_expr',
180 '_capt',
181 'content',
182 'filepath',
183 'line',
184 'isNull',
185 'same'
186 ],
187 mappings: 'AAAA,IAAIA,OAAA,GAAUC,OAAA,CAAQ,SAAR,CAAd,EACIC,SAAA,GAAYD,OAAA,CAAQ,wBAAR,CADhB,EAEIE,gBAAA,GAAmBF,OAAA,CAAQ,mBAAR,CAFvB,EAGIG,MAAA,GAASJ,OAAA,CAAQG,gBAAA,CAAiBC,MAAzB,EAAiCF,SAAA,EAAjC,EAA8C;AAAA,QAAEG,aAAA,EAAe;AAAA,YAAEC,MAAA,EAAQ,CAAC,QAAD,CAAV;AAAA,YAAsBC,OAAA,EAAS,CAAC,MAAD,CAA/B;AAAA,SAAjB;AAAA,KAA9C,CAHb,EAIIC,MAAA,GAAS,MAJb,EAKIC,KAAA,GAAQ,OALZ;AAMAL,MAAA,CAAOA,MAAA,CAAAM,KAAA,CAAAN,MAAA,CAAAO,KAAA,CAAAH,MAAA;AAAA,IAAAI,OAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,IAAA;AAAA,EAAP,EANA;AAOAV,MAAA,CAAOW,MAAP,CAAcX,MAAA,CAAAM,KAAA,CAAAN,MAAA,CAAAO,KAAA,CAAAF,KAAA;AAAA,IAAAG,OAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,IAAA;AAAA,EAAd,EAPA;AAQAV,MAAA,CAAOY,IAAP,CAAYZ,MAAA,CAAAM,KAAA,CAAAN,MAAA,CAAAO,KAAA,CAAAH,MAAA;AAAA,IAAAI,OAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,IAAA;AAAA,EAAZ,EAAoBV,MAAA,CAAAM,KAAA,CAAAN,MAAA,CAAAO,KAAA,CAAAF,KAAA;AAAA,IAAAG,OAAA;AAAA,IAAAC,QAAA;AAAA,IAAAC,IAAA;AAAA,EAApB',
188 file: 'customized.js',
189 sourcesContent: [ 'var empower = require(\'empower\'),\n formatter = require(\'power-assert-formatter\'),\n busterAssertions = require("buster-assertions"),\n refute = empower(busterAssertions.refute, formatter(), { targetMethods: { oneArg: [\'isNull\'], twoArgs: [\'same\'] } }),\n truthy = \'true\',\n falsy = \'false\';\nrefute(truthy);\nrefute.isNull(falsy);\nrefute.same(truthy, falsy);\n' ]
190 });
191 done();
192 });
193 stream.write(srcFile);
194 stream.end();
195 });
196 });
197 });
198
199
200 it('should produce expected file via stream', function (done) {
201 var stream = espower();
202 var srcStream = new gutil.File({
203 path: process.cwd() + '/test/fixtures/example.js',
204 cwd: process.cwd(),
205 base: process.cwd() + '/test/fixtures',
206 contents: fs.createReadStream('test/fixtures/example.js')
207 });
208 var expectedFile = new gutil.File({
209 path: process.cwd() + '/test/expected/example.js',
210 cwd: process.cwd(),
211 base: process.cwd() + '/test/expected',
212 contents: fs.readFileSync('test/expected/example-with-sourcemap.js')
213 });
214 stream.on('error', function(err) {
215 assert(err);
216 done();
217 });
218 stream.on('data', function (newFile) {
219 assert(newFile);
220 assert(newFile.contents);
221 newFile.contents.pipe(es.wait(function(err, data) {
222 assert(!err);
223 assert.equal(data.toString('utf-8'), String(expectedFile.contents));
224 done();
225 }));
226 });
227 stream.write(srcStream);
228 stream.end();
229 });
230
231
232 describe('should emit error when the file has a syntax error', function () {
233 it('when file is Buffer', function (done) {
234 var stream = espower();
235 var srcFile = new gutil.File({
236 path: process.cwd() + "/test/fixtures/syntax-error.js",
237 cwd: process.cwd(),
238 base: process.cwd() + "/test/fixtures",
239 contents: fs.readFileSync("test/fixtures/syntax-error.js")
240 });
241 assert.doesNotThrow(function() {
242 stream.on("error", function(err) {
243 assert(err);
244 done();
245 });
246 stream.write(srcFile);
247 stream.end();
248 });
249 });
250 it('when file is Stream', function (done) {
251 var stream = espower();
252 var srcStream = new gutil.File({
253 path: process.cwd() + "/test/fixtures/syntax-error.js",
254 cwd: process.cwd(),
255 base: process.cwd() + "/test/fixtures",
256 contents: fs.createReadStream("test/fixtures/syntax-error.js")
257 });
258 assert.doesNotThrow(function() {
259 stream.on("error", function(err) {
260 assert(err);
261 done();
262 });
263 stream.write(srcStream);
264 stream.end();
265 });
266 });
267 });
268});