1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- // 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();
- });
- });
- });
|