Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 39 additions & 2 deletions packages/wait_for_tests/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,51 @@ inputs:
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:
INPUT_SHA: ${{ inputs.sha }}
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"

Loading