Skip to content

[FEAT] Seperate test workflow and add bonus part test #1

[FEAT] Seperate test workflow and add bonus part test

[FEAT] Seperate test workflow and add bonus part test #1

name: Memory Leak Test
on:
pull_request:
jobs:
prepare_test_matrix:
name: Prepare Test Matrix
runs-on: ubuntu-latest
outputs:
test_matrix: ${{ steps.prep_matrix.outputs.TEST_MATRIX }}
steps:
- name: Clone tester repository
run: git clone https://github.com/LeaYeh/42_minishell_tester.git
- name: Prepare matrix
id: prep_matrix
run: |
FILES=$(find 42_minishell_tester/cmds/**/*.sh \
-exec basename {} \; | jq -R -s -c 'split("\n")[:-1]')
echo "TEST_MATRIX=${FILES}" >> "$GITHUB_OUTPUT"
memory_leak_test:
name: Memory Leak Test
needs: prepare_test_matrix
strategy:
matrix:
test_script: ${{ fromJson(needs.prepare_test_matrix.outputs.test_matrix) }}
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Checkout source branch of pull request
uses: actions/checkout@v4
- name: Set up build environment
run: |
sudo apt-get update
sudo apt-get install -y build-essential clang-12 valgrind
- name: Set up testing framework
run: |
git clone https://github.com/LeaYeh/42_minishell_tester.git
cp -r 42_minishell_tester $HOME
chmod +x $HOME/42_minishell_tester/tester.sh
- name: Delete all but one test script
run: |
for file in $HOME/42_minishell_tester/cmds/**/*.sh; do
if [[ "$(basename "$file")" != "${{ matrix.test_script }}" ]]; then
rm "$file"
fi
done
combine_memory_leak_test_results:
name: Combine Memory Leak Test Results
needs: [memory_leak_test]
runs-on: ubuntu-latest
steps:
- name: Combine memory leak test results
run: echo "All memory leak tests finished"