diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 196e6bf..e853b17 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -71,6 +71,7 @@ jobs: ember-try-scenario: - ember-babel-6 - node-babel-6 + - ember-2.0-babel-7 - ember-babel-7 steps: diff --git a/config/ember-try.js b/config/ember-try.js index 8c741a1..e6c2ccc 100644 --- a/config/ember-try.js +++ b/config/ember-try.js @@ -26,6 +26,22 @@ module.exports = function() { } } }, + { + name: 'ember-2.0-babel-7', + bower: { + dependencies: { + ember: '~2.0.0', + }, + }, + command: 'ember test', + npm: { + devDependencies: { + 'ember-source': null, + 'ember-fetch': null, + 'ember-data': null, + }, + }, + }, { name: 'ember-babel-7', command: 'ember test', diff --git a/index.js b/index.js index 10d7525..7bcc390 100644 --- a/index.js +++ b/index.js @@ -3,6 +3,20 @@ const VersionChecker = require('ember-cli-version-checker'); const extractTrueVersion = require('./utils/extract-true-version'); const getFlags = require('./utils/get-flags'); +const fs = require('fs'); +const path = require('path'); + +// from https://github.com/ember-cli/ember-cli-version-checker/blob/70c2d52cde964b1e8acd062411c9f1666180a52c/src/dependency-version-checker.js#L9 +function getVersionFromJSONFile(filePath) { + try { + // Use the require cache to avoid file I/O after first call on a given path. + let pkg = require(filePath); + return pkg.version; + } catch (err) { + // file doesn't exist or is not a file or is not parseable. + return null; + } +} module.exports = { name: 'ember-compatibility-helpers', @@ -16,6 +30,18 @@ module.exports = { this.projectChecker = new VersionChecker(this.project); this.emberVersion = this.projectChecker.for('ember-source').version; + if (!this.emberVersion) { + let bowerrcPath = path.join(this.project.root, '.bowerrc'); + let bowerDirectory = 'bower_components'; + if (fs.existsSync(bowerrcPath)) { + bowerDirectory = fs.readJsonSync(bowerrcPath).directory; + } + + this.emberVersion = + getVersionFromJSONFile(path.join(this.project.root, bowerDirectory, 'ember', '.bower.json')) || + getVersionFromJSONFile(path.join(this.project.root, bowerDirectory, 'ember', 'bower.json')); + } + // Create a parent checker for checking the parent app/addons dependencies (for things like polyfills) this.parentChecker = new VersionChecker(this.parent); const emberBabelChecker = this.parentChecker.for('ember-cli-babel', 'npm'); diff --git a/tests/unit/gte-smoke-test.js b/tests/unit/gte-smoke-test.js index bc17d2a..ef8b0a1 100644 --- a/tests/unit/gte-smoke-test.js +++ b/tests/unit/gte-smoke-test.js @@ -4,6 +4,6 @@ import { gte } from 'ember-compatibility-helpers'; module('gte-smoke-test', function() { test('gte generally functions, and avoids an import error', function(assert) { assert.ok(gte('0.0.0')); - assert.ok(gte('ember-source', '0.0.0')); + assert.ok(gte('semver', '0.0.0')); }); });