From 34d2d944e0e70241380c214d8c7941b634fb17a3 Mon Sep 17 00:00:00 2001 From: GuilleW Date: Wed, 9 Nov 2022 01:10:50 +0100 Subject: [PATCH 1/3] decaffeinate spec/link-spec --- spec/link-spec.coffee | 209 ----------------------- spec/link-spec.js | 389 +++++++++++++++++++++--------------------- 2 files changed, 191 insertions(+), 407 deletions(-) delete mode 100644 spec/link-spec.coffee diff --git a/spec/link-spec.coffee b/spec/link-spec.coffee deleted file mode 100644 index 125182cc..00000000 --- a/spec/link-spec.coffee +++ /dev/null @@ -1,209 +0,0 @@ -fs = require 'fs' -path = require 'path' -temp = require 'temp' -apm = require '../lib/apm-cli' - -describe 'apm link/unlink', -> - beforeEach -> - silenceOutput() - spyOnToken() - - describe "when the dev flag is false (the default)", -> - it 'symlinks packages to $ATOM_HOME/packages', -> - atomHome = temp.mkdirSync('apm-home-dir-') - process.env.ATOM_HOME = atomHome - packageToLink = temp.mkdirSync('a-package-') - process.chdir(packageToLink) - callback = jasmine.createSpy('callback') - - runs -> - apm.run(['link'], callback) - - waitsFor 'waiting for link to complete', -> - callback.callCount > 0 - - runs -> - expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(packageToLink)))).toBeTruthy() - expect(fs.realpathSync(path.join(atomHome, 'packages', path.basename(packageToLink)))).toBe fs.realpathSync(packageToLink) - - callback.reset() - apm.run(['unlink'], callback) - - waitsFor 'waiting for unlink to complete', -> - callback.callCount > 0 - - runs -> - expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(packageToLink)))).toBeFalsy() - - describe "when the dev flag is true", -> - it 'symlinks packages to $ATOM_HOME/dev/packages', -> - atomHome = temp.mkdirSync('apm-home-dir-') - process.env.ATOM_HOME = atomHome - packageToLink = temp.mkdirSync('a-package-') - process.chdir(packageToLink) - callback = jasmine.createSpy('callback') - - runs -> - apm.run(['link', '--dev'], callback) - - waitsFor 'waiting for link to complete', -> - callback.callCount > 0 - - runs -> - expect(fs.existsSync(path.join(atomHome, 'dev', 'packages', path.basename(packageToLink)))).toBeTruthy() - expect(fs.realpathSync(path.join(atomHome, 'dev', 'packages', path.basename(packageToLink)))).toBe fs.realpathSync(packageToLink) - - callback.reset() - apm.run(['unlink', '--dev'], callback) - - waitsFor 'waiting for unlink to complete', -> - callback.callCount > 0 - - runs -> - expect(fs.existsSync(path.join(atomHome, 'dev', 'packages', path.basename(packageToLink)))).toBeFalsy() - - describe "when the hard flag is true", -> - it "unlinks the package from both $ATOM_HOME/packages and $ATOM_HOME/dev/packages", -> - atomHome = temp.mkdirSync('apm-home-dir-') - process.env.ATOM_HOME = atomHome - packageToLink = temp.mkdirSync('a-package-') - process.chdir(packageToLink) - callback = jasmine.createSpy('callback') - - runs -> - apm.run(['link', '--dev'], callback) - - waitsFor 'link --dev to complete', -> - callback.callCount is 1 - - runs -> - apm.run(['link'], callback) - - waitsFor 'link to complete', -> - callback.callCount is 2 - - runs -> - apm.run(['unlink', '--hard'], callback) - - waitsFor 'unlink --hard to complete', -> - callback.callCount is 3 - - runs -> - expect(fs.existsSync(path.join(atomHome, 'dev', 'packages', path.basename(packageToLink)))).toBeFalsy() - expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(packageToLink)))).toBeFalsy() - - describe "when the all flag is true", -> - it "unlinks all packages in $ATOM_HOME/packages and $ATOM_HOME/dev/packages", -> - atomHome = temp.mkdirSync('apm-home-dir-') - process.env.ATOM_HOME = atomHome - packageToLink1 = temp.mkdirSync('a-package-') - packageToLink2 = temp.mkdirSync('a-package-') - packageToLink3 = temp.mkdirSync('a-package-') - callback = jasmine.createSpy('callback') - - runs -> - apm.run(['link', '--dev', packageToLink1], callback) - - waitsFor 'link --dev to complete', -> - callback.callCount is 1 - - runs -> - callback.reset() - apm.run(['link', packageToLink2], callback) - apm.run(['link', packageToLink3], callback) - - waitsFor 'link to complee', -> - callback.callCount is 2 - - runs -> - callback.reset() - expect(fs.existsSync(path.join(atomHome, 'dev', 'packages', path.basename(packageToLink1)))).toBeTruthy() - expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(packageToLink2)))).toBeTruthy() - expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(packageToLink3)))).toBeTruthy() - apm.run(['unlink', '--all'], callback) - - waitsFor 'unlink --all to complete', -> - callback.callCount is 1 - - runs -> - expect(fs.existsSync(path.join(atomHome, 'dev', 'packages', path.basename(packageToLink1)))).toBeFalsy() - expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(packageToLink2)))).toBeFalsy() - expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(packageToLink3)))).toBeFalsy() - - describe "when the package name is numeric", -> - it "still links and unlinks normally", -> - atomHome = temp.mkdirSync('apm-home-dir-') - process.env.ATOM_HOME = atomHome - numericPackageName = temp.mkdirSync('42') - callback = jasmine.createSpy('callback') - - runs -> - apm.run(['link', numericPackageName], callback) - - waitsFor 'link to complete', -> - callback.callCount is 1 - - runs -> - expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(numericPackageName)))).toBeTruthy() - expect(fs.realpathSync(path.join(atomHome, 'packages', path.basename(numericPackageName)))).toBe fs.realpathSync(numericPackageName) - - callback.reset() - apm.run(['unlink', numericPackageName], callback) - - waitsFor 'unlink to complete', -> - callback.callCount is 1 - - runs -> - expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(numericPackageName)))).toBeFalsy() - - describe "when the package name is set after --name", -> - it "still links and unlinks normally", -> - atomHome = temp.mkdirSync('apm-home-dir-') - process.env.ATOM_HOME = atomHome - packagePath = temp.mkdirSync('new-package') - packageName = 'new-package-name' - callback = jasmine.createSpy('callback') - - runs -> - apm.run(['link', packagePath, '--name', packageName], callback) - - waitsFor 'link to complete', -> - callback.callCount is 1 - - runs -> - expect(fs.existsSync(path.join(atomHome, 'packages', packageName))).toBeTruthy() - expect(fs.realpathSync(path.join(atomHome, 'packages', packageName))).toBe fs.realpathSync(packagePath) - - callback.reset() - apm.run(['unlink', packageName], callback) - - waitsFor 'unlink to complete', -> - callback.callCount is 1 - - runs -> - expect(fs.existsSync(path.join(atomHome, 'packages', packageName))).toBeFalsy() - - describe "when unlinking a path that is not a symbolic link", -> - it "logs an error and exits", -> - callback = jasmine.createSpy('callback') - process.chdir(temp.mkdirSync('not-a-symlink')) - apm.run(['unlink'], callback) - - waitsFor 'waiting for command to complete', -> - callback.callCount > 0 - - runs -> - expect(console.error.mostRecentCall.args[0].length).toBeGreaterThan 0 - expect(callback.mostRecentCall.args[0]).not.toBeUndefined() - - describe "when unlinking a path that does not exist", -> - it "logs an error and exits", -> - callback = jasmine.createSpy('callback') - apm.run(['unlink', 'a-path-that-does-not-exist'], callback) - - waitsFor 'waiting for command to complete', -> - callback.callCount > 0 - - runs -> - expect(console.error.mostRecentCall.args[0].length).toBeGreaterThan 0 - expect(callback.mostRecentCall.args[0]).not.toBeUndefined() diff --git a/spec/link-spec.js b/spec/link-spec.js index dcfd309a..5342edbb 100644 --- a/spec/link-spec.js +++ b/spec/link-spec.js @@ -1,198 +1,191 @@ -/* - * decaffeinate suggestions: - * DS102: Remove unnecessary code created because of implicit returns - * Full docs: https://github.com/decaffeinate/decaffeinate/blob/main/docs/suggestions.md - */ -const fs = require('fs'); -const path = require('path'); -const temp = require('temp'); -const apm = require('../lib/apm-cli'); - -describe('apm link/unlink', function() { - beforeEach(function() { - silenceOutput(); - return spyOnToken(); - }); - - describe("when the dev flag is false (the default)", () => it('symlinks packages to $ATOM_HOME/packages', function() { - const atomHome = temp.mkdirSync('apm-home-dir-'); - process.env.ATOM_HOME = atomHome; - const packageToLink = temp.mkdirSync('a-package-'); - process.chdir(packageToLink); - const callback = jasmine.createSpy('callback'); - - runs(() => apm.run(['link'], callback)); - - waitsFor('waiting for link to complete', () => callback.callCount > 0); - - runs(function() { - expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(packageToLink)))).toBeTruthy(); - expect(fs.realpathSync(path.join(atomHome, 'packages', path.basename(packageToLink)))).toBe(fs.realpathSync(packageToLink)); - - callback.reset(); - return apm.run(['unlink'], callback); - }); - - waitsFor('waiting for unlink to complete', () => callback.callCount > 0); - - return runs(() => expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(packageToLink)))).toBeFalsy()); - })); - - describe("when the dev flag is true", () => it('symlinks packages to $ATOM_HOME/dev/packages', function() { - const atomHome = temp.mkdirSync('apm-home-dir-'); - process.env.ATOM_HOME = atomHome; - const packageToLink = temp.mkdirSync('a-package-'); - process.chdir(packageToLink); - const callback = jasmine.createSpy('callback'); - - runs(() => apm.run(['link', '--dev'], callback)); - - waitsFor('waiting for link to complete', () => callback.callCount > 0); - - runs(function() { - expect(fs.existsSync(path.join(atomHome, 'dev', 'packages', path.basename(packageToLink)))).toBeTruthy(); - expect(fs.realpathSync(path.join(atomHome, 'dev', 'packages', path.basename(packageToLink)))).toBe(fs.realpathSync(packageToLink)); - - callback.reset(); - return apm.run(['unlink', '--dev'], callback); - }); - - waitsFor('waiting for unlink to complete', () => callback.callCount > 0); - - return runs(() => expect(fs.existsSync(path.join(atomHome, 'dev', 'packages', path.basename(packageToLink)))).toBeFalsy()); - })); - - describe("when the hard flag is true", () => it("unlinks the package from both $ATOM_HOME/packages and $ATOM_HOME/dev/packages", function() { - const atomHome = temp.mkdirSync('apm-home-dir-'); - process.env.ATOM_HOME = atomHome; - const packageToLink = temp.mkdirSync('a-package-'); - process.chdir(packageToLink); - const callback = jasmine.createSpy('callback'); - - runs(() => apm.run(['link', '--dev'], callback)); - - waitsFor('link --dev to complete', () => callback.callCount === 1); - - runs(() => apm.run(['link'], callback)); - - waitsFor('link to complete', () => callback.callCount === 2); - - runs(() => apm.run(['unlink', '--hard'], callback)); - - waitsFor('unlink --hard to complete', () => callback.callCount === 3); - - return runs(function() { - expect(fs.existsSync(path.join(atomHome, 'dev', 'packages', path.basename(packageToLink)))).toBeFalsy(); - return expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(packageToLink)))).toBeFalsy(); - }); - })); - - describe("when the all flag is true", () => it("unlinks all packages in $ATOM_HOME/packages and $ATOM_HOME/dev/packages", function() { - const atomHome = temp.mkdirSync('apm-home-dir-'); - process.env.ATOM_HOME = atomHome; - const packageToLink1 = temp.mkdirSync('a-package-'); - const packageToLink2 = temp.mkdirSync('a-package-'); - const packageToLink3 = temp.mkdirSync('a-package-'); - const callback = jasmine.createSpy('callback'); - - runs(() => apm.run(['link', '--dev', packageToLink1], callback)); - - waitsFor('link --dev to complete', () => callback.callCount === 1); - - runs(function() { - callback.reset(); - apm.run(['link', packageToLink2], callback); - return apm.run(['link', packageToLink3], callback); - }); - - waitsFor('link to complee', () => callback.callCount === 2); - - runs(function() { - callback.reset(); - expect(fs.existsSync(path.join(atomHome, 'dev', 'packages', path.basename(packageToLink1)))).toBeTruthy(); - expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(packageToLink2)))).toBeTruthy(); - expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(packageToLink3)))).toBeTruthy(); - return apm.run(['unlink', '--all'], callback); - }); - - waitsFor('unlink --all to complete', () => callback.callCount === 1); - - return runs(function() { - expect(fs.existsSync(path.join(atomHome, 'dev', 'packages', path.basename(packageToLink1)))).toBeFalsy(); - expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(packageToLink2)))).toBeFalsy(); - return expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(packageToLink3)))).toBeFalsy(); - }); - })); - - describe("when the package name is numeric", () => it("still links and unlinks normally", function() { - const atomHome = temp.mkdirSync('apm-home-dir-'); - process.env.ATOM_HOME = atomHome; - const numericPackageName = temp.mkdirSync('42'); - const callback = jasmine.createSpy('callback'); - - runs(() => apm.run(['link', numericPackageName], callback)); - - waitsFor('link to complete', () => callback.callCount === 1); - - runs(function() { - expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(numericPackageName)))).toBeTruthy(); - expect(fs.realpathSync(path.join(atomHome, 'packages', path.basename(numericPackageName)))).toBe(fs.realpathSync(numericPackageName)); - - callback.reset(); - return apm.run(['unlink', numericPackageName], callback); - }); - - waitsFor('unlink to complete', () => callback.callCount === 1); - - return runs(() => expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(numericPackageName)))).toBeFalsy()); - })); - - describe("when the package name is set after --name", () => it("still links and unlinks normally", function() { - const atomHome = temp.mkdirSync('apm-home-dir-'); - process.env.ATOM_HOME = atomHome; - const packagePath = temp.mkdirSync('new-package'); - const packageName = 'new-package-name'; - const callback = jasmine.createSpy('callback'); - - runs(() => apm.run(['link', packagePath, '--name', packageName], callback)); - - waitsFor('link to complete', () => callback.callCount === 1); - - runs(function() { - expect(fs.existsSync(path.join(atomHome, 'packages', packageName))).toBeTruthy(); - expect(fs.realpathSync(path.join(atomHome, 'packages', packageName))).toBe(fs.realpathSync(packagePath)); - - callback.reset(); - return apm.run(['unlink', packageName], callback); - }); - - waitsFor('unlink to complete', () => callback.callCount === 1); - - return runs(() => expect(fs.existsSync(path.join(atomHome, 'packages', packageName))).toBeFalsy()); - })); - - describe("when unlinking a path that is not a symbolic link", () => it("logs an error and exits", function() { - const callback = jasmine.createSpy('callback'); - process.chdir(temp.mkdirSync('not-a-symlink')); - apm.run(['unlink'], callback); - - waitsFor('waiting for command to complete', () => callback.callCount > 0); - - return runs(function() { - expect(console.error.mostRecentCall.args[0].length).toBeGreaterThan(0); - return expect(callback.mostRecentCall.args[0]).not.toBeUndefined(); - }); - })); - - return describe("when unlinking a path that does not exist", () => it("logs an error and exits", function() { - const callback = jasmine.createSpy('callback'); - apm.run(['unlink', 'a-path-that-does-not-exist'], callback); - - waitsFor('waiting for command to complete', () => callback.callCount > 0); - - return runs(function() { - expect(console.error.mostRecentCall.args[0].length).toBeGreaterThan(0); - return expect(callback.mostRecentCall.args[0]).not.toBeUndefined(); - }); - })); -}); +const fs = require('fs') +const path = require('path') +const temp = require('temp') +const apm = require('../lib/apm-cli') + +describe('apm link/unlink', () => { + beforeEach(() => { + silenceOutput() + spyOnToken() + }) + + describe('when the dev flag is false (the default)', () => { + it('symlinks packages to $ATOM_HOME/packages', () => { + const atomHome = temp.mkdirSync('apm-home-dir-') + process.env.ATOM_HOME = atomHome + const packageToLink = temp.mkdirSync('a-package-') + process.chdir(packageToLink) + const callback = jasmine.createSpy('callback') + runs(() => { + apm.run(['link'], callback) + }) + waitsFor('waiting for link to complete', () => callback.callCount > 0) + runs(() => { + expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(packageToLink)))).toBeTruthy() + expect(fs.realpathSync(path.join(atomHome, 'packages', path.basename(packageToLink)))).toBe(fs.realpathSync(packageToLink)) + callback.reset() + apm.run(['unlink'], callback) + }) + waitsFor('waiting for unlink to complete', () => callback.callCount > 0) + runs(() => { + expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(packageToLink)))).toBeFalsy() + }) + }) + }) + + describe('when the dev flag is true', () => { + it('symlinks packages to $ATOM_HOME/dev/packages', () => { + const atomHome = temp.mkdirSync('apm-home-dir-') + process.env.ATOM_HOME = atomHome + const packageToLink = temp.mkdirSync('a-package-') + process.chdir(packageToLink) + const callback = jasmine.createSpy('callback') + runs(() => { + apm.run(['link', '--dev'], callback) + }) + waitsFor('waiting for link to complete', () => callback.callCount > 0) + runs(() => { + expect(fs.existsSync(path.join(atomHome, 'dev', 'packages', path.basename(packageToLink)))).toBeTruthy() + expect(fs.realpathSync(path.join(atomHome, 'dev', 'packages', path.basename(packageToLink)))).toBe(fs.realpathSync(packageToLink)) + callback.reset() + apm.run(['unlink', '--dev'], callback) + }) + waitsFor('waiting for unlink to complete', () => callback.callCount > 0) + runs(() => { + expect(fs.existsSync(path.join(atomHome, 'dev', 'packages', path.basename(packageToLink)))).toBeFalsy() + }) + }) + }) + + describe('when the hard flag is true', () => { + it('unlinks the package from both $ATOM_HOME/packages and $ATOM_HOME/dev/packages', () => { + const atomHome = temp.mkdirSync('apm-home-dir-') + process.env.ATOM_HOME = atomHome + const packageToLink = temp.mkdirSync('a-package-') + process.chdir(packageToLink) + const callback = jasmine.createSpy('callback') + runs(() => { + apm.run(['link', '--dev'], callback) + }) + waitsFor('link --dev to complete', () => callback.callCount === 1) + runs(() => { + apm.run(['link'], callback) + }) + waitsFor('link to complete', () => callback.callCount === 2) + runs(() => { + apm.run(['unlink', '--hard'], callback) + }) + waitsFor('unlink --hard to complete', () => callback.callCount === 3) + runs(() => { + expect(fs.existsSync(path.join(atomHome, 'dev', 'packages', path.basename(packageToLink)))).toBeFalsy() + expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(packageToLink)))).toBeFalsy() + }) + }) + }) + + describe('when the all flag is true', () => { + it('unlinks all packages in $ATOM_HOME/packages and $ATOM_HOME/dev/packages', () => { + const atomHome = temp.mkdirSync('apm-home-dir-') + process.env.ATOM_HOME = atomHome + const packageToLink1 = temp.mkdirSync('a-package-') + const packageToLink2 = temp.mkdirSync('a-package-') + const packageToLink3 = temp.mkdirSync('a-package-') + const callback = jasmine.createSpy('callback') + runs(() => { + apm.run(['link', '--dev', packageToLink1], callback) + }) + waitsFor('link --dev to complete', () => callback.callCount === 1) + runs(() => { + callback.reset() + apm.run(['link', packageToLink2], callback) + apm.run(['link', packageToLink3], callback) + }) + waitsFor('link to complee', () => callback.callCount === 2) + runs(() => { + callback.reset() + expect(fs.existsSync(path.join(atomHome, 'dev', 'packages', path.basename(packageToLink1)))).toBeTruthy() + expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(packageToLink2)))).toBeTruthy() + expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(packageToLink3)))).toBeTruthy() + apm.run(['unlink', '--all'], callback) + }) + waitsFor('unlink --all to complete', () => callback.callCount === 1) + runs(() => { + expect(fs.existsSync(path.join(atomHome, 'dev', 'packages', path.basename(packageToLink1)))).toBeFalsy() + expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(packageToLink2)))).toBeFalsy() + expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(packageToLink3)))).toBeFalsy() + }) + }) + }) + + describe('when the package name is numeric', () => { + it('still links and unlinks normally', () => { + const atomHome = temp.mkdirSync('apm-home-dir-') + process.env.ATOM_HOME = atomHome + const numericPackageName = temp.mkdirSync('42') + const callback = jasmine.createSpy('callback') + runs(() => { + apm.run(['link', numericPackageName], callback) + }) + waitsFor('link to complete', () => callback.callCount === 1) + runs(() => { + expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(numericPackageName)))).toBeTruthy() + expect(fs.realpathSync(path.join(atomHome, 'packages', path.basename(numericPackageName)))).toBe(fs.realpathSync(numericPackageName)) + callback.reset() + apm.run(['unlink', numericPackageName], callback) + }) + waitsFor('unlink to complete', () => callback.callCount === 1) + runs(() => { + expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(numericPackageName)))).toBeFalsy() + }) + }) + }) + + describe('when the package name is set after --name', () => { + it('still links and unlinks normally', () => { + const atomHome = temp.mkdirSync('apm-home-dir-') + process.env.ATOM_HOME = atomHome + const packagePath = temp.mkdirSync('new-package') + const packageName = 'new-package-name' + const callback = jasmine.createSpy('callback') + runs(() => { + apm.run(['link', packagePath, '--name', packageName], callback) + }) + waitsFor('link to complete', () => callback.callCount === 1) + runs(() => { + expect(fs.existsSync(path.join(atomHome, 'packages', packageName))).toBeTruthy() + expect(fs.realpathSync(path.join(atomHome, 'packages', packageName))).toBe(fs.realpathSync(packagePath)) + callback.reset() + apm.run(['unlink', packageName], callback) + }) + waitsFor('unlink to complete', () => callback.callCount === 1) + runs(() => { + expect(fs.existsSync(path.join(atomHome, 'packages', packageName))).toBeFalsy() + }) + }) + }) + + describe('when unlinking a path that is not a symbolic link', () => { + it('logs an error and exits', () => { + const callback = jasmine.createSpy('callback') + process.chdir(temp.mkdirSync('not-a-symlink')) + apm.run(['unlink'], callback) + waitsFor('waiting for command to complete', () => callback.callCount > 0) + runs(() => { + expect(console.error.mostRecentCall.args[0].length).toBeGreaterThan(0) + expect(callback.mostRecentCall.args[0]).not.toBeUndefined() + }) + }) + }) + + describe('when unlinking a path that does not exist', () => { + it('logs an error and exits', () => { + const callback = jasmine.createSpy('callback') + apm.run(['unlink', 'a-path-that-does-not-exist'], callback) + waitsFor('waiting for command to complete', () => callback.callCount > 0) + runs(() => { + expect(console.error.mostRecentCall.args[0].length).toBeGreaterThan(0) + expect(callback.mostRecentCall.args[0]).not.toBeUndefined() + }) + }) + }) +}) From b05e1664032d9ae116526ee6a59ba85f34efb831 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Polg=C3=A1r=20M=C3=A1rton?= Date: Sun, 28 May 2023 10:20:40 +0200 Subject: [PATCH 2/3] Bringing semicolons back --- spec/link-spec.js | 324 ++++++++++++++++++++++++++-------------------- 1 file changed, 183 insertions(+), 141 deletions(-) diff --git a/spec/link-spec.js b/spec/link-spec.js index 5342edbb..6f0c3828 100644 --- a/spec/link-spec.js +++ b/spec/link-spec.js @@ -1,191 +1,233 @@ -const fs = require('fs') -const path = require('path') -const temp = require('temp') -const apm = require('../lib/apm-cli') +const fs = require('fs'); +const path = require('path'); +const temp = require('temp'); +const apm = require('../lib/apm-cli'); describe('apm link/unlink', () => { beforeEach(() => { - silenceOutput() - spyOnToken() - }) + silenceOutput(); + spyOnToken(); + }); describe('when the dev flag is false (the default)', () => { it('symlinks packages to $ATOM_HOME/packages', () => { - const atomHome = temp.mkdirSync('apm-home-dir-') - process.env.ATOM_HOME = atomHome - const packageToLink = temp.mkdirSync('a-package-') - process.chdir(packageToLink) - const callback = jasmine.createSpy('callback') + const atomHome = temp.mkdirSync('apm-home-dir-'); + process.env.ATOM_HOME = atomHome; + const packageToLink = temp.mkdirSync('a-package-'); + process.chdir(packageToLink); + const callback = jasmine.createSpy('callback'); + runs(() => { - apm.run(['link'], callback) - }) - waitsFor('waiting for link to complete', () => callback.callCount > 0) + apm.run(['link'], callback); + }); + + waitsFor('waiting for link to complete', () => callback.callCount > 0); + runs(() => { - expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(packageToLink)))).toBeTruthy() - expect(fs.realpathSync(path.join(atomHome, 'packages', path.basename(packageToLink)))).toBe(fs.realpathSync(packageToLink)) - callback.reset() - apm.run(['unlink'], callback) - }) - waitsFor('waiting for unlink to complete', () => callback.callCount > 0) + expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(packageToLink)))).toBeTruthy(); + expect(fs.realpathSync(path.join(atomHome, 'packages', path.basename(packageToLink)))).toBe(fs.realpathSync(packageToLink)); + + callback.reset(); + apm.run(['unlink'], callback); + }); + + waitsFor('waiting for unlink to complete', () => callback.callCount > 0); + runs(() => { - expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(packageToLink)))).toBeFalsy() - }) - }) - }) + expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(packageToLink)))).toBeFalsy(); + }); + }); + }); describe('when the dev flag is true', () => { it('symlinks packages to $ATOM_HOME/dev/packages', () => { - const atomHome = temp.mkdirSync('apm-home-dir-') - process.env.ATOM_HOME = atomHome - const packageToLink = temp.mkdirSync('a-package-') - process.chdir(packageToLink) - const callback = jasmine.createSpy('callback') + const atomHome = temp.mkdirSync('apm-home-dir-'); + process.env.ATOM_HOME = atomHome; + const packageToLink = temp.mkdirSync('a-package-'); + process.chdir(packageToLink); + const callback = jasmine.createSpy('callback'); + runs(() => { - apm.run(['link', '--dev'], callback) - }) - waitsFor('waiting for link to complete', () => callback.callCount > 0) + apm.run(['link', '--dev'], callback); + }); + + waitsFor('waiting for link to complete', () => callback.callCount > 0); + runs(() => { - expect(fs.existsSync(path.join(atomHome, 'dev', 'packages', path.basename(packageToLink)))).toBeTruthy() - expect(fs.realpathSync(path.join(atomHome, 'dev', 'packages', path.basename(packageToLink)))).toBe(fs.realpathSync(packageToLink)) - callback.reset() - apm.run(['unlink', '--dev'], callback) - }) - waitsFor('waiting for unlink to complete', () => callback.callCount > 0) + expect(fs.existsSync(path.join(atomHome, 'dev', 'packages', path.basename(packageToLink)))).toBeTruthy(); + expect(fs.realpathSync(path.join(atomHome, 'dev', 'packages', path.basename(packageToLink)))).toBe(fs.realpathSync(packageToLink)); + + callback.reset(); + apm.run(['unlink', '--dev'], callback); + }); + + waitsFor('waiting for unlink to complete', () => callback.callCount > 0); + runs(() => { - expect(fs.existsSync(path.join(atomHome, 'dev', 'packages', path.basename(packageToLink)))).toBeFalsy() - }) - }) - }) + expect(fs.existsSync(path.join(atomHome, 'dev', 'packages', path.basename(packageToLink)))).toBeFalsy(); + }); + }); + }); describe('when the hard flag is true', () => { it('unlinks the package from both $ATOM_HOME/packages and $ATOM_HOME/dev/packages', () => { - const atomHome = temp.mkdirSync('apm-home-dir-') - process.env.ATOM_HOME = atomHome - const packageToLink = temp.mkdirSync('a-package-') - process.chdir(packageToLink) - const callback = jasmine.createSpy('callback') + const atomHome = temp.mkdirSync('apm-home-dir-'); + process.env.ATOM_HOME = atomHome; + const packageToLink = temp.mkdirSync('a-package-'); + process.chdir(packageToLink); + const callback = jasmine.createSpy('callback'); + runs(() => { - apm.run(['link', '--dev'], callback) - }) - waitsFor('link --dev to complete', () => callback.callCount === 1) + apm.run(['link', '--dev'], callback); + }); + + waitsFor('link --dev to complete', () => callback.callCount === 1); + runs(() => { - apm.run(['link'], callback) - }) - waitsFor('link to complete', () => callback.callCount === 2) + apm.run(['link'], callback); + }); + + waitsFor('link to complete', () => callback.callCount === 2); + runs(() => { - apm.run(['unlink', '--hard'], callback) - }) - waitsFor('unlink --hard to complete', () => callback.callCount === 3) + apm.run(['unlink', '--hard'], callback); + }); + + waitsFor('unlink --hard to complete', () => callback.callCount === 3); + runs(() => { - expect(fs.existsSync(path.join(atomHome, 'dev', 'packages', path.basename(packageToLink)))).toBeFalsy() - expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(packageToLink)))).toBeFalsy() - }) - }) - }) + expect(fs.existsSync(path.join(atomHome, 'dev', 'packages', path.basename(packageToLink)))).toBeFalsy(); + expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(packageToLink)))).toBeFalsy(); + }); + }); + }); describe('when the all flag is true', () => { it('unlinks all packages in $ATOM_HOME/packages and $ATOM_HOME/dev/packages', () => { - const atomHome = temp.mkdirSync('apm-home-dir-') - process.env.ATOM_HOME = atomHome - const packageToLink1 = temp.mkdirSync('a-package-') - const packageToLink2 = temp.mkdirSync('a-package-') - const packageToLink3 = temp.mkdirSync('a-package-') - const callback = jasmine.createSpy('callback') - runs(() => { - apm.run(['link', '--dev', packageToLink1], callback) - }) - waitsFor('link --dev to complete', () => callback.callCount === 1) + const atomHome = temp.mkdirSync('apm-home-dir-'); + process.env.ATOM_HOME = atomHome; + const packageToLink1 = temp.mkdirSync('a-package-'); + const packageToLink2 = temp.mkdirSync('a-package-'); + const packageToLink3 = temp.mkdirSync('a-package-'); + const callback = jasmine.createSpy('callback'); + runs(() => { - callback.reset() - apm.run(['link', packageToLink2], callback) - apm.run(['link', packageToLink3], callback) - }) + apm.run(['link', '--dev', packageToLink1], callback); + }); + + waitsFor('link --dev to complete', () => callback.callCount === 1); + + runs(() => { + callback.reset(); + apm.run(['link', ;packageToLink2], callback); + apm.run(['link', packageToLink3], callback); + }); + waitsFor('link to complee', () => callback.callCount === 2) + runs(() => { - callback.reset() - expect(fs.existsSync(path.join(atomHome, 'dev', 'packages', path.basename(packageToLink1)))).toBeTruthy() - expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(packageToLink2)))).toBeTruthy() - expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(packageToLink3)))).toBeTruthy() - apm.run(['unlink', '--all'], callback) + callback.reset(); + expect(fs.existsSync(path.join(atomHome, 'dev', 'packages', path.basename(packageToLink1)))).toBeTruthy(); + expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(packageToLink2)))).toBeTruthy(); + expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(packageToLink3)))).toBeTruthy(); + apm.run(['unlink', '--all'], callback); }) - waitsFor('unlink --all to complete', () => callback.callCount === 1) + + waitsFor('unlink --all to complete', () => callback.callCount === 1); + runs(() => { - expect(fs.existsSync(path.join(atomHome, 'dev', 'packages', path.basename(packageToLink1)))).toBeFalsy() - expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(packageToLink2)))).toBeFalsy() - expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(packageToLink3)))).toBeFalsy() - }) - }) - }) + expect(fs.existsSync(path.join(atomHome, 'dev', 'packages', path.basename(packageToLink1)))).toBeFalsy(); + expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(packageToLink2)))).toBeFalsy(); + expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(packageToLink3)))).toBeFalsy(); + }); + }); + }); describe('when the package name is numeric', () => { it('still links and unlinks normally', () => { - const atomHome = temp.mkdirSync('apm-home-dir-') - process.env.ATOM_HOME = atomHome - const numericPackageName = temp.mkdirSync('42') - const callback = jasmine.createSpy('callback') + const atomHome = temp.mkdirSync('apm-home-dir-'); + process.env.ATOM_HOME = atomHome; + const numericPackageName = temp.mkdirSync('42'); + const callback = jasmine.createSpy('callback'); + runs(() => { - apm.run(['link', numericPackageName], callback) - }) - waitsFor('link to complete', () => callback.callCount === 1) + apm.run(['link', numericPackageName], callback); + }); + + waitsFor('link to complete', () => callback.callCount === 1); + runs(() => { - expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(numericPackageName)))).toBeTruthy() - expect(fs.realpathSync(path.join(atomHome, 'packages', path.basename(numericPackageName)))).toBe(fs.realpathSync(numericPackageName)) - callback.reset() - apm.run(['unlink', numericPackageName], callback) - }) - waitsFor('unlink to complete', () => callback.callCount === 1) + expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(numericPackageName)))).toBeTruthy(); + expect(fs.realpathSync(path.join(atomHome, 'packages', path.basename(numericPackageName)))).toBe(fs.realpathSync(numericPackageName)); + + callback.reset(); + apm.run(['unlink', numericPackageName], callback); + }); + + waitsFor('unlink to complete', () => callback.callCount === 1); + runs(() => { - expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(numericPackageName)))).toBeFalsy() - }) - }) - }) + expect(fs.existsSync(path.join(atomHome, 'packages', path.basename(numericPackageName)))).toBeFalsy(); + }); + }); + }); describe('when the package name is set after --name', () => { it('still links and unlinks normally', () => { - const atomHome = temp.mkdirSync('apm-home-dir-') - process.env.ATOM_HOME = atomHome - const packagePath = temp.mkdirSync('new-package') - const packageName = 'new-package-name' - const callback = jasmine.createSpy('callback') + const atomHome = temp.mkdirSync('apm-home-dir-'); + process.env.ATOM_HOME = atomHome; + const packagePath = temp.mkdirSync('new-package'); + const packageName = 'new-package-name'; + const callback = jasmine.createSpy('callback'); + runs(() => { - apm.run(['link', packagePath, '--name', packageName], callback) - }) - waitsFor('link to complete', () => callback.callCount === 1) + apm.run(['link', packagePath, '--name', packageName], callback); + }); + + waitsFor('link to complete', () => callback.callCount === 1); + runs(() => { - expect(fs.existsSync(path.join(atomHome, 'packages', packageName))).toBeTruthy() - expect(fs.realpathSync(path.join(atomHome, 'packages', packageName))).toBe(fs.realpathSync(packagePath)) - callback.reset() - apm.run(['unlink', packageName], callback) - }) - waitsFor('unlink to complete', () => callback.callCount === 1) + expect(fs.existsSync(path.join(atomHome, 'packages', packageName))).toBeTruthy(); + expect(fs.realpathSync(path.join(atomHome, 'packages', packageName))).toBe(fs.realpathSync(packagePath)); + + callback.reset(); + apm.run(['unlink', packageName], callback); + }); + + waitsFor('unlink to complete', () => callback.callCount === 1); + runs(() => { - expect(fs.existsSync(path.join(atomHome, 'packages', packageName))).toBeFalsy() - }) - }) - }) + expect(fs.existsSync(path.join(atomHome, 'packages', packageName))).toBeFalsy(); + }); + }); + }); describe('when unlinking a path that is not a symbolic link', () => { it('logs an error and exits', () => { - const callback = jasmine.createSpy('callback') - process.chdir(temp.mkdirSync('not-a-symlink')) - apm.run(['unlink'], callback) - waitsFor('waiting for command to complete', () => callback.callCount > 0) + const callback = jasmine.createSpy('callback'); + process.chdir(temp.mkdirSync('not-a-symlink')); + apm.run(['unlink'], callback); + + waitsFor('waiting for command to complete', () => callback.callCount > 0); + runs(() => { - expect(console.error.mostRecentCall.args[0].length).toBeGreaterThan(0) - expect(callback.mostRecentCall.args[0]).not.toBeUndefined() - }) - }) - }) + expect(console.error.mostRecentCall.args[0].length).toBeGreaterThan(0); + expect(callback.mostRecentCall.args[0]).not.toBeUndefined(); + }); + }); + }); describe('when unlinking a path that does not exist', () => { it('logs an error and exits', () => { - const callback = jasmine.createSpy('callback') - apm.run(['unlink', 'a-path-that-does-not-exist'], callback) - waitsFor('waiting for command to complete', () => callback.callCount > 0) + const callback = jasmine.createSpy('callback'); + apm.run(['unlink', 'a-path-that-does-not-exist'], callback); + + waitsFor('waiting for command to complete', () => callback.callCount > 0); + runs(() => { - expect(console.error.mostRecentCall.args[0].length).toBeGreaterThan(0) - expect(callback.mostRecentCall.args[0]).not.toBeUndefined() - }) - }) - }) -}) + expect(console.error.mostRecentCall.args[0].length).toBeGreaterThan(0); + expect(callback.mostRecentCall.args[0]).not.toBeUndefined(); + }); + }); + }); +}); From 4678e957a688365863e178dbb8ff673446c13b27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Polg=C3=A1r=20M=C3=A1rton?= Date: Mon, 29 May 2023 16:56:23 +0200 Subject: [PATCH 3/3] Remove accidental semicolon --- spec/link-spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/link-spec.js b/spec/link-spec.js index 6f0c3828..b0f5db78 100644 --- a/spec/link-spec.js +++ b/spec/link-spec.js @@ -119,7 +119,7 @@ describe('apm link/unlink', () => { runs(() => { callback.reset(); - apm.run(['link', ;packageToLink2], callback); + apm.run(['link', packageToLink2], callback); apm.run(['link', packageToLink3], callback); });