From 2ab1416662c711bf4a2cbf62b55fc3fd5d71cd25 Mon Sep 17 00:00:00 2001 From: Milan Burda Date: Thu, 13 Jun 2019 09:11:11 +0200 Subject: [PATCH] fix: app.getAppPath() returning default-app path for files or directories without package.json --- default_app/main.ts | 7 +++++++ spec-main/api-app-spec.ts | 20 +++++++++++++++++++ spec/fixtures/api/app-path/main.js | 10 ++++++++++ .../api/app-path/no-package-json/index.js | 1 + spec/fixtures/api/app-path/package.json | 4 ++++ 5 files changed, 42 insertions(+) create mode 100644 spec/fixtures/api/app-path/main.js create mode 100644 spec/fixtures/api/app-path/no-package-json/index.js create mode 100644 spec/fixtures/api/app-path/package.json diff --git a/default_app/main.ts b/default_app/main.ts index 6d2ec90c045e7..d6fea4004008a 100644 --- a/default_app/main.ts +++ b/default_app/main.ts @@ -103,6 +103,13 @@ function loadApplicationPackage (packagePath: string) { app.name = packageJson.name } app._setDefaultAppPaths(packagePath) + } else { + const stats = fs.statSync(packagePath) + if (stats.isDirectory()) { + app._setDefaultAppPaths(packagePath) + } else if (stats.isFile()) { + app._setDefaultAppPaths(path.dirname(packagePath)) + } } try { diff --git a/spec-main/api-app-spec.ts b/spec-main/api-app-spec.ts index 6444e67e9a69a..8ec97a9435627 100644 --- a/spec-main/api-app-spec.ts +++ b/spec-main/api-app-spec.ts @@ -645,6 +645,26 @@ describe('app module', () => { }) }) + describe('getAppPath', () => { + it('works for directories with package.json', async () => { + const { appPath } = await runTestApp('app-path') + const expectedAppPath = path.resolve(fixturesPath, 'api/app-path') + expect(appPath).to.equal(expectedAppPath) + }) + + it('works for directories without package.json', async () => { + const { appPath } = await runTestApp('app-path/no-package-json') + const expectedAppPath = path.resolve(fixturesPath, 'api/app-path/no-package-json') + expect(appPath).to.equal(expectedAppPath) + }) + + it('works for files', async () => { + const { appPath } = await runTestApp('app-path/main.js') + const expectedAppPath = path.resolve(fixturesPath, 'api/app-path') + expect(appPath).to.equal(expectedAppPath) + }) + }) + describe('getPath(name)', () => { it('returns paths that exist', () => { const paths = [ diff --git a/spec/fixtures/api/app-path/main.js b/spec/fixtures/api/app-path/main.js new file mode 100644 index 0000000000000..d1a5732edca51 --- /dev/null +++ b/spec/fixtures/api/app-path/main.js @@ -0,0 +1,10 @@ +const { app } = require('electron') + +const payload = { + appPath: app.getAppPath() +} + +process.stdout.write(JSON.stringify(payload)) +process.stdout.end() + +process.exit() diff --git a/spec/fixtures/api/app-path/no-package-json/index.js b/spec/fixtures/api/app-path/no-package-json/index.js new file mode 100644 index 0000000000000..d40d582f57715 --- /dev/null +++ b/spec/fixtures/api/app-path/no-package-json/index.js @@ -0,0 +1 @@ +require('../main') diff --git a/spec/fixtures/api/app-path/package.json b/spec/fixtures/api/app-path/package.json new file mode 100644 index 0000000000000..8ab1505279227 --- /dev/null +++ b/spec/fixtures/api/app-path/package.json @@ -0,0 +1,4 @@ +{ + "name": "app-path", + "main": "main.js" +}