fix(ci): guard empty QA-live filter token join in release checks

An all-QA live_suite_filter leaves repo_filter_tokens empty; joining the
empty array under set -u aborts the scheduling script on bash <4.4.
Default the expansion and update the workflow-content assertion.
This commit is contained in:
Peter Steinberger
2026-08-10 09:35:51 -07:00
parent 87475758dc
commit 25a9a2e020
2 changed files with 5 additions and 7 deletions
@@ -507,7 +507,7 @@ jobs:
done
if [[ "$qa_filter_seen" == "true" ]]; then
repo_live_suite_filter="$(IFS=,; printf '%s' "${repo_filter_tokens[*]}")"
repo_live_suite_filter="$(IFS=,; printf '%s' "${repo_filter_tokens[*]:-}")"
fi
if [[ "${#disabled_required_lanes[@]}" -gt 0 ]]; then
@@ -2700,8 +2700,8 @@ describe("package artifact reuse", () => {
),
)
.map(([jobId]) => jobId)
.sort();
expect(typedHarnessJobIds).toEqual(harnessJobCases.map(({ jobId }) => jobId).sort());
.toSorted();
expect(typedHarnessJobIds).toEqual(harnessJobCases.map(({ jobId }) => jobId).toSorted());
for (const { jobId, planStepName, setupIf } of harnessJobCases) {
const harnessJob = workflowJob(LIVE_E2E_WORKFLOW, jobId);
@@ -3871,7 +3871,7 @@ describe("package artifact reuse", () => {
expect(workflow).toContain("repo_live_suite_filter:");
expect(workflow).toContain('repo_filter_tokens+=("$token")');
expect(workflow).toContain(
'repo_live_suite_filter="$(IFS=,; printf \'%s\' "${repo_filter_tokens[*]}")"',
'repo_live_suite_filter="$(IFS=,; printf \'%s\' "${repo_filter_tokens[*]:-}")"',
);
expect(workflow).toContain("cross_os_suite_filter:");
expect(workflow).toContain("advisory: false");
@@ -6249,7 +6249,6 @@ wait_for_run plugin-clawhub-new.yml 123 "${expectedSha}" || status=$?
const crossOs = readWorkflow(CROSS_OS_RELEASE_CHECKS_REUSABLE_WORKFLOW);
const packageAcceptance = readWorkflow(PACKAGE_ACCEPTANCE_WORKFLOW);
const qaLive = readWorkflow(QA_LIVE_TRANSPORTS_WORKFLOW);
const performance = readWorkflow(PERFORMANCE_WORKFLOW);
const profiles = ["beta", "stable", "full"] as const;
const ciPreflight = workflowJob(CI_WORKFLOW, "preflight");
@@ -6364,8 +6363,7 @@ wait_for_run plugin-clawhub-new.yml 123 "${expectedSha}" || status=$?
]),
);
expect(releasePackageTimeouts).toEqual({ beta: 280, stable: 280, full: 310 });
for (const profile of profiles) {
const childTimeout = releasePackageTimeouts[profile];
for (const [profile, childTimeout] of Object.entries(releasePackageTimeouts)) {
expect(childTimeout, `release-package:${profile}`).toBeLessThanOrEqual(420);
expect(420 - childTimeout, `release-package:${profile}`).toBeGreaterThanOrEqual(60);
}