mirror of
https://github.com/docker/metadata-action.git
synced 2026-03-07 00:33:06 +08:00
Compare commits
11 Commits
e7819bbe91
...
c255c9c200
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c255c9c200 | ||
|
|
e8d0bd119c | ||
|
|
302938f99d | ||
|
|
5a81aee75f | ||
|
|
c769610e5c | ||
|
|
f0f930b111 | ||
|
|
f4771c2b1f | ||
|
|
538feedf47 | ||
|
|
2c6e6d9d3b | ||
|
|
8fd476a5a7 | ||
|
|
a33d385eb1 |
@ -1,5 +1,4 @@
|
||||
import {beforeEach, describe, expect, test, it, vi} from 'vitest';
|
||||
import {Context} from '@actions/github/lib/context.js';
|
||||
import {Git} from '@docker/actions-toolkit/lib/git.js';
|
||||
import {Toolkit} from '@docker/actions-toolkit/lib/toolkit.js';
|
||||
|
||||
@ -98,11 +97,11 @@ describe('getContext', () => {
|
||||
expect(ctx.commitDate).toEqual(new Date('2024-11-13T13:42:28.000Z'));
|
||||
});
|
||||
it('git', async () => {
|
||||
vi.spyOn(Git, 'context').mockImplementation((): Promise<Context> => {
|
||||
vi.spyOn(Git, 'context').mockImplementation((): Promise<context.Context> => {
|
||||
return Promise.resolve({
|
||||
ref: 'refs/heads/git-test',
|
||||
sha: 'git-test-sha'
|
||||
} as Context);
|
||||
} as context.Context);
|
||||
});
|
||||
vi.spyOn(Git, 'commitDate').mockImplementation(async (): Promise<Date> => {
|
||||
return new Date('2023-01-01T13:42:28.000Z');
|
||||
|
||||
@ -3,12 +3,12 @@ import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
import * as dotenv from 'dotenv';
|
||||
|
||||
import {Context} from '@actions/github/lib/context.js';
|
||||
import {GitHub} from '@docker/actions-toolkit/lib/github.js';
|
||||
import {GitHub} from '@docker/actions-toolkit/lib/github/github.js';
|
||||
import {Toolkit} from '@docker/actions-toolkit/lib/toolkit.js';
|
||||
import {GitHubRepo} from '@docker/actions-toolkit/lib/types/github.js';
|
||||
import {GitHubRepo} from '@docker/actions-toolkit/lib/types/github/github.js';
|
||||
|
||||
import {ContextSource, getContext, getInputs, Inputs} from '../src/context.js';
|
||||
import type {Context as MetadataContext} from '../src/context.js';
|
||||
import {Meta, Version} from '../src/meta.js';
|
||||
|
||||
import repoFixture from './fixtures/repo.json' with {type: 'json'};
|
||||
@ -38,16 +38,28 @@ beforeEach(() => {
|
||||
delete process.env[key];
|
||||
}
|
||||
});
|
||||
|
||||
vi.spyOn(GitHub, 'context', 'get').mockImplementation((): Context => {
|
||||
//@ts-expect-error partial info
|
||||
vi.spyOn(GitHub, 'context', 'get').mockImplementation((): MetadataContext => {
|
||||
const repository = process.env.GITHUB_REPOSITORY || 'docker/repo';
|
||||
const [owner, repo] = repository.includes('/') ? repository.split('/', 2) : ['docker', 'repo'];
|
||||
const eventPath = process.env.GITHUB_EVENT_PATH;
|
||||
const payload = eventPath && fs.existsSync(eventPath) ? JSON.parse(fs.readFileSync(eventPath, 'utf8')) : {};
|
||||
return {
|
||||
...new Context(),
|
||||
repo: {
|
||||
owner: 'docker',
|
||||
repo: 'repo'
|
||||
}
|
||||
};
|
||||
payload,
|
||||
eventName: process.env.GITHUB_EVENT_NAME || '',
|
||||
sha: process.env.GITHUB_SHA || '',
|
||||
ref: process.env.GITHUB_REF || '',
|
||||
workflow: process.env.GITHUB_WORKFLOW || '',
|
||||
action: process.env.GITHUB_ACTION || '',
|
||||
actor: process.env.GITHUB_ACTOR || '',
|
||||
job: process.env.GITHUB_JOB || '',
|
||||
runAttempt: +(process.env.GITHUB_RUN_ATTEMPT || 1),
|
||||
runNumber: +(process.env.GITHUB_RUN_NUMBER || 0),
|
||||
runId: +(process.env.GITHUB_RUN_ID || 0),
|
||||
apiUrl: process.env.GITHUB_API_URL || 'https://api.github.com',
|
||||
serverUrl: process.env.GITHUB_SERVER_URL || 'https://github.com',
|
||||
graphqlUrl: process.env.GITHUB_GRAPHQL_URL || 'https://api.github.com/graphql',
|
||||
repo: {owner, repo}
|
||||
} as MetadataContext;
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@ -1,32 +1,11 @@
|
||||
import fs from 'node:fs';
|
||||
import {createRequire} from 'node:module';
|
||||
import os from 'node:os';
|
||||
import path from 'node:path';
|
||||
import {vi} from 'vitest';
|
||||
|
||||
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'docker-metadata-action-'));
|
||||
|
||||
process.env = Object.assign({}, process.env, {
|
||||
TEMP: tmpDir,
|
||||
GITHUB_REPOSITORY: 'docker/metadata-action',
|
||||
RUNNER_TEMP: path.join(tmpDir, 'runner-temp'),
|
||||
RUNNER_TOOL_CACHE: path.join(tmpDir, 'runner-tool-cache')
|
||||
});
|
||||
|
||||
const require = createRequire(import.meta.url);
|
||||
type RequireCacheEntry = NonNullable<(typeof require.cache)[string]>;
|
||||
|
||||
const githubMock = {
|
||||
context: {
|
||||
repo: {
|
||||
owner: 'docker',
|
||||
repo: 'actions-toolkit'
|
||||
},
|
||||
ref: 'refs/heads/dev',
|
||||
sha: '5f3331d7f7044c18ca9f12c77d961c4d7cf3276a',
|
||||
runId: 2188748038,
|
||||
runNumber: 15,
|
||||
payload: {
|
||||
const githubPayload = {
|
||||
after: '860c1904a1ce19322e91ac35af1ab07466440c37',
|
||||
base_ref: null,
|
||||
before: '5f3331d7f7044c18ca9f12c77d961c4d7cf3276a',
|
||||
@ -43,11 +22,11 @@ const githubMock = {
|
||||
username: 'crazy-max'
|
||||
},
|
||||
distinct: true,
|
||||
id: '860c1904a1ce19322e91ac35af1ab07466440c37',
|
||||
id: '5f3331d7f7044c18ca9f12c77d961c4d7cf3276a',
|
||||
message: 'hello dev',
|
||||
timestamp: '2022-04-19T11:27:24+02:00',
|
||||
timestamp: '2024-11-13T13:42:28Z',
|
||||
tree_id: 'd2c60af597e863787d2d27f569e30495b0b92820',
|
||||
url: 'https://github.com/docker/test-docker-action/commit/860c1904a1ce19322e91ac35af1ab07466440c37'
|
||||
url: 'https://github.com/docker/test-docker-action/commit/5f3331d7f7044c18ca9f12c77d961c4d7cf3276a'
|
||||
}
|
||||
],
|
||||
compare: 'https://github.com/docker/test-docker-action/compare/5f3331d7f704...860c1904a1ce',
|
||||
@ -66,11 +45,11 @@ const githubMock = {
|
||||
username: 'crazy-max'
|
||||
},
|
||||
distinct: true,
|
||||
id: '860c1904a1ce19322e91ac35af1ab07466440c37',
|
||||
id: '5f3331d7f7044c18ca9f12c77d961c4d7cf3276a',
|
||||
message: 'hello dev',
|
||||
timestamp: '2022-04-19T11:27:24+02:00',
|
||||
timestamp: '2024-11-13T13:42:28Z',
|
||||
tree_id: 'd2c60af597e863787d2d27f569e30495b0b92820',
|
||||
url: 'https://github.com/docker/test-docker-action/commit/860c1904a1ce19322e91ac35af1ab07466440c37'
|
||||
url: 'https://github.com/docker/test-docker-action/commit/5f3331d7f7044c18ca9f12c77d961c4d7cf3276a'
|
||||
},
|
||||
organization: {
|
||||
avatar_url: 'https://avatars.githubusercontent.com/u/5429470?v=4',
|
||||
@ -220,12 +199,26 @@ const githubMock = {
|
||||
type: 'User',
|
||||
url: 'https://api.github.com/users/crazy-max'
|
||||
}
|
||||
}
|
||||
},
|
||||
getOctokit: () => ({
|
||||
rest: {
|
||||
repos: {
|
||||
getCommit: async () => ({
|
||||
};
|
||||
|
||||
const githubEventPath = path.join(tmpDir, 'github-event.json');
|
||||
fs.writeFileSync(githubEventPath, JSON.stringify(githubPayload));
|
||||
|
||||
process.env = Object.assign({}, process.env, {
|
||||
TEMP: tmpDir,
|
||||
GITHUB_REPOSITORY: 'docker/metadata-action',
|
||||
GITHUB_REF: 'refs/heads/dev',
|
||||
GITHUB_RUN_ID: '2188748038',
|
||||
GITHUB_RUN_ATTEMPT: '1',
|
||||
GITHUB_RUN_NUMBER: '15',
|
||||
GITHUB_SHA: '5f3331d7f7044c18ca9f12c77d961c4d7cf3276a',
|
||||
GITHUB_EVENT_PATH: githubEventPath,
|
||||
RUNNER_TEMP: path.join(tmpDir, 'runner-temp'),
|
||||
RUNNER_TOOL_CACHE: path.join(tmpDir, 'runner-tool-cache')
|
||||
});
|
||||
|
||||
const getCommitMock = vi.hoisted(() =>
|
||||
vi.fn(async () => ({
|
||||
data: {
|
||||
commit: {
|
||||
committer: {
|
||||
@ -233,27 +226,27 @@ const githubMock = {
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
}))
|
||||
);
|
||||
|
||||
const getOctokitMock = vi.hoisted(() =>
|
||||
vi.fn(() => ({
|
||||
rest: {
|
||||
repos: {
|
||||
getCommit: getCommitMock
|
||||
}
|
||||
}
|
||||
})
|
||||
}))
|
||||
);
|
||||
|
||||
vi.mock('@actions/github', async importOriginal => {
|
||||
const actual = await importOriginal<typeof import('@actions/github')>();
|
||||
return {
|
||||
...actual,
|
||||
context: {
|
||||
...actual.context,
|
||||
payload: githubPayload
|
||||
},
|
||||
getOctokit: getOctokitMock
|
||||
};
|
||||
|
||||
vi.mock('@actions/github', () => githubMock);
|
||||
|
||||
for (const mod of ['@actions/github', '@docker/actions-toolkit/node_modules/@actions/github']) {
|
||||
try {
|
||||
const resolved = require.resolve(mod);
|
||||
vi.doMock(resolved, () => githubMock);
|
||||
require.cache[resolved] = {
|
||||
id: resolved,
|
||||
filename: resolved,
|
||||
loaded: true,
|
||||
exports: githubMock,
|
||||
children: [],
|
||||
paths: []
|
||||
} as RequireCacheEntry;
|
||||
} catch {
|
||||
// Ignore unresolved optional paths; vi.mock handles module-level mocking.
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
141
dist/index.js
generated
vendored
141
dist/index.js
generated
vendored
File diff suppressed because one or more lines are too long
2
dist/index.js.map
generated
vendored
2
dist/index.js.map
generated
vendored
File diff suppressed because one or more lines are too long
@ -25,14 +25,14 @@
|
||||
"packageManager": "yarn@4.9.2",
|
||||
"dependencies": {
|
||||
"@actions/core": "^3.0.0",
|
||||
"@actions/github": "^6.0.1",
|
||||
"@docker/actions-toolkit": "^0.68.0",
|
||||
"@actions/github": "^9.0.0",
|
||||
"@docker/actions-toolkit": "^0.77.0",
|
||||
"@renovate/pep440": "^1.0.0",
|
||||
"csv-parse": "^6.1.0",
|
||||
"handlebars": "^4.7.8",
|
||||
"moment": "^2.30.1",
|
||||
"moment-timezone": "^0.6.0",
|
||||
"semver": "^7.7.3"
|
||||
"semver": "^7.7.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@eslint/js": "^9.39.3",
|
||||
|
||||
@ -1,11 +1,12 @@
|
||||
import * as core from '@actions/core';
|
||||
|
||||
import {Context as GithubContext} from '@actions/github/lib/context.js';
|
||||
import {Util} from '@docker/actions-toolkit/lib/util.js';
|
||||
import {Git} from '@docker/actions-toolkit/lib/git.js';
|
||||
import {GitHub} from '@docker/actions-toolkit/lib/github.js';
|
||||
import {GitHub} from '@docker/actions-toolkit/lib/github/github.js';
|
||||
import {Toolkit} from '@docker/actions-toolkit/lib/toolkit.js';
|
||||
|
||||
type GithubContext = typeof GitHub.context;
|
||||
|
||||
export interface Context extends GithubContext {
|
||||
commitDate: Date;
|
||||
}
|
||||
|
||||
@ -6,7 +6,7 @@ import * as pep440 from '@renovate/pep440';
|
||||
import * as semver from 'semver';
|
||||
import * as core from '@actions/core';
|
||||
import {Context as ToolkitContext} from '@docker/actions-toolkit/lib/context.js';
|
||||
import {GitHubRepo} from '@docker/actions-toolkit/lib/types/github.js';
|
||||
import {GitHubRepo} from '@docker/actions-toolkit/lib/types/github/github.js';
|
||||
|
||||
import {Inputs, Context} from './context.js';
|
||||
import * as icl from './image.js';
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user