Skip to content

Commit

Permalink
Make depend only on intermediate table for generateReport to make tes…
Browse files Browse the repository at this point in the history
…t easy
  • Loading branch information
kachick committed May 30, 2024
1 parent 61900d1 commit 371a65e
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 46 deletions.
8 changes: 5 additions & 3 deletions dist/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -32346,10 +32346,12 @@ function summarize(check, trigger) {
runConclusion: run2.conclusion
};
}
function generateReport(checks, trigger, elapsed, { waitList, skipList, shouldSkipSameWorkflow }) {
const summaries = checks.map((check) => summarize(check, trigger)).toSorted(
function getSummaries(checks, trigger) {
return checks.map((check) => summarize(check, trigger)).toSorted(
(a2, b2) => join(a2.workflowPath, a2.jobName).localeCompare(join(b2.workflowPath, b2.jobName))
);
}
function generateReport(summaries, trigger, elapsed, { waitList, skipList, shouldSkipSameWorkflow }) {
const others = summaries.filter((summary) => !(summary.isSameWorkflow && trigger.jobName === summary.jobName));
let filtered = others.filter((summary) => !(summary.isSameWorkflow && shouldSkipSameWorkflow));
if (waitList.length > 0) {
Expand Down Expand Up @@ -32491,7 +32493,7 @@ async function run() {
(0, import_core3.debug)(JSON.stringify({ label: "rawdata", checks, elapsed }, null, 2));
}
const report = generateReport(
checks,
getSummaries(checks, trigger),
trigger,
elapsed,
options
Expand Down
4 changes: 2 additions & 2 deletions src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ const colorize = (body: string, ok: boolean) => (ok ? succeededMessage(body) : e

import { parseInput } from './input.ts';
import { fetchChecks } from './github-api.ts';
import { generateReport } from './report.ts';
import { generateReport, getSummaries } from './report.ts';
import { readableDuration, wait, getIdleMilliseconds } from './wait.ts';
import { Temporal } from 'temporal-polyfill';

Expand Down Expand Up @@ -57,7 +57,7 @@ async function run(): Promise<void> {
debug(JSON.stringify({ label: 'rawdata', checks, elapsed }, null, 2));
}
const report = generateReport(
checks,
getSummaries(checks, trigger),
trigger,
elapsed,
options,
Expand Down
46 changes: 24 additions & 22 deletions src/report.test.ts
Original file line number Diff line number Diff line change
@@ -1,22 +1,23 @@
import test from 'node:test';
import assert from 'node:assert';
import { checks8679817057, checks92810686811WaitSuccessPolling1 } from './snapshot.ts';
import { Report, generateReport } from './report.ts';
import { Report, generateReport, getSummaries } from './report.ts';
import { omit } from './util.ts';
import { Temporal } from 'temporal-polyfill';

test('wait-list', async (t) => {
await t.test('basics', (_t) => {
const trigger = {
owner: 'kachick',
repo: 'wait-other-jobs',
'runId': 8679817057,
ref: '760074f4f419b55cb864030c29ece58a689a42a2',
jobName: 'wait-list',
eventName: 'pull_request',
};
const report = generateReport(
checks8679817057,
{
owner: 'kachick',
repo: 'wait-other-jobs',
'runId': 8679817057,
ref: '760074f4f419b55cb864030c29ece58a689a42a2',
jobName: 'wait-list',
eventName: 'pull_request',
},
getSummaries(checks8679817057, trigger),
trigger,
Temporal.Duration.from({ seconds: 420 }),
{
waitList: [
Expand Down Expand Up @@ -61,7 +62,7 @@ test('wait-list', async (t) => {
});
await t.test('required slowstarting job and set enough grace period', (_t) => {
const report = generateReport(
checks92810686811WaitSuccessPolling1,
getSummaries(checks92810686811WaitSuccessPolling1, trigger),
trigger,
Temporal.Duration.from({ milliseconds: Math.ceil(986.9570700004697) }),
{
Expand Down Expand Up @@ -94,7 +95,7 @@ test('wait-list', async (t) => {

await t.test('slowstarting job has been expired to the given period', (_t) => {
const report = generateReport(
checks92810686811WaitSuccessPolling1,
getSummaries(checks92810686811WaitSuccessPolling1, trigger),
trigger,
Temporal.Duration.from({ seconds: 60, milliseconds: 1 }),
{
Expand Down Expand Up @@ -127,7 +128,7 @@ test('wait-list', async (t) => {

await t.test('judges as expired for same durations', (_t) => {
const report = generateReport(
checks92810686811WaitSuccessPolling1,
getSummaries(checks92810686811WaitSuccessPolling1, trigger),
trigger,
Temporal.Duration.from({ seconds: 60 }),
{
Expand Down Expand Up @@ -161,16 +162,17 @@ test('wait-list', async (t) => {
});

test('skip-list', () => {
const trigger = {
owner: 'kachick',
repo: 'wait-other-jobs',
'runId': 8679817057,
ref: '760074f4f419b55cb864030c29ece58a689a42a2',
jobName: 'skip-list',
eventName: 'pull_request',
};
const report = generateReport(
checks8679817057,
{
owner: 'kachick',
repo: 'wait-other-jobs',
'runId': 8679817057,
ref: '760074f4f419b55cb864030c29ece58a689a42a2',
jobName: 'skip-list',
eventName: 'pull_request',
},
getSummaries(checks8679817057, trigger),
trigger,
Temporal.Duration.from({ seconds: 420 }),
{
waitList: [],
Expand Down
40 changes: 21 additions & 19 deletions src/report.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,20 +20,6 @@ interface Summary {
runConclusion: CheckRun['conclusion']; // null if status is in progress
}

interface Acceptable {
conclusion: 'acceptable';
}

interface Bad {
conclusion: 'bad';
}

export type Report = (Acceptable | Bad) & {
progress: 'in_progress' | 'done';
description: string;
summaries: Summary[];
};

function summarize(check: Check, trigger: Trigger): Summary {
const { checkRun: run, checkSuite: suite, workflow, workflowRun } = check;
return {
Expand All @@ -57,16 +43,32 @@ function summarize(check: Check, trigger: Trigger): Summary {
};
}

export function getSummaries(checks: readonly Check[], trigger: Trigger): Summary[] {
return checks.map((check) => summarize(check, trigger)).toSorted((a, b) =>
join(a.workflowPath, a.jobName).localeCompare(join(b.workflowPath, b.jobName))
);
}

interface Acceptable {
conclusion: 'acceptable';
}

interface Bad {
conclusion: 'bad';
}

export type Report = (Acceptable | Bad) & {
progress: 'in_progress' | 'done';
description: string;
summaries: Summary[];
};

export function generateReport(
checks: readonly Check[],
summaries: readonly Summary[],
trigger: Trigger,
elapsed: Temporal.Duration,
{ waitList, skipList, shouldSkipSameWorkflow }: Pick<Options, 'waitList' | 'skipList' | 'shouldSkipSameWorkflow'>,
): Report {
const summaries = checks.map((check) => summarize(check, trigger)).toSorted((a, b) =>
join(a.workflowPath, a.jobName).localeCompare(join(b.workflowPath, b.jobName))
);

const others = summaries.filter((summary) => !(summary.isSameWorkflow && (trigger.jobName === summary.jobName)));
let filtered = others.filter((summary) => !(summary.isSameWorkflow && shouldSkipSameWorkflow));

Expand Down

0 comments on commit 371a65e

Please sign in to comment.