Skip to content

Commit

Permalink
ci: Use reusable workflow for regression test
Browse files Browse the repository at this point in the history
  • Loading branch information
itislu committed Jul 26, 2024
1 parent 27fbc17 commit f3945dc
Show file tree
Hide file tree
Showing 2 changed files with 88 additions and 152 deletions.
76 changes: 76 additions & 0 deletions .github/workflows/regression_test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
# .github/workflows/regression_test.yaml
name: Regression Test

on:
workflow_call:
inputs:
test_mode:
required: true
type: string
outputs:
source_failed_count:
description: Number of failed test cases on source branch
value: ${{ jobs.regression_test.outputs.source_failed_count }}
target_failed_count:
description: Number of failed test cases on target branch
value: ${{ jobs.regression_test.outputs.target_failed_count }}

env:
HOME: /home/runner
TESTER_DIR: /home/runner/42_minishell_tester
SCRIPTS_DIR: /home/runner/scripts
SOURCE_FAILED_COUNT: 0
TARGET_FAILED_COUNT: 0

jobs:
regression_test:
name: Regression Test
runs-on: ubuntu-latest
timeout-minutes: 10
outputs:
source_failed_count: ${{ env.SOURCE_FAILED_COUNT }}
target_failed_count: ${{ env.TARGET_FAILED_COUNT }}
steps:
- name: Checkout source branch of pull request
uses: actions/checkout@v4

- name: Set up test environment
uses: ./.github/actions/setup

- name: 🌱 Test source branch of pull request
run: |
make re CC=clang-12
${{ env.TESTER_DIR }}/tester.sh ${{ inputs.test_mode }} > ${{ env.HOME }}/source_test_result.txt
env:
GH_BRANCH: SOURCE_FAILED_COUNT

- name: Save tester output to home directory
run: mv -f tester_output ${{ env.HOME }} || true

- name: 📝 Print all test cases that failed on source branch
run: ${{ env.SCRIPTS_DIR }}/print_all_failed_test_cases.sh
env:
RESULT_FILE: ${{ env.HOME }}/source_test_result.txt
TESTER_OUTPUT_DIR: ${{ env.HOME }}/tester_output

- name: Checkout target branch of pull request
uses: actions/checkout@v4
with:
ref: ${{ github.base_ref }}

- name: 🎯 Test target branch of pull request
run: |
make re CC=clang-12
${{ env.TESTER_DIR }}/tester.sh ${{ inputs.test_mode }} > ${{ env.HOME }}/target_test_result.txt
env:
GH_BRANCH: TARGET_FAILED_COUNT

- name: Checkout source branch of pull request
uses: actions/checkout@v4

- name: 📜 Summarize regression test result
uses: ./.github/actions/summary_test_result
env:
SOURCE_FAILED_COUNT: ${{ env.SOURCE_FAILED_COUNT }}
TARGET_FAILED_COUNT: ${{ env.TARGET_FAILED_COUNT }}
TESTER_OUTPUT_DIR: ${{ env.HOME }}/tester_output
164 changes: 12 additions & 152 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -93,168 +93,28 @@ jobs:

mand_regression_test:
name: Mandatory Part Regression Test
runs-on: ubuntu-latest
needs: compilation_test
timeout-minutes: 10
steps:
- name: Checkout source branch of pull request
uses: actions/checkout@v4
- name: Set up test environment
uses: ./.github/actions/setup
- name: 🌱 Test source branch of pull request
run: |
make re CC=clang-12
${{ env.TESTER_DIR }}/tester.sh m > ${{ env.HOME }}/source_test_result.txt
env:
GH_BRANCH: SOURCE_FAILED_COUNT
- name: Save tester output to home directory
run: mv -f tester_output ${{ env.HOME }} || true
- name: 📝 Print all test cases that failed on source branch
run: ${{ env.SCRIPTS_DIR }}/print_all_failed_test_cases.sh
env:
RESULT_FILE: ${{ env.HOME }}/source_test_result.txt
TESTER_OUTPUT_DIR: ${{ env.HOME }}/tester_output
- name: Checkout target branch of pull request
uses: actions/checkout@v4
with:
ref: ${{ github.base_ref }}
- name: 🎯 Test target branch of pull request
run: |
make re CC=clang-12
${{ env.TESTER_DIR }}/tester.sh m > ${{ env.HOME }}/target_test_result.txt
env:
GH_BRANCH: TARGET_FAILED_COUNT
- name: Checkout source branch of pull request
uses: actions/checkout@v4
- name: 📜 Summarize regression test result
uses: ./.github/actions/summary_test_result
env:
SOURCE_FAILED_COUNT: ${{ env.SOURCE_FAILED_COUNT }}
TARGET_FAILED_COUNT: ${{ env.TARGET_FAILED_COUNT }}
TESTER_OUTPUT_DIR: ${{ env.HOME }}/tester_output
uses: ./.github/workflows/regression_test.yaml
with:
test_mode: 'm'

bonus_regression_test:
name: Bonus Part Regression Test
runs-on: ubuntu-latest
needs: compilation_test
timeout-minutes: 10
steps:
- name: Checkout source branch of pull request
uses: actions/checkout@v4
- name: Set up test environment
uses: ./.github/actions/setup
- name: 🌱 Test source branch of pull request
run: |
make re CC=clang-12
${{ env.TESTER_DIR }}/tester.sh b > ${{ env.HOME }}/source_test_result.txt
env:
GH_BRANCH: SOURCE_FAILED_COUNT
- name: Save tester output to home directory
run: mv -f tester_output ${{ env.HOME }} || true
- name: 📝 Print all test cases that failed on source branch
run: ${{ env.SCRIPTS_DIR }}/print_all_failed_test_cases.sh
env:
RESULT_FILE: ${{ env.HOME }}/source_test_result.txt
TESTER_OUTPUT_DIR: ${{ env.HOME }}/tester_output
- name: Checkout target branch of pull request
uses: actions/checkout@v4
with:
ref: ${{ github.base_ref }}
- name: 🎯 Test target branch of pull request
run: |
make re CC=clang-12
${{ env.TESTER_DIR }}/tester.sh b > ${{ env.HOME }}/target_test_result.txt
env:
GH_BRANCH: TARGET_FAILED_COUNT
- name: Checkout source branch of pull request
uses: actions/checkout@v4
- name: 📜 Summarize regression test result
uses: ./.github/actions/summary_test_result
env:
SOURCE_FAILED_COUNT: ${{ env.SOURCE_FAILED_COUNT }}
TARGET_FAILED_COUNT: ${{ env.TARGET_FAILED_COUNT }}
TESTER_OUTPUT_DIR: ${{ env.HOME }}/tester_output
uses: ./.github/workflows/regression_test.yaml
with:
test_mode: 'b'

empty_env_regression_test:
name: Empty Env Regression Test
runs-on: ubuntu-latest
needs: compilation_test
timeout-minutes: 10
steps:
- name: Checkout source branch of pull request
uses: actions/checkout@v4
- name: Set up test environment
uses: ./.github/actions/setup
- name: 🌱 Test source branch of pull request
run: |
make re CC=clang-12
${{ env.TESTER_DIR }}/tester.sh ne > ${{ env.HOME }}/source_test_result.txt
env:
GH_BRANCH: SOURCE_FAILED_COUNT
- name: Save tester output to home directory
run: mv -f tester_output ${{ env.HOME }} || true
- name: 📝 Print all test cases that failed on source branch
run: ${{ env.SCRIPTS_DIR }}/print_all_failed_test_cases.sh
env:
RESULT_FILE: ${{ env.HOME }}/source_test_result.txt
TESTER_OUTPUT_DIR: ${{ env.HOME }}/tester_output
- name: Checkout target branch of pull request
uses: actions/checkout@v4
with:
ref: ${{ github.base_ref }}
- name: 🎯 Test target branch of pull request
run: |
make re CC=clang-12
${{ env.TESTER_DIR }}/tester.sh ne > ${{ env.HOME }}/target_test_result.txt
env:
GH_BRANCH: TARGET_FAILED_COUNT
- name: Checkout source branch of pull request
uses: actions/checkout@v4
- name: 📜 Summarize regression test result
uses: ./.github/actions/summary_test_result
env:
SOURCE_FAILED_COUNT: ${{ env.SOURCE_FAILED_COUNT }}
TARGET_FAILED_COUNT: ${{ env.TARGET_FAILED_COUNT }}
TESTER_OUTPUT_DIR: ${{ env.HOME }}/tester_output
uses: ./.github/workflows/regression_test.yaml
with:
test_mode: 'ne'

hardcore_regression_test:
name: Hardcore Regression Test
runs-on: ubuntu-latest
needs: compilation_test
timeout-minutes: 10
steps:
- name: Checkout source branch of pull request
uses: actions/checkout@v4
- name: Set up test environment
uses: ./.github/actions/setup
- name: 🌱 Test source branch of pull request
run: |
make re CC=clang-12
${{ env.TESTER_DIR }}/tester.sh d > ${{ env.HOME }}/source_test_result.txt
env:
GH_BRANCH: SOURCE_FAILED_COUNT
- name: Save tester output to home directory
run: mv -f tester_output ${{ env.HOME }} || true
- name: 📝 Print all test cases that failed on source branch
run: ${{ env.SCRIPTS_DIR }}/print_all_failed_test_cases.sh
env:
RESULT_FILE: ${{ env.HOME }}/source_test_result.txt
TESTER_OUTPUT_DIR: ${{ env.HOME }}/tester_output
- name: Checkout target branch of pull request
uses: actions/checkout@v4
with:
ref: ${{ github.base_ref }}
- name: 🎯 Test target branch of pull request
run: |
make re CC=clang-12
${{ env.TESTER_DIR }}/tester.sh d > ${{ env.HOME }}/target_test_result.txt
env:
GH_BRANCH: TARGET_FAILED_COUNT
- name: Checkout source branch of pull request
uses: actions/checkout@v4
- name: 📜 Summarize regression test result
uses: ./.github/actions/summary_test_result
env:
SOURCE_FAILED_COUNT: ${{ env.SOURCE_FAILED_COUNT }}
TARGET_FAILED_COUNT: ${{ env.TARGET_FAILED_COUNT }}
TESTER_OUTPUT_DIR: ${{ env.HOME }}/tester_output
uses: ./.github/workflows/regression_test.yaml
with:
test_mode: 'd'

0 comments on commit f3945dc

Please sign in to comment.