fix(ci): dart must be setup (#5098)
Action was missing "uses" clause to setup dart on the runner.
+ Includes a change to make `gh act` local development possible
diff --git a/packages/wait_for_tests/action.yml b/packages/wait_for_tests/action.yml
index d8bb3c3..8d8c482 100644
--- a/packages/wait_for_tests/action.yml
+++ b/packages/wait_for_tests/action.yml
@@ -18,9 +18,45 @@
runs:
using: 'composite'
steps:
+ - name: Set up Dart SDK
+ uses: dart-lang/setup-dart@v1.7.2
+
- name: Get dependencies
shell: bash
- run: dart pub get --directory=${{ github.action_path }}
+ run: |
+ # 1. Resolve the action path.
+ # On real GitHub Actions runners, GITHUB_ACTION_PATH / github.action_path is set correctly.
+ # On local testing tools like 'nektos/act', github.action_path for local composite actions
+ # can be empty or incorrect. We use a fallback to 'packages/wait_for_tests' to support local testing.
+ ACTION_PATH="${GITHUB_ACTION_PATH:-${{ github.action_path }}}"
+ if [ -z "$ACTION_PATH" ] || [ "$ACTION_PATH" = "." ] || [ "$ACTION_PATH" = "$(pwd)" ]; then
+ ACTION_PATH="packages/wait_for_tests"
+ fi
+ echo "RESOLVED_ACTION_PATH=$ACTION_PATH" >> "$GITHUB_ENV"
+ echo "Using action path: $ACTION_PATH"
+
+ # 2. Bypass workspace resolution.
+ # Since this action is part of a Dart/Flutter pub workspace that includes Flutter-dependent
+ # packages, running 'dart pub get' in a pure Dart runner will fail without the Flutter SDK.
+ # We temporarily create a pubspec_overrides.yaml to opt this package out of workspace resolution.
+ #
+ # To avoid overwriting or leaving lingering changes during local testing, we back up any
+ # existing pubspec_overrides.yaml and register a shell 'trap' to guarantee clean restoration/removal
+ # on exit (regardless of success or failure).
+ ORIG_OVERRIDES="$ACTION_PATH/pubspec_overrides.yaml"
+ BACKUP_OVERRIDES="$ACTION_PATH/pubspec_overrides.yaml.bak"
+ if [ -f "$ORIG_OVERRIDES" ]; then
+ mv "$ORIG_OVERRIDES" "$BACKUP_OVERRIDES"
+ trap 'mv "$BACKUP_OVERRIDES" "$ORIG_OVERRIDES"' EXIT
+ else
+ trap 'rm -f "$ORIG_OVERRIDES"' EXIT
+ fi
+
+ echo "resolution:" > "$ORIG_OVERRIDES"
+
+ dart pub get --directory="$ACTION_PATH"
+
+
- name: Run wait-for-tests
shell: bash
env:
@@ -28,4 +64,5 @@
INPUT_REPO: ${{ inputs.repo }}
INPUT_REQUIRED_TESTS: ${{ inputs.required-tests }}
INPUT_WAIT_INTERVAL: ${{ inputs.wait-interval }}
- run: dart ${{ github.action_path }}/bin/wait_for_tests.dart
+ run: dart "$RESOLVED_ACTION_PATH/bin/wait_for_tests.dart"
+