mirror of
https://github.com/pulsar-edit/pulsar.git
synced 2024-10-26 11:08:40 +03:00
84 lines
2.8 KiB
JavaScript
84 lines
2.8 KiB
JavaScript
|
// Users may have this environment variable set. Currently, it causes babel to
|
||
|
// log to stderr, which causes errors on Windows.
|
||
|
// See https://github.com/atom/electron/issues/2033
|
||
|
process.env.DEBUG = '*';
|
||
|
|
||
|
const path = require('path');
|
||
|
const temp = require('temp').track();
|
||
|
const CompileCache = require('../src/compile-cache');
|
||
|
|
||
|
describe('Babel transpiler support', function() {
|
||
|
let originalCacheDir = null;
|
||
|
|
||
|
beforeEach(function() {
|
||
|
originalCacheDir = CompileCache.getCacheDirectory();
|
||
|
CompileCache.setCacheDirectory(temp.mkdirSync('compile-cache'));
|
||
|
// TODO: rework to avoid using IIFE https://developer.mozilla.org/en-US/docs/Glossary/IIFE
|
||
|
return (() => {
|
||
|
const result = [];
|
||
|
for (let cacheKey of Object.keys(require.cache)) {
|
||
|
if (cacheKey.startsWith(path.join(__dirname, 'fixtures', 'babel'))) {
|
||
|
result.push(delete require.cache[cacheKey]);
|
||
|
} else {
|
||
|
result.push(undefined);
|
||
|
}
|
||
|
}
|
||
|
return result;
|
||
|
})();
|
||
|
});
|
||
|
|
||
|
afterEach(function() {
|
||
|
CompileCache.setCacheDirectory(originalCacheDir);
|
||
|
try {
|
||
|
return temp.cleanupSync();
|
||
|
} catch (error) {}
|
||
|
});
|
||
|
|
||
|
describe('when a .js file starts with /** @babel */;', () =>
|
||
|
it('transpiles it using babel', function() {
|
||
|
const transpiled = require('./fixtures/babel/babel-comment.js');
|
||
|
expect(transpiled(3)).toBe(4);
|
||
|
}));
|
||
|
|
||
|
describe("when a .js file starts with 'use babel';", () =>
|
||
|
it('transpiles it using babel', function() {
|
||
|
const transpiled = require('./fixtures/babel/babel-single-quotes.js');
|
||
|
expect(transpiled(3)).toBe(4);
|
||
|
}));
|
||
|
|
||
|
describe('when a .js file starts with "use babel";', () =>
|
||
|
it('transpiles it using babel', function() {
|
||
|
const transpiled = require('./fixtures/babel/babel-double-quotes.js');
|
||
|
expect(transpiled(3)).toBe(4);
|
||
|
}));
|
||
|
|
||
|
describe('when a .js file starts with /* @flow */', () =>
|
||
|
it('transpiles it using babel', function() {
|
||
|
const transpiled = require('./fixtures/babel/flow-comment.js');
|
||
|
expect(transpiled(3)).toBe(4);
|
||
|
}));
|
||
|
|
||
|
describe('when a .js file starts with // @flow', () =>
|
||
|
it('transpiles it using babel', function() {
|
||
|
const transpiled = require('./fixtures/babel/flow-slash-comment.js');
|
||
|
expect(transpiled(3)).toBe(4);
|
||
|
}));
|
||
|
|
||
|
describe("when a .js file does not start with 'use babel';", function() {
|
||
|
it('does not transpile it using babel', function() {
|
||
|
spyOn(console, 'error');
|
||
|
expect(() => require('./fixtures/babel/invalid.js')).toThrow();
|
||
|
});
|
||
|
|
||
|
it('does not try to log to stdout or stderr while parsing the file', function() {
|
||
|
spyOn(process.stderr, 'write');
|
||
|
spyOn(process.stdout, 'write');
|
||
|
|
||
|
require('./fixtures/babel/babel-double-quotes.js');
|
||
|
|
||
|
expect(process.stdout.write).not.toHaveBeenCalled();
|
||
|
expect(process.stderr.write).not.toHaveBeenCalled();
|
||
|
});
|
||
|
});
|
||
|
});
|