From c4baf3b6ea87d200c47255d0a289cd445ba36916 Mon Sep 17 00:00:00 2001 From: Ludy Date: Tue, 19 Aug 2025 14:37:15 +0200 Subject: [PATCH] Add tests for all_changed and any_changed outputs (#12) * test: add coverage for output flags * push --- __tests__/outputs.test.ts | 46 +++++++++++++++++++++++++++++++++++++++ dist/index.js | 7 +++++- src/main.ts | 8 +++++-- 3 files changed, 58 insertions(+), 3 deletions(-) create mode 100644 __tests__/outputs.test.ts diff --git a/__tests__/outputs.test.ts b/__tests__/outputs.test.ts new file mode 100644 index 0000000..cd8269d --- /dev/null +++ b/__tests__/outputs.test.ts @@ -0,0 +1,46 @@ +import {ChangeStatus} from '../src/file' +import {exportResults} from '../src/main' +import * as core from '@actions/core' + +jest.mock('@actions/core', () => ({ + setOutput: jest.fn(), + startGroup: jest.fn(), + endGroup: jest.fn(), + info: jest.fn() +})) + +describe('all_changed and any_changed outputs', () => { + beforeEach(() => { + jest.clearAllMocks() + }) + + test('reports true when all filters changed', () => { + const results = { + src: [{filename: 'src/file.ts', status: ChangeStatus.Modified}], + docs: [{filename: 'docs/readme.md', status: ChangeStatus.Added}] + } + exportResults(results, 'none') + expect(core.setOutput).toHaveBeenCalledWith('all_changed', true) + expect(core.setOutput).toHaveBeenCalledWith('any_changed', true) + }) + + test('reports false for all_changed when some filters unchanged', () => { + const results = { + src: [{filename: 'src/file.ts', status: ChangeStatus.Modified}], + docs: [] + } + exportResults(results, 'none') + expect(core.setOutput).toHaveBeenCalledWith('all_changed', false) + expect(core.setOutput).toHaveBeenCalledWith('any_changed', true) + }) + + test('reports false for any_changed when no filter changed', () => { + const results = { + src: [], + docs: [] + } + exportResults(results, 'none') + expect(core.setOutput).toHaveBeenCalledWith('all_changed', true) + expect(core.setOutput).toHaveBeenCalledWith('any_changed', false) + }) +}) diff --git a/dist/index.js b/dist/index.js index 93d1e2e..ce91343 100644 --- a/dist/index.js +++ b/dist/index.js @@ -553,6 +553,7 @@ var __importStar = (this && this.__importStar) || function (mod) { return result; }; Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.run = exports.exportResults = void 0; const fs = __importStar(__nccwpck_require__(7147)); const core = __importStar(__nccwpck_require__(2186)); const github = __importStar(__nccwpck_require__(5438)); @@ -595,6 +596,7 @@ async function run() { core.setFailed(getErrorMessage(error)); } } +exports.run = run; function isPathInput(text) { return !(text.includes('\n') || text.includes(':')); } @@ -782,6 +784,7 @@ function exportResults(results, format) { core.info('Cannot set changes output variable - name already used by filter output'); } } +exports.exportResults = exportResults; function serializeExport(files, format) { const fileNames = files.map(file => file.filename); switch (format) { @@ -805,7 +808,9 @@ function getErrorMessage(error) { return error.message; return String(error); } -run(); +if (require.main === require.cache[eval('__filename')]) { + run(); +} /***/ }), diff --git a/src/main.ts b/src/main.ts index f620560..1288206 100644 --- a/src/main.ts +++ b/src/main.ts @@ -228,7 +228,7 @@ async function getChangedFilesFromApi(token: string, pullRequest: PullRequestEve } } -function exportResults(results: FilterResults, format: ExportFormat): void { +export function exportResults(results: FilterResults, format: ExportFormat): void { core.info('Results:') const changes: string[] = [] let anyChanged = false @@ -295,4 +295,8 @@ function getErrorMessage(error: unknown): string { return String(error) } -run() +if (require.main === module) { + run() +} + +export {run}