From f9f7cf6d340c3ed306e25ff94374376d1af3da43 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 2 Feb 2015 13:29:20 -0800 Subject: [PATCH] Add more 6to5 specs --- spec/6to5-spec.coffee | 61 ++++++++++++++++++----------- spec/fixtures/6to5/double-quotes.js | 3 ++ spec/fixtures/6to5/invalid.js | 3 ++ spec/fixtures/6to5/single-quotes.js | 3 ++ src/6to5.coffee | 5 +-- 5 files changed, 48 insertions(+), 27 deletions(-) create mode 100644 spec/fixtures/6to5/double-quotes.js create mode 100644 spec/fixtures/6to5/invalid.js create mode 100644 spec/fixtures/6to5/single-quotes.js diff --git a/spec/6to5-spec.coffee b/spec/6to5-spec.coffee index b84666d22..2cb8d1ba6 100644 --- a/spec/6to5-spec.coffee +++ b/spec/6to5-spec.coffee @@ -1,26 +1,41 @@ -{create6to5VersionAndOptionsDigest} = require '../src/6to5' +to5 = require '../src/6to5' crypto = require 'crypto' -describe "::create6to5VersionAndOptionsDigest", -> - it "returns a digest for the library version and specified options", -> - defaultOptions = - blacklist: [ - 'useStrict' - ] - experimental: true - optional: [ - 'asyncToGenerator' - ] - reactCompat: true - sourceMap: 'inline' - version = '3.0.14' - shasum = crypto.createHash('sha1') - shasum.update('6to5-core', 'utf8') - shasum.update('\0', 'utf8') - shasum.update(version, 'utf8') - shasum.update('\0', 'utf8') - shasum.update('{"blacklist": ["useStrict",],"experimental": true,"optional": ["asyncToGenerator",],"reactCompat": true,"sourceMap": "inline",}') - expectedDigest = shasum.digest('hex') +describe "6to5 transpiler support", -> + describe "::create6to5VersionAndOptionsDigest", -> + it "returns a digest for the library version and specified options", -> + defaultOptions = + blacklist: [ + 'useStrict' + ] + experimental: true + optional: [ + 'asyncToGenerator' + ] + reactCompat: true + sourceMap: 'inline' + version = '3.0.14' + shasum = crypto.createHash('sha1') + shasum.update('6to5-core', 'utf8') + shasum.update('\0', 'utf8') + shasum.update(version, 'utf8') + shasum.update('\0', 'utf8') + shasum.update('{"blacklist": ["useStrict",],"experimental": true,"optional": ["asyncToGenerator",],"reactCompat": true,"sourceMap": "inline",}') + expectedDigest = shasum.digest('hex') - observedDigest = create6to5VersionAndOptionsDigest(version, defaultOptions) - expect(observedDigest).toEqual expectedDigest + observedDigest = to5.create6to5VersionAndOptionsDigest(version, defaultOptions) + expect(observedDigest).toEqual expectedDigest + + describe "when a .js file starts with 'use 6to5';", -> + it "transpiles it using 6to5", -> + transpiled = require('./fixtures/6to5/single-quotes.js') + expect(transpiled(3)).toBe 4 + + describe 'when a .js file starts with "use 6to5";', -> + it "transpiles it using 6to5", -> + transpiled = require('./fixtures/6to5/double-quotes.js') + expect(transpiled(3)).toBe 4 + + describe "when a .js file does not start with 'use 6to6';", -> + it "does not transpile it using 6to5", -> + expect(-> require('./fixtures/6to5/invalid.js')).toThrow() diff --git a/spec/fixtures/6to5/double-quotes.js b/spec/fixtures/6to5/double-quotes.js new file mode 100644 index 000000000..254912bc0 --- /dev/null +++ b/spec/fixtures/6to5/double-quotes.js @@ -0,0 +1,3 @@ +"use 6to5"; + +module.exports = v => v + 1 diff --git a/spec/fixtures/6to5/invalid.js b/spec/fixtures/6to5/invalid.js new file mode 100644 index 000000000..4af6a59e2 --- /dev/null +++ b/spec/fixtures/6to5/invalid.js @@ -0,0 +1,3 @@ +'use 6to6'; + +module.exports = v => v + 1 diff --git a/spec/fixtures/6to5/single-quotes.js b/spec/fixtures/6to5/single-quotes.js new file mode 100644 index 000000000..16e382ec2 --- /dev/null +++ b/spec/fixtures/6to5/single-quotes.js @@ -0,0 +1,3 @@ +'use 6to5'; + +module.exports = v => v + 1 diff --git a/src/6to5.coffee b/src/6to5.coffee index e23d048d4..41bae5611 100644 --- a/src/6to5.coffee +++ b/src/6to5.coffee @@ -90,10 +90,7 @@ create6to5VersionAndOptionsDigest = (version, options) -> shasum.digest('hex') cacheDir = path.join(fs.absolute('~/.atom'), 'compile-cache') -jsCacheDir = path.join( - cacheDir, - create6to5VersionAndOptionsDigest(to5.version, defaultOptions), - 'js') +jsCacheDir = path.join(cacheDir, create6to5VersionAndOptionsDigest(to5.version, defaultOptions), 'js') getCachePath = (sourceCode) -> digest = crypto.createHash('sha1').update(sourceCode, 'utf8').digest('hex')