Skip to content

Commit 3b2ae8d

Browse files
Migrate to esm (#167)
* Bump the npm-dependencies group across 1 directory with 11 updates Bumps the npm-dependencies group with 11 updates in the / directory: | Package | From | To | | --- | --- | --- | | [@actions/artifact](https://github.com/actions/toolkit/tree/HEAD/packages/artifact) | `5.0.1` | `6.1.0` | | [@actions/core](https://github.com/actions/toolkit/tree/HEAD/packages/core) | `2.0.1` | `3.0.0` | | [@actions/github](https://github.com/actions/toolkit/tree/HEAD/packages/github) | `6.0.1` | `9.0.0` | | [@actions/glob](https://github.com/actions/toolkit/tree/HEAD/packages/glob) | `0.5.0` | `0.6.1` | | [@actions/tool-cache](https://github.com/actions/toolkit/tree/HEAD/packages/tool-cache) | `2.0.2` | `4.0.0` | | [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) | `5.3.3` | `5.3.6` | | [properties-reader](https://github.com/steveukx/properties) | `2.3.0` | `3.0.1` | | [typed-rest-client](https://github.com/Microsoft/typed-rest-client) | `2.1.0` | `2.2.0` | | [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `25.0.3` | `25.2.3` | | [nock](https://github.com/nock/nock) | `14.0.10` | `14.0.11` | | [prettier](https://github.com/prettier/prettier) | `3.7.4` | `3.8.1` | Updates `@actions/artifact` from 5.0.1 to 6.1.0 - [Changelog](https://github.com/actions/toolkit/blob/main/packages/artifact/RELEASES.md) - [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/artifact) Updates `@actions/core` from 2.0.1 to 3.0.0 - [Changelog](https://github.com/actions/toolkit/blob/main/packages/core/RELEASES.md) - [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/core) Updates `@actions/github` from 6.0.1 to 9.0.0 - [Changelog](https://github.com/actions/toolkit/blob/main/packages/github/RELEASES.md) - [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/github) Updates `@actions/glob` from 0.5.0 to 0.6.1 - [Changelog](https://github.com/actions/toolkit/blob/main/packages/glob/RELEASES.md) - [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/glob) Updates `@actions/tool-cache` from 2.0.2 to 4.0.0 - [Changelog](https://github.com/actions/toolkit/blob/main/packages/tool-cache/RELEASES.md) - [Commits](https://github.com/actions/toolkit/commits/@actions/cache@4.0.0/packages/tool-cache) Updates `fast-xml-parser` from 5.3.3 to 5.3.6 - [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases) - [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md) - [Commits](NaturalIntelligence/fast-xml-parser@v5.3.3...v5.3.6) Updates `properties-reader` from 2.3.0 to 3.0.1 - [Release notes](https://github.com/steveukx/properties/releases) - [Changelog](https://github.com/steveukx/properties/blob/main/CHANGELOG.md) - [Commits](steveukx/properties@v2.3.0...v3.0.1) Updates `typed-rest-client` from 2.1.0 to 2.2.0 - [Release notes](https://github.com/Microsoft/typed-rest-client/releases) - [Commits](https://github.com/Microsoft/typed-rest-client/commits) Updates `@types/node` from 25.0.3 to 25.2.3 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) Updates `nock` from 14.0.10 to 14.0.11 - [Release notes](https://github.com/nock/nock/releases) - [Changelog](https://github.com/nock/nock/blob/main/CHANGELOG.md) - [Commits](nock/nock@v14.0.10...v14.0.11) Updates `prettier` from 3.7.4 to 3.8.1 - [Release notes](https://github.com/prettier/prettier/releases) - [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md) - [Commits](prettier/prettier@3.7.4...3.8.1) --- updated-dependencies: - dependency-name: "@actions/artifact" dependency-version: 6.1.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: npm-dependencies - dependency-name: "@actions/core" dependency-version: 3.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: npm-dependencies - dependency-name: "@actions/github" dependency-version: 9.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: npm-dependencies - dependency-name: "@actions/glob" dependency-version: 0.6.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: npm-dependencies - dependency-name: "@actions/tool-cache" dependency-version: 4.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: npm-dependencies - dependency-name: fast-xml-parser dependency-version: 5.3.6 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: npm-dependencies - dependency-name: properties-reader dependency-version: 3.0.1 dependency-type: direct:production update-type: version-update:semver-major dependency-group: npm-dependencies - dependency-name: typed-rest-client dependency-version: 2.2.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: npm-dependencies - dependency-name: "@types/node" dependency-version: 25.2.3 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: npm-dependencies - dependency-name: nock dependency-version: 14.0.11 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: npm-dependencies - dependency-name: prettier dependency-version: 3.8.1 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: npm-dependencies ... Signed-off-by: dependabot[bot] <support@github.com> * Migrate to ESM * Fix auth test * Fix line duplication --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
1 parent f5b1bc0 commit 3b2ae8d

25 files changed

Lines changed: 346952 additions & 355980 deletions

File tree

.eslintrc.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
"@typescript-eslint/no-floating-promises": "error",
1212
"eslint-comments/no-use": "off",
1313
"import/no-namespace": "off",
14+
"import/no-unresolved": "off",
15+
"import/named": "off",
1416
"i18n-text/no-en": "off",
1517
"no-unused-vars": "off",
1618
"no-shadow": "off",

build-scan-shared/__tests__/auth/auth.test.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,16 @@
1+
import {jest} from '@jest/globals'
12
import nock from 'nock'
23

34
import * as auth from '../../src/auth/auth'
45

56
describe('auth', () => {
6-
let restoreEnv: jest.ReplaceProperty<NodeJS.ProcessEnv>
7-
87
beforeEach(() => {
98
// Remove access keys from environment not to interfere with test results.
10-
const newEnv = {...process.env}
11-
delete newEnv[auth.ENV_KEY_DEVELOCITY_ACCESS_KEY]
12-
delete newEnv[auth.ENV_KEY_GRADLE_ENTERPRISE_ACCESS_KEY]
13-
restoreEnv = jest.replaceProperty(process, 'env', newEnv)
9+
process.env[auth.ENV_KEY_DEVELOCITY_ACCESS_KEY] = ''
10+
process.env[auth.ENV_KEY_GRADLE_ENTERPRISE_ACCESS_KEY] = ''
1411
})
1512

1613
afterEach(() => {
17-
restoreEnv.restore()
1814
jest.clearAllMocks()
1915
})
2016

Lines changed: 60 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,40 @@
1-
import * as glob from '@actions/glob'
2-
import * as exec from '@actions/exec'
1+
import {jest} from '@jest/globals'
32

4-
process.env['RUNNER_TEMP'] = '/tmp'
3+
const mockGlob = jest.fn<() => Promise<string[]>>()
4+
const mockCreate = jest.fn<(patterns: string, options?: object) => Promise<{glob: () => Promise<string[]>}>>()
5+
6+
jest.unstable_mockModule('@actions/glob', () => ({
7+
create: mockCreate
8+
}))
9+
10+
function setupGlob(matchedFiles: string[]): void {
11+
mockGlob.mockResolvedValue(matchedFiles)
12+
mockCreate.mockResolvedValue({glob: mockGlob})
13+
}
14+
15+
const mockExecOutput = jest.fn<() => Promise<object>>()
16+
17+
jest.unstable_mockModule('@actions/exec', () => ({
18+
getExecOutput: mockExecOutput
19+
}))
20+
21+
jest.unstable_mockModule('../../src/utils/io', () => ({
22+
existsSync: jest.fn().mockReturnValue(true),
23+
writeContentToFileSync: jest.fn()
24+
}))
525

6-
import * as github from '@actions/github'
7-
import * as maven from '../../src/buildTool/maven'
8-
import * as io from '../../src/utils/io'
26+
process.env['RUNNER_TEMP'] = '/tmp'
927

10-
const buildTool = maven.mavenBuildTool
28+
const {mavenBuildTool} = await import('../../src/buildTool/maven')
1129

1230
describe('publish', () => {
13-
let execMock: any
1431
let createPublisherProjectMock: any
1532
let createPluginDescriptorMock: any
1633

1734
beforeEach(() => {
18-
Object.defineProperty(github, 'context', {
19-
value: {
20-
repo: {
21-
owner: 'foo',
22-
repo: 'bar'
23-
},
24-
issue: {
25-
number: 42
26-
}
27-
}
28-
})
29-
createPublisherProjectMock = jest.spyOn(buildTool, 'createPublisherProjectStructure').mockReturnValue()
35+
createPublisherProjectMock = jest.spyOn(mavenBuildTool, 'createPublisherProjectStructure').mockReturnValue()
3036
createPluginDescriptorMock = jest
31-
.spyOn(buildTool, 'createPluginDescriptorFileWithCurrentVersion')
37+
.spyOn(mavenBuildTool, 'createPluginDescriptorFileWithCurrentVersion')
3238
.mockReturnValue()
3339
})
3440

@@ -38,78 +44,69 @@ describe('publish', () => {
3844

3945
it('Publish build scan succeeds', async () => {
4046
// given
41-
jest.spyOn(io, 'existsSync').mockReturnValue(true)
42-
execMock = jest
43-
.spyOn(exec, 'getExecOutput')
47+
mockExecOutput
4448
.mockReturnValueOnce(Promise.resolve({stderr: '', exitCode: 0, stdout: 'Java 1.0'}))
4549
.mockReturnValueOnce(Promise.resolve({stderr: '', exitCode: 0, stdout: 'Maven 1.0'}))
4650
.mockReturnValueOnce(Promise.resolve({stderr: '', exitCode: 0, stdout: 'Build Successful'}))
4751
.mockReturnValueOnce(Promise.resolve({stderr: '', exitCode: 0, stdout: 'Build Successful'}))
48-
jest.spyOn(glob, 'create').mockReturnValue(
49-
Promise.resolve({
50-
// @ts-ignore
51-
glob() {
52-
return [
53-
'/home/foo/.m2/build-scan-data/1.42/previous/abcdef/scan.scan',
54-
'/home/foo/.m2/build-scan-data/1.42/previous/ghijkl/scan.scan'
55-
]
56-
}
57-
})
58-
)
52+
setupGlob([
53+
'/home/foo/.m2/build-scan-data/1.42/previous/abcdef/scan.scan',
54+
'/home/foo/.m2/build-scan-data/1.42/previous/ghijkl/scan.scan'
55+
])
5956

6057
// when
61-
await buildTool.buildScanPublish()
58+
await mavenBuildTool.buildScanPublish()
6259

6360
// then
6461
expect(createPublisherProjectMock).toHaveBeenCalledTimes(1)
6562
expect(createPluginDescriptorMock).toHaveBeenCalledTimes(2)
66-
expect(execMock).toHaveBeenCalledTimes(4)
63+
expect(mockExecOutput).toHaveBeenCalledTimes(4)
6764
})
6865

69-
it('Publish build scan does nothing when java command fails', async () => {
66+
it('Publish build scan throws an error when java command fails', async () => {
7067
// given
71-
execMock = jest
72-
.spyOn(exec, 'getExecOutput')
73-
.mockReturnValueOnce(Promise.resolve({stderr: 'java not found', exitCode: 1, stdout: ''}))
68+
mockExecOutput.mockReturnValueOnce(Promise.resolve({stderr: 'java not found', exitCode: 1, stdout: ''}))
69+
setupGlob([
70+
'/home/foo/.m2/build-scan-data/1.42/previous/abcdef/scan.scan',
71+
'/home/foo/.m2/build-scan-data/1.42/previous/ghijkl/scan.scan'
72+
])
7473

7574
// when / then
76-
await expect(async () => buildTool.buildScanPublish()).rejects.toThrow(Error)
75+
await expect(async () => mavenBuildTool.buildScanPublish()).rejects.toThrow(Error)
7776
})
7877

79-
it('Publish build scan does nothing when maven version command fails', async () => {
78+
it('Publish build scan throws an error when maven version command fails', async () => {
8079
// given
81-
execMock = jest
82-
.spyOn(exec, 'getExecOutput')
80+
mockExecOutput
8381
.mockReturnValueOnce(Promise.resolve({stderr: '', exitCode: 0, stdout: 'Java 1.0'}))
8482
.mockReturnValueOnce(Promise.resolve({stderr: 'mvn not found', exitCode: 1, stdout: ''}))
83+
setupGlob([
84+
'/home/foo/.m2/build-scan-data/1.42/previous/abcdef/scan.scan',
85+
'/home/foo/.m2/build-scan-data/1.42/previous/ghijkl/scan.scan'
86+
])
8587

8688
// when / then
87-
await expect(async () => buildTool.buildScanPublish()).rejects.toThrow(Error)
89+
await expect(async () => mavenBuildTool.buildScanPublish()).rejects.toThrow(Error)
8890
})
8991

90-
it('Publish build scan does nothing when maven publish command fails', async () => {
92+
it('Publish build scan succeeds when maven publish command fails', async () => {
9193
// given
92-
execMock = jest
93-
.spyOn(exec, 'getExecOutput')
94+
mockExecOutput
9495
.mockReturnValueOnce(Promise.resolve({stderr: '', exitCode: 0, stdout: 'Java 1.0'}))
9596
.mockReturnValueOnce(Promise.resolve({stderr: '', exitCode: 0, stdout: 'Maven 1.0'}))
9697
.mockReturnValueOnce(Promise.resolve({stderr: 'mvn publication failed', exitCode: 1, stdout: ''}))
9798
.mockReturnValueOnce(Promise.resolve({stderr: '', exitCode: 0, stdout: 'Build Scan published'}))
98-
99-
// @ts-ignore
100-
jest.spyOn(glob, 'create').mockReturnValue(
101-
Promise.resolve({
102-
// @ts-ignore
103-
glob() {
104-
return [
105-
'/home/foo/.m2/build-scan-data/1.42/previous/abcdef/scan.scan',
106-
'/home/foo/.m2/build-scan-data/1.42/previous/ghijkl/scan.scan'
107-
]
108-
}
109-
})
110-
)
99+
setupGlob([
100+
'/home/foo/.m2/build-scan-data/1.42/previous/abcdef/scan.scan',
101+
'/home/foo/.m2/build-scan-data/1.42/previous/ghijkl/scan.scan'
102+
])
111103

112104
// when / then
113-
await buildTool.buildScanPublish()
105+
await mavenBuildTool.buildScanPublish()
106+
107+
// then
108+
expect(createPublisherProjectMock).toHaveBeenCalledTimes(1)
109+
expect(createPluginDescriptorMock).toHaveBeenCalledTimes(2)
110+
expect(mockExecOutput).toHaveBeenCalledTimes(4)
114111
})
115112
})

build-scan-shared/__tests__/metadata/load.test.ts

Lines changed: 31 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,83 +1,60 @@
1-
import * as glob from '@actions/glob'
2-
import * as PropertiesReader from 'properties-reader'
1+
import {jest} from '@jest/globals'
32

4-
import * as load from '../../src/metadata/load'
5-
import * as props from '../../src/metadata/properties'
6-
import {BuildToolType} from '../../src/buildTool/common'
3+
const mockGlob = jest.fn<() => Promise<string[]>>()
4+
const mockCreate = jest.fn<(patterns: string, options?: object) => Promise<{glob: () => Promise<string[]>}>>()
75

8-
const loadMock = jest.spyOn(load, 'loadJobMetadata')
6+
jest.unstable_mockModule('@actions/glob', () => ({
7+
create: mockCreate
8+
}))
9+
10+
function setupGlob(matchedFiles: string[]): void {
11+
mockGlob.mockResolvedValue(matchedFiles)
12+
mockCreate.mockResolvedValue({glob: mockGlob})
13+
}
914

1015
const mockedPrNumber = 4242
1116

12-
describe('load', () => {
13-
let octokit: any
17+
const mockReader = {
18+
get(): string {
19+
return mockedPrNumber.toString()
20+
}
21+
}
1422

15-
beforeEach(() => {
16-
// @ts-ignore
17-
jest.spyOn(glob, 'create').mockReturnValue(
18-
Promise.resolve({
19-
// @ts-ignore
20-
glob() {
21-
return ['prNumberFilePath']
22-
}
23-
})
24-
)
25-
})
23+
jest.unstable_mockModule('properties-reader', () => ({
24+
default: jest.fn(() => mockReader)
25+
}))
2626

27+
const {loadJobMetadata} = await import('../../src/metadata/load')
28+
const {BuildToolType} = await import('../../src/buildTool/common')
29+
30+
describe('load', () => {
2731
afterEach(() => {
28-
jest.clearAllMocks()
32+
jest.resetAllMocks()
2933
})
3034

3135
it('Load build scan metadata succeeds', async () => {
3236
// given
33-
jest.spyOn(glob, 'create').mockReturnValue(
34-
Promise.resolve({
35-
// @ts-ignore
36-
glob() {
37-
return [
38-
'/home/foo/.m2/build-scan-data/1.42/previous/abcdef/scan.scan',
39-
'/home/foo/.m2/build-scan-data/1.42/previous/ghijkl/scan.scan'
40-
]
41-
}
42-
})
43-
)
44-
const reader: Partial<PropertiesReader.Reader> = {
45-
get(key: string) {
46-
switch (key) {
47-
case 'PR_NUMBER':
48-
return mockedPrNumber
49-
default:
50-
return `value for ${key}`
51-
}
52-
}
53-
}
54-
jest.spyOn(props, 'create').mockImplementation(_ => reader)
37+
setupGlob([
38+
'/home/foo/.m2/build-scan-data/1.42/previous/abcdef/scan.scan',
39+
'/home/foo/.m2/build-scan-data/1.42/previous/ghijkl/scan.scan'
40+
])
5541

5642
// when
57-
const buildScanData = await load.loadJobMetadata(BuildToolType.MAVEN, 'buildScanMetadataDir')
43+
const buildScanData = await loadJobMetadata(BuildToolType.MAVEN, 'buildScanMetadataDir')
5844

5945
// then
60-
expect(loadMock).toHaveReturned()
6146
expect(buildScanData?.builds).toHaveLength(2)
6247
expect(buildScanData?.prNumber).toBe(mockedPrNumber)
6348
})
6449

6550
it('Load build scan metadata does nothing without metadata file', async () => {
6651
// given
67-
jest.spyOn(glob, 'create').mockReturnValue(
68-
Promise.resolve({
69-
// @ts-ignore
70-
glob() {
71-
return []
72-
}
73-
})
74-
)
52+
setupGlob([])
7553

7654
// when
77-
const buildScanData = await load.loadJobMetadata(BuildToolType.MAVEN, 'buildScanMetadataDir')
55+
const buildScanData = await loadJobMetadata(BuildToolType.MAVEN, 'buildScanMetadataDir')
7856

7957
// then
80-
expect(loadMock).toHaveReturned()
8158
expect(buildScanData?.builds).toBeUndefined()
8259
expect(buildScanData?.prNumber).toBeUndefined()
8360
})

0 commit comments

Comments
 (0)