diff --git a/lib/dependency-manager-adapters/workspace.js b/lib/dependency-manager-adapters/workspace.js index d251b949..88d299c3 100644 --- a/lib/dependency-manager-adapters/workspace.js +++ b/lib/dependency-manager-adapters/workspace.js @@ -18,15 +18,6 @@ module.exports = CoreObject.extend({ if (!this.useYarnCommand) { throw new Error('workspaces are currently only supported by Yarn, you must set `useYarn` to true'); } - }, - - packageJSON: 'package.json', - - setup(options) { - if (!options) { - options = {}; - } - let packageJSON = JSON.parse(fs.readFileSync(this.packageJSON)); let workspaceGlobs; @@ -59,6 +50,15 @@ module.exports = CoreObject.extend({ }); }); + }, + + packageJSON: 'package.json', + + setup(options) { + if (!options) { + options = {}; + } + return RSVP.all(this._packageAdapters.map(adapter => adapter.setup(options))); }, diff --git a/test/dependency-manager-adapters/workspace-adapter-test.js b/test/dependency-manager-adapters/workspace-adapter-test.js index 5422b63f..2c794f5f 100644 --- a/test/dependency-manager-adapters/workspace-adapter-test.js +++ b/test/dependency-manager-adapters/workspace-adapter-test.js @@ -195,6 +195,29 @@ describe('workspaceAdapter', () => { }); describe('#cleanup', () => { + it('works without having called #setup first', () => { + fs.ensureDirSync('packages/test/node_modules'); + + writeJSONFile('packages/test/package.json', { originalPackageJSON: false }); + writeJSONFile('packages/test/node_modules/prove-it.json', { originalNodeModules: false }); + + let workspaceAdapter = new WorkspaceAdapter({ + cwd: tmpdir, + useYarnCommand: true, + run: () => Promise.resolve(), + }); + + fs.ensureDirSync('packages/test/.node_modules.ember-try'); + + writeJSONFile('packages/test/package.json.ember-try', { originalPackageJSON: true }); + writeJSONFile('packages/test/.node_modules.ember-try/prove-it.json', { originalNodeModules: true }); + + return workspaceAdapter.cleanup().then(() => { + assertFileContainsJSON(path.join(tmpdir, 'packages/test/package.json'), { originalPackageJSON: true }); + assertFileContainsJSON(path.join(tmpdir, 'packages/test/node_modules/prove-it.json'), { originalNodeModules: true }); + }); + }); + it('replaces the package.json with the backed up version', () => { fs.ensureDirSync('packages/test/node_modules');