Fix dirty-checking for workflows that use a Code Block (#3679)

This commit is contained in:
Jonathan Dobson
2025-10-10 06:24:02 -04:00
committed by GitHub
parent e08778993e
commit af23e27822
4 changed files with 63 additions and 2 deletions

View File

@@ -0,0 +1,39 @@
import { deepEqualStringArrays } from "./equality";
import { describe, test, expect } from "vitest";
describe("deepEqualStringArrays", () => {
test("both undefined", () => {
expect(deepEqualStringArrays(undefined, undefined)).toBe(true);
});
test("one undefined, one defined", () => {
expect(deepEqualStringArrays(undefined, ["a"])).toBe(false);
expect(deepEqualStringArrays(["a"], undefined)).toBe(false);
});
test("both null", () => {
expect(deepEqualStringArrays(null, null)).toBe(true);
});
test("one null, one defined", () => {
expect(deepEqualStringArrays(null, ["a"])).toBe(false);
expect(deepEqualStringArrays(["a"], null)).toBe(false);
});
test("different lengths", () => {
expect(deepEqualStringArrays(["a"], ["a", "b"])).toBe(false);
expect(deepEqualStringArrays(["a", "b"], ["a"])).toBe(false);
});
test("same elements, same order", () => {
expect(deepEqualStringArrays(["a", "b", "c"], ["a", "b", "c"])).toBe(true);
});
test("same elements, different order", () => {
expect(deepEqualStringArrays(["a", "b", "c"], ["c", "b", "a"])).toBe(false);
});
test("different elements", () => {
expect(deepEqualStringArrays(["a", "b", "c"], ["a", "b", "d"])).toBe(false);
});
});

View File

@@ -0,0 +1,13 @@
function deepEqualStringArrays(
a: string[] | null | undefined,
b: string[] | null | undefined,
): boolean {
if (a === undefined && b === undefined) return true;
if (a === undefined || b === undefined) return false;
if (a === null && b === null) return true;
if (a === null || b === null) return false;
if (a.length !== b.length) return false;
return a.every((val, i) => val === b[i]);
}
export { deepEqualStringArrays };