Skip to content

Commit abb4442

Browse files
Allow back-merge validation to skip packaged drift
1 parent e665a3c commit abb4442

4 files changed

Lines changed: 112 additions & 93 deletions

File tree

.github/workflows/backmerge-main-to-dev.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ jobs:
4141
- name: Validate merged dev state before push
4242
env:
4343
FVPLUS_EXPECT_PLUGIN_BRANCH: 'dev'
44+
FVPLUS_ALLOW_PACKAGED_SOURCE_DRIFT: '1'
4445
FVPLUS_UNRAID_MATRIX: ${{ secrets.FVPLUS_UNRAID_MATRIX }}
4546
FVPLUS_I18N_STRICT: '1'
4647
FVPLUS_DEAD_CODE_STRICT: '1'

scripts/release_guard.sh

Lines changed: 106 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,17 @@ text_files_match() {
3333
diff -u <(tr -d '\r' < "${source_file}") <(tr -d '\r' < "${packaged_file}") >/dev/null
3434
}
3535

36+
env_truthy() {
37+
case "$(printf '%s' "${1:-0}" | tr '[:upper:]' '[:lower:]')" in
38+
1|true|yes|on)
39+
return 0
40+
;;
41+
*)
42+
return 1
43+
;;
44+
esac
45+
}
46+
3647
if [[ ! -f "${PLG_FILE}" ]]; then
3748
echo "ERROR: Missing plugin manifest: ${PLG_FILE}" >&2
3849
exit 1
@@ -733,103 +744,105 @@ tar -xOf "${ARCHIVE_FILE}" "${ARCHIVE_SERVER_LIB_DIAGNOSTICS_PATH}" > "${TMP_ARC
733744
tar -xOf "${ARCHIVE_FILE}" "${ARCHIVE_SERVER_APPLY_FOLDER_SETTINGS_PATH}" > "${TMP_ARCHIVE_SERVER_APPLY_FOLDER_SETTINGS}"
734745
tar -xOf "${ARCHIVE_FILE}" "${ARCHIVE_SERVER_UPDATE_NOTES_PATH}" > "${TMP_ARCHIVE_SERVER_UPDATE_NOTES}"
735746

736-
if ! grep -q 'fv-force-left-v2 marker' "${TMP_ARCHIVE_FOLDER_JS}"; then
737-
echo "ERROR: Packaged folder.js is missing the alignment regression marker comment." >&2
738-
exit 1
739-
fi
747+
if ! env_truthy "${FVPLUS_ALLOW_PACKAGED_SOURCE_DRIFT:-0}"; then
748+
if ! grep -q 'fv-force-left-v2 marker' "${TMP_ARCHIVE_FOLDER_JS}"; then
749+
echo "ERROR: Packaged folder.js is missing the alignment regression marker comment." >&2
750+
exit 1
751+
fi
740752

741-
if ! text_files_match "${SOURCE_FOLDER_JS}" "${TMP_ARCHIVE_FOLDER_JS}"; then
742-
fail_packaged_source_mismatch "Packaged folder.js does not match source folder.js."
743-
fi
753+
if ! text_files_match "${SOURCE_FOLDER_JS}" "${TMP_ARCHIVE_FOLDER_JS}"; then
754+
fail_packaged_source_mismatch "Packaged folder.js does not match source folder.js."
755+
fi
744756

745-
if ! text_files_match "${SOURCE_DOCKER_RUNTIME_HIERARCHY_JS}" "${TMP_ARCHIVE_DOCKER_RUNTIME_HIERARCHY_JS}"; then
746-
fail_packaged_source_mismatch "Packaged docker.runtime.hierarchy.js does not match source docker.runtime.hierarchy.js."
747-
fi
757+
if ! text_files_match "${SOURCE_DOCKER_RUNTIME_HIERARCHY_JS}" "${TMP_ARCHIVE_DOCKER_RUNTIME_HIERARCHY_JS}"; then
758+
fail_packaged_source_mismatch "Packaged docker.runtime.hierarchy.js does not match source docker.runtime.hierarchy.js."
759+
fi
748760

749-
if ! text_files_match "${SOURCE_DOCKER_RUNTIME_ACTIONS_JS}" "${TMP_ARCHIVE_DOCKER_RUNTIME_ACTIONS_JS}"; then
750-
fail_packaged_source_mismatch "Packaged docker.runtime.actions.js does not match source docker.runtime.actions.js."
751-
fi
752-
if ! text_files_match "${SOURCE_FOLDER_SETTINGS_TRANSFER_JS}" "${TMP_ARCHIVE_FOLDER_SETTINGS_TRANSFER_JS}"; then
753-
fail_packaged_source_mismatch "Packaged folder.settings-transfer.js does not match source folder.settings-transfer.js."
754-
fi
761+
if ! text_files_match "${SOURCE_DOCKER_RUNTIME_ACTIONS_JS}" "${TMP_ARCHIVE_DOCKER_RUNTIME_ACTIONS_JS}"; then
762+
fail_packaged_source_mismatch "Packaged docker.runtime.actions.js does not match source docker.runtime.actions.js."
763+
fi
764+
if ! text_files_match "${SOURCE_FOLDER_SETTINGS_TRANSFER_JS}" "${TMP_ARCHIVE_FOLDER_SETTINGS_TRANSFER_JS}"; then
765+
fail_packaged_source_mismatch "Packaged folder.settings-transfer.js does not match source folder.settings-transfer.js."
766+
fi
755767

756-
if ! text_files_match "${SOURCE_FOLDER_CSS}" "${TMP_ARCHIVE_FOLDER_CSS}"; then
757-
fail_packaged_source_mismatch "Packaged folder.css does not match source folder.css."
758-
fi
759-
if ! text_files_match "${SOURCE_SETTINGS_JS}" "${TMP_ARCHIVE_SETTINGS_JS}"; then
760-
fail_packaged_source_mismatch "Packaged folderviewplus.js does not match source folderviewplus.js."
761-
fi
762-
if ! text_files_match "${SOURCE_SETTINGS_DIRTY_JS}" "${TMP_ARCHIVE_SETTINGS_DIRTY_JS}"; then
763-
fail_packaged_source_mismatch "Packaged folderviewplus.dirty.js does not match source folderviewplus.dirty.js."
764-
fi
765-
if ! text_files_match "${SOURCE_SETTINGS_RUNTIME_PARITY_JS}" "${TMP_ARCHIVE_SETTINGS_RUNTIME_PARITY_JS}"; then
766-
fail_packaged_source_mismatch "Packaged folderviewplus.runtime-parity.js does not match source folderviewplus.runtime-parity.js."
767-
fi
768-
if ! text_files_match "${SOURCE_SETTINGS_SECTIONS_JS}" "${TMP_ARCHIVE_SETTINGS_SECTIONS_JS}"; then
769-
fail_packaged_source_mismatch "Packaged folderviewplus.settings-sections.js does not match source folderviewplus.settings-sections.js."
770-
fi
771-
if ! text_files_match "${SOURCE_SETTINGS_SETUP_ASSISTANT_JS}" "${TMP_ARCHIVE_SETTINGS_SETUP_ASSISTANT_JS}"; then
772-
fail_packaged_source_mismatch "Packaged folderviewplus.setup-assistant.js does not match source folderviewplus.setup-assistant.js."
773-
fi
774-
if ! text_files_match "${SOURCE_SETTINGS_SMART_DETECT_CONFIG_JS}" "${TMP_ARCHIVE_SETTINGS_SMART_DETECT_CONFIG_JS}"; then
775-
fail_packaged_source_mismatch "Packaged folderviewplus.smart-detect-config.js does not match source folderviewplus.smart-detect-config.js."
776-
fi
777-
if ! text_files_match "${SOURCE_SETTINGS_STARTER_TEMPLATES_JS}" "${TMP_ARCHIVE_SETTINGS_STARTER_TEMPLATES_JS}"; then
778-
fail_packaged_source_mismatch "Packaged folderviewplus.starter-templates.js does not match source folderviewplus.starter-templates.js."
779-
fi
780-
if ! text_files_match "${SOURCE_SETTINGS_SUPPORT_BUNDLE_PREVIEW_JS}" "${TMP_ARCHIVE_SETTINGS_SUPPORT_BUNDLE_PREVIEW_JS}"; then
781-
fail_packaged_source_mismatch "Packaged folderviewplus.support-bundle-preview.js does not match source folderviewplus.support-bundle-preview.js."
782-
fi
783-
if ! text_files_match "${SOURCE_SETTINGS_SUPPORT_BUNDLE_TELEMETRY_JS}" "${TMP_ARCHIVE_SETTINGS_SUPPORT_BUNDLE_TELEMETRY_JS}"; then
784-
fail_packaged_source_mismatch "Packaged folderviewplus.support-bundle-telemetry.js does not match source folderviewplus.support-bundle-telemetry.js."
785-
fi
786-
if ! text_files_match "${SOURCE_SETTINGS_ACTIVITY_DIAGNOSTICS_JS}" "${TMP_ARCHIVE_SETTINGS_ACTIVITY_DIAGNOSTICS_JS}"; then
787-
fail_packaged_source_mismatch "Packaged folderviewplus.activity-diagnostics.js does not match source folderviewplus.activity-diagnostics.js."
788-
fi
789-
if ! text_files_match "${SOURCE_SETTINGS_TREE_JS}" "${TMP_ARCHIVE_SETTINGS_TREE_JS}"; then
790-
fail_packaged_source_mismatch "Packaged folderviewplus.settings-tree.js does not match source folderviewplus.settings-tree.js."
791-
fi
792-
if ! text_files_match "${SOURCE_SETTINGS_FOLDER_EDITOR_JS}" "${TMP_ARCHIVE_SETTINGS_FOLDER_EDITOR_JS}"; then
793-
fail_packaged_source_mismatch "Packaged folderviewplus.folder-editor.js does not match source folderviewplus.folder-editor.js."
794-
fi
795-
if ! text_files_match "${SOURCE_SETTINGS_HEALTH_JS}" "${TMP_ARCHIVE_SETTINGS_HEALTH_JS}"; then
796-
fail_packaged_source_mismatch "Packaged folderviewplus.settings-health.js does not match source folderviewplus.settings-health.js."
797-
fi
798-
if ! text_files_match "${SOURCE_SETTINGS_WORKSPACES_JS}" "${TMP_ARCHIVE_SETTINGS_WORKSPACES_JS}"; then
799-
fail_packaged_source_mismatch "Packaged folderviewplus.settings-workspaces.js does not match source folderviewplus.settings-workspaces.js."
800-
fi
801-
if ! text_files_match "${SOURCE_SETTINGS_BULK_ASSIGNMENT_JS}" "${TMP_ARCHIVE_SETTINGS_BULK_ASSIGNMENT_JS}"; then
802-
fail_packaged_source_mismatch "Packaged folderviewplus.bulk-assignment.js does not match source folderviewplus.bulk-assignment.js."
803-
fi
804-
if ! text_files_match "${SOURCE_SETTINGS_RUNTIME_ACTIONS_JS}" "${TMP_ARCHIVE_SETTINGS_RUNTIME_ACTIONS_JS}"; then
805-
fail_packaged_source_mismatch "Packaged folderviewplus.runtime-actions.js does not match source folderviewplus.runtime-actions.js."
806-
fi
807-
if ! text_files_match "${SOURCE_SETTINGS_WIZARD_JS}" "${TMP_ARCHIVE_SETTINGS_WIZARD_JS}"; then
808-
fail_packaged_source_mismatch "Packaged folderviewplus.wizard.js does not match source folderviewplus.wizard.js."
809-
fi
810-
if ! text_files_match "${SOURCE_SETTINGS_IMPORT_JS}" "${TMP_ARCHIVE_SETTINGS_IMPORT_JS}"; then
811-
fail_packaged_source_mismatch "Packaged folderviewplus.import.js does not match source folderviewplus.import.js."
812-
fi
813-
if ! text_files_match "${SOURCE_SETTINGS_CSS}" "${TMP_ARCHIVE_SETTINGS_CSS}"; then
814-
fail_packaged_source_mismatch "Packaged folderviewplus.css does not match source folderviewplus.css."
815-
fi
816-
if ! text_files_match "${SOURCE_FOLDER_PAGE}" "${TMP_ARCHIVE_FOLDER_PAGE}"; then
817-
fail_packaged_source_mismatch "Packaged Folder.page does not match source Folder.page."
818-
fi
819-
if ! text_files_match "${SOURCE_SETTINGS_PAGE}" "${TMP_ARCHIVE_SETTINGS_PAGE}"; then
820-
fail_packaged_source_mismatch "Packaged FolderViewPlus.page does not match source FolderViewPlus.page."
821-
fi
822-
if ! text_files_match "${SOURCE_SERVER_LIB}" "${TMP_ARCHIVE_SERVER_LIB}"; then
823-
fail_packaged_source_mismatch "Packaged server/lib.php does not match source server/lib.php."
824-
fi
825-
if ! text_files_match "${SOURCE_SERVER_LIB_DIAGNOSTICS}" "${TMP_ARCHIVE_SERVER_LIB_DIAGNOSTICS}"; then
826-
fail_packaged_source_mismatch "Packaged server/lib.diagnostics.php does not match source server/lib.diagnostics.php."
827-
fi
828-
if ! text_files_match "${SOURCE_SERVER_APPLY_FOLDER_SETTINGS}" "${TMP_ARCHIVE_SERVER_APPLY_FOLDER_SETTINGS}"; then
829-
fail_packaged_source_mismatch "Packaged server/apply_folder_settings.php does not match source server/apply_folder_settings.php."
830-
fi
831-
if ! text_files_match "${SOURCE_SERVER_UPDATE_NOTES}" "${TMP_ARCHIVE_SERVER_UPDATE_NOTES}"; then
832-
fail_packaged_source_mismatch "Packaged server/update_notes.php does not match source server/update_notes.php."
768+
if ! text_files_match "${SOURCE_FOLDER_CSS}" "${TMP_ARCHIVE_FOLDER_CSS}"; then
769+
fail_packaged_source_mismatch "Packaged folder.css does not match source folder.css."
770+
fi
771+
if ! text_files_match "${SOURCE_SETTINGS_JS}" "${TMP_ARCHIVE_SETTINGS_JS}"; then
772+
fail_packaged_source_mismatch "Packaged folderviewplus.js does not match source folderviewplus.js."
773+
fi
774+
if ! text_files_match "${SOURCE_SETTINGS_DIRTY_JS}" "${TMP_ARCHIVE_SETTINGS_DIRTY_JS}"; then
775+
fail_packaged_source_mismatch "Packaged folderviewplus.dirty.js does not match source folderviewplus.dirty.js."
776+
fi
777+
if ! text_files_match "${SOURCE_SETTINGS_RUNTIME_PARITY_JS}" "${TMP_ARCHIVE_SETTINGS_RUNTIME_PARITY_JS}"; then
778+
fail_packaged_source_mismatch "Packaged folderviewplus.runtime-parity.js does not match source folderviewplus.runtime-parity.js."
779+
fi
780+
if ! text_files_match "${SOURCE_SETTINGS_SECTIONS_JS}" "${TMP_ARCHIVE_SETTINGS_SECTIONS_JS}"; then
781+
fail_packaged_source_mismatch "Packaged folderviewplus.settings-sections.js does not match source folderviewplus.settings-sections.js."
782+
fi
783+
if ! text_files_match "${SOURCE_SETTINGS_SETUP_ASSISTANT_JS}" "${TMP_ARCHIVE_SETTINGS_SETUP_ASSISTANT_JS}"; then
784+
fail_packaged_source_mismatch "Packaged folderviewplus.setup-assistant.js does not match source folderviewplus.setup-assistant.js."
785+
fi
786+
if ! text_files_match "${SOURCE_SETTINGS_SMART_DETECT_CONFIG_JS}" "${TMP_ARCHIVE_SETTINGS_SMART_DETECT_CONFIG_JS}"; then
787+
fail_packaged_source_mismatch "Packaged folderviewplus.smart-detect-config.js does not match source folderviewplus.smart-detect-config.js."
788+
fi
789+
if ! text_files_match "${SOURCE_SETTINGS_STARTER_TEMPLATES_JS}" "${TMP_ARCHIVE_SETTINGS_STARTER_TEMPLATES_JS}"; then
790+
fail_packaged_source_mismatch "Packaged folderviewplus.starter-templates.js does not match source folderviewplus.starter-templates.js."
791+
fi
792+
if ! text_files_match "${SOURCE_SETTINGS_SUPPORT_BUNDLE_PREVIEW_JS}" "${TMP_ARCHIVE_SETTINGS_SUPPORT_BUNDLE_PREVIEW_JS}"; then
793+
fail_packaged_source_mismatch "Packaged folderviewplus.support-bundle-preview.js does not match source folderviewplus.support-bundle-preview.js."
794+
fi
795+
if ! text_files_match "${SOURCE_SETTINGS_SUPPORT_BUNDLE_TELEMETRY_JS}" "${TMP_ARCHIVE_SETTINGS_SUPPORT_BUNDLE_TELEMETRY_JS}"; then
796+
fail_packaged_source_mismatch "Packaged folderviewplus.support-bundle-telemetry.js does not match source folderviewplus.support-bundle-telemetry.js."
797+
fi
798+
if ! text_files_match "${SOURCE_SETTINGS_ACTIVITY_DIAGNOSTICS_JS}" "${TMP_ARCHIVE_SETTINGS_ACTIVITY_DIAGNOSTICS_JS}"; then
799+
fail_packaged_source_mismatch "Packaged folderviewplus.activity-diagnostics.js does not match source folderviewplus.activity-diagnostics.js."
800+
fi
801+
if ! text_files_match "${SOURCE_SETTINGS_TREE_JS}" "${TMP_ARCHIVE_SETTINGS_TREE_JS}"; then
802+
fail_packaged_source_mismatch "Packaged folderviewplus.settings-tree.js does not match source folderviewplus.settings-tree.js."
803+
fi
804+
if ! text_files_match "${SOURCE_SETTINGS_FOLDER_EDITOR_JS}" "${TMP_ARCHIVE_SETTINGS_FOLDER_EDITOR_JS}"; then
805+
fail_packaged_source_mismatch "Packaged folderviewplus.folder-editor.js does not match source folderviewplus.folder-editor.js."
806+
fi
807+
if ! text_files_match "${SOURCE_SETTINGS_HEALTH_JS}" "${TMP_ARCHIVE_SETTINGS_HEALTH_JS}"; then
808+
fail_packaged_source_mismatch "Packaged folderviewplus.settings-health.js does not match source folderviewplus.settings-health.js."
809+
fi
810+
if ! text_files_match "${SOURCE_SETTINGS_WORKSPACES_JS}" "${TMP_ARCHIVE_SETTINGS_WORKSPACES_JS}"; then
811+
fail_packaged_source_mismatch "Packaged folderviewplus.settings-workspaces.js does not match source folderviewplus.settings-workspaces.js."
812+
fi
813+
if ! text_files_match "${SOURCE_SETTINGS_BULK_ASSIGNMENT_JS}" "${TMP_ARCHIVE_SETTINGS_BULK_ASSIGNMENT_JS}"; then
814+
fail_packaged_source_mismatch "Packaged folderviewplus.bulk-assignment.js does not match source folderviewplus.bulk-assignment.js."
815+
fi
816+
if ! text_files_match "${SOURCE_SETTINGS_RUNTIME_ACTIONS_JS}" "${TMP_ARCHIVE_SETTINGS_RUNTIME_ACTIONS_JS}"; then
817+
fail_packaged_source_mismatch "Packaged folderviewplus.runtime-actions.js does not match source folderviewplus.runtime-actions.js."
818+
fi
819+
if ! text_files_match "${SOURCE_SETTINGS_WIZARD_JS}" "${TMP_ARCHIVE_SETTINGS_WIZARD_JS}"; then
820+
fail_packaged_source_mismatch "Packaged folderviewplus.wizard.js does not match source folderviewplus.wizard.js."
821+
fi
822+
if ! text_files_match "${SOURCE_SETTINGS_IMPORT_JS}" "${TMP_ARCHIVE_SETTINGS_IMPORT_JS}"; then
823+
fail_packaged_source_mismatch "Packaged folderviewplus.import.js does not match source folderviewplus.import.js."
824+
fi
825+
if ! text_files_match "${SOURCE_SETTINGS_CSS}" "${TMP_ARCHIVE_SETTINGS_CSS}"; then
826+
fail_packaged_source_mismatch "Packaged folderviewplus.css does not match source folderviewplus.css."
827+
fi
828+
if ! text_files_match "${SOURCE_FOLDER_PAGE}" "${TMP_ARCHIVE_FOLDER_PAGE}"; then
829+
fail_packaged_source_mismatch "Packaged Folder.page does not match source Folder.page."
830+
fi
831+
if ! text_files_match "${SOURCE_SETTINGS_PAGE}" "${TMP_ARCHIVE_SETTINGS_PAGE}"; then
832+
fail_packaged_source_mismatch "Packaged FolderViewPlus.page does not match source FolderViewPlus.page."
833+
fi
834+
if ! text_files_match "${SOURCE_SERVER_LIB}" "${TMP_ARCHIVE_SERVER_LIB}"; then
835+
fail_packaged_source_mismatch "Packaged server/lib.php does not match source server/lib.php."
836+
fi
837+
if ! text_files_match "${SOURCE_SERVER_LIB_DIAGNOSTICS}" "${TMP_ARCHIVE_SERVER_LIB_DIAGNOSTICS}"; then
838+
fail_packaged_source_mismatch "Packaged server/lib.diagnostics.php does not match source server/lib.diagnostics.php."
839+
fi
840+
if ! text_files_match "${SOURCE_SERVER_APPLY_FOLDER_SETTINGS}" "${TMP_ARCHIVE_SERVER_APPLY_FOLDER_SETTINGS}"; then
841+
fail_packaged_source_mismatch "Packaged server/apply_folder_settings.php does not match source server/apply_folder_settings.php."
842+
fi
843+
if ! text_files_match "${SOURCE_SERVER_UPDATE_NOTES}" "${TMP_ARCHIVE_SERVER_UPDATE_NOTES}"; then
844+
fail_packaged_source_mismatch "Packaged server/update_notes.php does not match source server/update_notes.php."
845+
fi
833846
fi
834847

835848
if [[ ! -d "${SERVER_DIR}" ]]; then

scripts/workflow_self_check.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,9 @@ if (!/upload-artifact@v4/.test(backmergeWorkflow)) {
9393
if (!/FVPLUS_EXPECT_PLUGIN_BRANCH:\s*'dev'/.test(backmergeWorkflow)) {
9494
fail('Back-merge workflow must validate merged dev state with FVPLUS_EXPECT_PLUGIN_BRANCH set to dev.');
9595
}
96+
if (!/FVPLUS_ALLOW_PACKAGED_SOURCE_DRIFT:\s*'1'/.test(backmergeWorkflow)) {
97+
fail('Back-merge workflow must allow expected packaged/source drift while validating non-release back-merge branches.');
98+
}
9699
if (!/pull-requests:\s*write/.test(backmergeWorkflow)) {
97100
fail('Back-merge workflow must have pull-requests: write permission.');
98101
}

tests/versioning-guard.test.mjs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,7 @@ test('release_guard checks debug flags and mutation endpoint guards', () => {
198198
assert.match(releaseGuard, /FOLDER_VIEW_DEBUG_MODE is enabled in docker\.js/);
199199
assert.match(releaseGuard, /VM_DEBUG_MODE is enabled in vm\.js/);
200200
assert.match(releaseGuard, /DASHBOARD_DEBUG_MODE is enabled in dashboard\.js/);
201+
assert.match(releaseGuard, /FVPLUS_ALLOW_PACKAGED_SOURCE_DRIFT/);
201202
assert.match(releaseGuard, /READ_ONLY_ENDPOINTS=\(/);
202203
assert.match(releaseGuard, /requireMutationRequestGuard\(\)/);
203204
assert.match(releaseGuard, /Mutating endpoint is missing requireMutationRequestGuard/);
@@ -422,6 +423,7 @@ test('validation workflows delegate to the shared ci suite with dev coverage, fa
422423

423424
assert.match(backmergeWorkflow, /Validate merged dev state before push/);
424425
assert.match(backmergeWorkflow, /FVPLUS_EXPECT_PLUGIN_BRANCH:\s*'dev'/);
426+
assert.match(backmergeWorkflow, /FVPLUS_ALLOW_PACKAGED_SOURCE_DRIFT:\s*'1'/);
425427
assert.match(backmergeWorkflow, /bash scripts\/run_ci_suite\.sh/);
426428
assert.match(backmergeWorkflow, /Setup CI environment/);
427429
assert.match(backmergeWorkflow, /uses:\s*\.\/\.github\/actions\/setup-ci-env/);

0 commit comments

Comments
 (0)