Skip to content

Commit

Permalink
Restore backup files after each scenario
Browse files Browse the repository at this point in the history
  • Loading branch information
huyphamily committed Mar 1, 2020
1 parent bff5859 commit f1ab3e3
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 6 deletions.
4 changes: 2 additions & 2 deletions lib/dependency-manager-adapters/npm.js
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ module.exports = CoreObject.extend({
cleanup() {
let adapter = this;

return this._restoreOriginalDependencies().then(() => {
return this.restoreOriginalDependencies().then(() => {
debug('Remove backup package.json and node_modules');

let cleanupTasks = [rimraf(path.join(adapter.cwd, adapter.packageJSONBackupFileName)),
Expand Down Expand Up @@ -186,7 +186,7 @@ module.exports = CoreObject.extend({
}
});
},
_restoreOriginalDependencies() {
restoreOriginalDependencies() {
let copy = RSVP.denodeify(fs.copy);

debug('Restoring original package.json and node_modules');
Expand Down
2 changes: 1 addition & 1 deletion lib/tasks/try-each.js
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ module.exports = CoreObject.extend({

runResults.result = result;
task._writeFooter(`Result: ${result}`);
return RSVP.resolve(runResults);
return task.ScenarioManager.restoreOriginalDependencies().then(() => runResults);
});
});
},
Expand Down
12 changes: 12 additions & 0 deletions lib/utils/scenario-manager.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,5 +40,17 @@ module.exports = CoreObject.extend({
return depManager.cleanup();
});
},

/* Restore the original dependencies. Will only work with npm adapter
* as it has a restoreOriginalDependencies function.
*/
restoreOriginalDependencies() {
return mapSeries(this.dependencyManagerAdapters, (depManager) => {
if (typeof depManager.restoreOriginalDependencies === 'function') {
return depManager.restoreOriginalDependencies();
}
return RSVP.resolve([]);
});
},
});

6 changes: 3 additions & 3 deletions test/dependency-manager-adapters/npm-adapter-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -268,13 +268,13 @@ describe('npmAdapter', () => {
});
});

describe('#_restoreOriginalDependencies', () => {
describe('#restoreOriginalDependencies', () => {
it('replaces the package.json with the backed up version', () => {
writeJSONFile('package.json.ember-try', { originalPackageJSON: true });
writeJSONFile('package.json', { originalPackageJSON: false });
fs.mkdirSync('.node_modules.ember-try');
writeJSONFile('.node_modules.ember-try/prove-it.json', { originalNodeModules: true });
return new NpmAdapter({ cwd: tmpdir })._restoreOriginalDependencies().then(() => {
return new NpmAdapter({ cwd: tmpdir }).restoreOriginalDependencies().then(() => {
assertFileContainsJSON(path.join(tmpdir, 'package.json'), { originalPackageJSON: true });
assertFileContainsJSON(path.join(tmpdir, 'node_modules/prove-it.json'), { originalNodeModules: true });
});
Expand All @@ -291,7 +291,7 @@ describe('npmAdapter', () => {
writeJSONFile('npm-shrinkwrap.json', { originalNpmShrinkWrap: false });
writeJSONFile('package-lock.json.ember-try', { originalPackageLock: true });
writeJSONFile('package-lock.json', { originalPackageLock: false });
return new NpmAdapter({ cwd: tmpdir })._restoreOriginalDependencies().then(() => {
return new NpmAdapter({ cwd: tmpdir }).restoreOriginalDependencies().then(() => {
assertFileContainsJSON(path.join(tmpdir, 'package.json'), { originalPackageJSON: true });
assertFileContainsJSON(path.join(tmpdir, 'node_modules/prove-it.json'), { originalNodeModules: true });
assertFileContainsJSON(path.join(tmpdir, 'yarn.lock'), { originalYarnLock: true });
Expand Down

0 comments on commit f1ab3e3

Please sign in to comment.