From 342d574fce85aef0e1bec3d0a86e559f41e658ac Mon Sep 17 00:00:00 2001 From: 7PH Date: Fri, 29 Nov 2024 14:51:55 +0100 Subject: [PATCH 1/2] SCANNPM-49 Set sonar.working.directory for npm scanner to avoid potential collision with userHome --- src/properties.ts | 1 + src/types.ts | 1 + test/unit/mocks/FakeProjectMock.ts | 1 + test/unit/properties.test.ts | 2 ++ 4 files changed, 5 insertions(+) diff --git a/src/properties.ts b/src/properties.ts index af06218..43473c2 100644 --- a/src/properties.ts +++ b/src/properties.ts @@ -53,6 +53,7 @@ function getDefaultProperties(): ScannerProperties { process.env.HOME ?? process.env.USERPROFILE ?? '', SONAR_DIR_DEFAULT, ), + [ScannerProperty.SonarWorkingDirectory]: '.scannerwork', [ScannerProperty.SonarScannerOs]: getSupportedOS(), [ScannerProperty.SonarScannerArch]: getArch(), }; diff --git a/src/types.ts b/src/types.ts index f6616f2..a256526 100644 --- a/src/types.ts +++ b/src/types.ts @@ -34,6 +34,7 @@ export enum ScannerProperty { SonarExclusions = 'sonar.exclusions', SonarHostUrl = 'sonar.host.url', SonarUserHome = 'sonar.userHome', + SonarWorkingDirectory = 'sonar.working.directory', SonarScannerApiBaseUrl = 'sonar.scanner.apiBaseUrl', SonarScannerOs = 'sonar.scanner.os', SonarScannerArch = 'sonar.scanner.arch', diff --git a/test/unit/mocks/FakeProjectMock.ts b/test/unit/mocks/FakeProjectMock.ts index c50ccdd..b513df1 100644 --- a/test/unit/mocks/FakeProjectMock.ts +++ b/test/unit/mocks/FakeProjectMock.ts @@ -55,6 +55,7 @@ export class FakeProjectMock { getExpectedProperties() { return { + 'sonar.working.directory': '.scannerwork', 'sonar.exclusions': DEFAULT_SONAR_EXCLUSIONS, 'sonar.projectBaseDir': this.projectPath, 'sonar.scanner.bootstrapStartTime': this.startTimeMs.toString(), diff --git a/test/unit/properties.test.ts b/test/unit/properties.test.ts index d834703..6a4f211 100644 --- a/test/unit/properties.test.ts +++ b/test/unit/properties.test.ts @@ -133,6 +133,7 @@ describe('getProperties', () => { options: { 'sonar.projectKey': 'use-this-project-key', 'sonar.scanner.os': 'some-os', + 'sonar.working.directory': '.override', }, }, projectHandler.getStartTime(), @@ -150,6 +151,7 @@ describe('getProperties', () => { 'sonar.projectVersion': '1.0-SNAPSHOT', 'sonar.sources': 'the-sources', 'sonar.scanner.os': 'some-os', + 'sonar.working.directory': '.override', }); }); From 1ec2094ac17b848184f9da862aaaba006ccd9dd6 Mon Sep 17 00:00:00 2001 From: 7PH Date: Fri, 29 Nov 2024 15:04:49 +0100 Subject: [PATCH 2/2] SCANNPM-49 Preserve compatibility with CLI Scanner --- src/constants.ts | 2 +- test/unit/file.test.ts | 4 +--- test/unit/java.test.ts | 2 +- test/unit/scanner-engine.test.ts | 2 +- 4 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/constants.ts b/src/constants.ts index ec3c597..6298985 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -33,7 +33,7 @@ export const SONAR_DIR_DEFAULT = '.sonar'; export const SONAR_CACHE_DIR = 'cache'; -export const UNARCHIVE_SUFFIX = '_extracted'; +export const UNARCHIVE_SUFFIX = '_unzip'; export const SONAR_SCANNER_ALIAS = 'SonarScanner Engine'; export const JRE_ALIAS = 'JRE'; diff --git a/test/unit/file.test.ts b/test/unit/file.test.ts index 996993f..f567c48 100644 --- a/test/unit/file.test.ts +++ b/test/unit/file.test.ts @@ -256,9 +256,7 @@ describe('file', () => { expect(fsExtra.mkdirSync).not.toHaveBeenCalled(); expect(archivePath).toEqual(path.join('/', 'sonar', 'cache', 'md5_test', 'file.txt')); - expect(unarchivePath).toEqual( - path.join('/', 'sonar', 'cache', 'md5_test', 'file.txt_extracted'), - ); + expect(unarchivePath).toEqual(path.join('/', 'sonar', 'cache', 'md5_test', 'file.txt_unzip')); }); it('should create the parent cache directory if it does not exist', async () => { jest.spyOn(fsExtra, 'existsSync').mockImplementationOnce(() => false); diff --git a/test/unit/java.test.ts b/test/unit/java.test.ts index 4b72dd8..f0fdd0c 100644 --- a/test/unit/java.test.ts +++ b/test/unit/java.test.ts @@ -157,7 +157,7 @@ describe('java', () => { describe('when the JRE is not cached', () => { const mockCacheDirectories = { archivePath: '/mocked-archive-path', - unarchivePath: '/mocked-archive-path_extracted', + unarchivePath: '/mocked-archive-path_unzip', }; beforeEach(() => { jest.spyOn(file, 'getCacheFileLocation').mockResolvedValue(null); diff --git a/test/unit/scanner-engine.test.ts b/test/unit/scanner-engine.test.ts index 22e68db..79797a8 100644 --- a/test/unit/scanner-engine.test.ts +++ b/test/unit/scanner-engine.test.ts @@ -41,7 +41,7 @@ const MOCKED_PROPERTIES: ScannerProperties = { const MOCK_CACHE_DIRECTORIES = { archivePath: 'mocked/path/to/sonar/cache/sha_test/scanner-engine-1.2.3.jar', - unarchivePath: 'mocked/path/to/sonar/cache/sha_test/scanner-engine-1.2.3.jar_extracted', + unarchivePath: 'mocked/path/to/sonar/cache/sha_test/scanner-engine-1.2.3.jar_unzip', }; jest.mock('../../src/constants', () => ({ ...jest.requireActual('../../src/constants'),