diff --git a/.github/workflows/downgrade.yml b/.github/workflows/downgrade.yml index a90d823..7339b5a 100644 --- a/.github/workflows/downgrade.yml +++ b/.github/workflows/downgrade.yml @@ -122,6 +122,19 @@ jobs: echo "Effective downgrade skip: $effective" echo "EFFECTIVE_SKIP=$effective" >> "$GITHUB_ENV" + - name: "Save project metadata for QA" + if: "${{ inputs.group == 'QA' }}" + shell: bash + run: | + save_dir="$RUNNER_TEMP/sciml-downgrade-original-projects" + mkdir -p "$save_dir" + IFS=',' read -ra dirs <<< "${{ inputs.projects }}" + for dir in "${dirs[@]}"; do + dir="$(echo "$dir" | xargs)" + [ -f "$dir/Project.toml" ] || continue + cp --parents "$dir/Project.toml" "$save_dir" + done + - uses: julia-actions/julia-downgrade-compat@v2 with: skip: "${{ env.EFFECTIVE_SKIP }}" @@ -129,6 +142,24 @@ jobs: mode: "${{ inputs.mode != '' && inputs.mode || 'deps' }}" no_promote: "${{ inputs.no_promote }}" + - name: "Remove secondary manifests before root test" + if: "${{ inputs.project == '@.' }}" + shell: bash + run: | + # Keep Pkg.test from merging two fixed manifests after combined resolution. + save_dir="$RUNNER_TEMP/sciml-downgrade-secondary-manifests" + mkdir -p "$save_dir" + IFS=',' read -ra dirs <<< "${{ inputs.projects }}" + for dir in "${dirs[@]}"; do + dir="$(echo "$dir" | xargs)" + [ -n "$dir" ] || continue + [ "$dir" = "." ] && continue + manifest="$dir/Manifest.toml" + [ -f "$manifest" ] || continue + mkdir -p "$save_dir/$dir" + mv "$manifest" "$save_dir/$manifest" + done + - name: "Install system packages" if: "${{ inputs.apt-packages != '' && runner.os == 'Linux' }}" run: | @@ -139,6 +170,16 @@ jobs: with: project: "${{ inputs.project }}" + - name: "Restore project metadata before QA" + if: "${{ inputs.group == 'QA' }}" + shell: bash + run: | + save_dir="$RUNNER_TEMP/sciml-downgrade-original-projects" + while IFS= read -r -d '' saved; do + relative="${saved#"$save_dir/"}" + cp "$saved" "$relative" + done < <(find "$save_dir" -name Project.toml -print0) + - uses: julia-actions/julia-runtest@v1 with: project: "${{ inputs.project }}"