Skip to content

[BUILD] Use make's linker flags for libraries #684

[BUILD] Use make's linker flags for libraries

[BUILD] Use make's linker flags for libraries #684

Workflow file for this run

# .github/workflows/test.yaml
name: Test Workflow
on:
pull_request:
workflow_dispatch:
push:
tags:
- 'v*'
branches:
- main
- evaluation
env:
HOME: /home/runner
TESTER_DIR: /home/runner/42_minishell_tester
SCRIPTS_DIR: /home/runner/scripts
jobs:
compilation_test:
name: Compilation Test
runs-on: ubuntu-latest
timeout-minutes: 2
strategy:
fail-fast: false
matrix:
compiler: [gcc, clang, clang-12]
steps:
- name: Checkout source branch of pull request
uses: actions/checkout@v4
- name: Set up test environment
uses: ./.github/actions/setup
- name: 🔨 Compile with Makefile
run: make CC="${{ matrix.compiler }}"
combine_compilation_test_results:
name: Combine Compilation Test Results
needs: compilation_test
runs-on: ubuntu-latest
steps:
- name: Combine compilation test results
run: echo "All compilation tests finished"
prepare_test_matrix:
name: Prepare Test Matrix
needs: compilation_test
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 ${{ env.TESTER_DIR }}
- name: Prepare matrix
id: prep_matrix
run: |
FILES=$(find ${{ env.TESTER_DIR }}/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
runs-on: ubuntu-latest
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
test_script: ${{ fromJson(needs.prepare_test_matrix.outputs.test_matrix) }}
steps:
- name: Checkout source branch of pull request
uses: actions/checkout@v4
- name: Set up test environment
uses: ./.github/actions/setup
- name: Delete all but one test script
run: |
for file in ${{ env.TESTER_DIR }}/cmds/**/*.sh; do
if [[ "$(basename "$file")" != "${{ matrix.test_script }}" ]]; then
rm "$file"
fi
done
- name: 🔍 Check memory leaks
run: |
make re CC=clang-12
${{ env.TESTER_DIR }}/tester.sh va > ${{ env.HOME }}/leak_result.txt
env:
GH_BRANCH: IGNORE
continue-on-error: true
- name: Save tester output to home directory
run: mv -f tester_output* ${{ env.HOME }}/tester_output || true
- name: 📝 Print all test cases that leaked on source branch
run: ${{ env.SCRIPTS_DIR }}/print_leak_test_cases.sh
env:
RESULT_FILE: ${{ env.HOME }}/leak_result.txt
TESTER_OUTPUT_DIR: ${{ env.HOME }}/tester_output
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"
regression_test:
name: Regression Test
needs: compilation_test
strategy:
fail-fast: false
matrix:
include:
- test_mode: m
test_name: Mandatory Part
- test_mode: b
test_name: Bonus Part
- test_mode: ne
test_name: Empty Env
- test_mode: d
test_name: Hardcore
uses: ./.github/workflows/regression_test.yaml
with:
test_mode: ${{ matrix.test_mode }}
test_name: ${{ matrix.test_name }}
combine_regression_test_results:
name: Combine Regression Test Results
needs: regression_test
runs-on: ubuntu-latest
steps:
- name: Combine regression test results
run: echo "All regression tests finished"