windows: Test nlr at build time. #402
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: unix port | |
| on: | |
| push: | |
| pull_request: | |
| paths: | |
| - '.github/workflows/*.yml' | |
| - 'tools/**' | |
| - 'py/**' | |
| - 'extmod/**' | |
| - 'shared/**' | |
| - 'lib/**' | |
| - 'examples/**' | |
| - 'mpy-cross/**' | |
| - 'ports/unix/**' | |
| - 'tests/**' | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| minimal: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Build | |
| run: tools/ci.sh unix_minimal_build | |
| - name: Run main test suite | |
| run: tools/ci.sh unix_minimal_run_tests | |
| - name: Print failures | |
| if: failure() | |
| run: tests/run-tests.py --print-failures | |
| reproducible: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Build with reproducible date | |
| run: tools/ci.sh unix_minimal_build | |
| env: | |
| SOURCE_DATE_EPOCH: 1234567890 | |
| - name: Check reproducible build date | |
| run: echo | ports/unix/build-minimal/micropython -i | grep 'on 2009-02-13;' | |
| standard: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Build | |
| run: tools/ci.sh unix_standard_build | |
| - name: Run main test suite | |
| run: tools/ci.sh unix_standard_run_tests | |
| - name: Print failures | |
| if: failure() | |
| run: tests/run-tests.py --print-failures | |
| standard_v2: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Build | |
| run: tools/ci.sh unix_standard_v2_build | |
| - name: Run main test suite | |
| run: tools/ci.sh unix_standard_v2_run_tests | |
| - name: Print failures | |
| if: failure() | |
| run: tests/run-tests.py --print-failures | |
| coverage: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/setup-python@v6 | |
| # Python 3.12 is the default for ubuntu-24.04, but that has compatibility issues with settrace tests. | |
| # Can remove this step when ubuntu-latest uses a more recent Python 3.x as the default. | |
| with: | |
| python-version: '3.11' | |
| - name: Install packages | |
| run: tools/ci.sh unix_coverage_setup | |
| - name: Build | |
| run: tools/ci.sh unix_coverage_build | |
| - name: Run main test suite | |
| run: tools/ci.sh unix_coverage_run_tests | |
| - name: Test merging .mpy files | |
| run: tools/ci.sh unix_coverage_run_mpy_merge_tests | |
| - name: Build native mpy modules | |
| run: tools/ci.sh native_mpy_modules_build | |
| - name: Test importing .mpy generated by mpy_ld.py | |
| run: tools/ci.sh unix_coverage_run_native_mpy_tests | |
| - name: Run gcov coverage analysis | |
| run: | | |
| (cd ports/unix && gcov -o build-coverage/py ../../py/*.c || true) | |
| (cd ports/unix && gcov -o build-coverage/extmod ../../extmod/*.c || true) | |
| - name: Upload coverage to Codecov | |
| uses: codecov/codecov-action@v6 | |
| with: | |
| # Only fail the job on error if a token is set, or we're running against upstream repo. | |
| # This avoids the annoying situation of the job failing on every push to a fork (if no token is set). | |
| fail_ci_if_error: ${{ secrets.CODECOV_TOKEN != '' || github.repository_owner == 'micropython' }} | |
| verbose: true | |
| # note: when a fork opens a PR into MicroPython repo, the pull_request trigger can't access | |
| # secrets so this token value will be empty (codecov will do a 'tokenless' upload). | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| - name: Print failures | |
| if: failure() | |
| run: tests/run-tests.py --print-failures | |
| coverage_32bit: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/setup-python@v6 | |
| # Python 3.12 is the default for ubuntu-24.04, but that has compatibility issues with settrace tests. | |
| # Can remove this step when ubuntu-latest uses a more recent Python 3.x as the default. | |
| with: | |
| python-version: '3.11' | |
| - name: Install packages | |
| run: tools/ci.sh unix_32bit_setup | |
| - name: Build | |
| run: tools/ci.sh unix_coverage_32bit_build | |
| - name: Run main test suite | |
| run: tools/ci.sh unix_coverage_32bit_run_tests | |
| - name: Build native mpy modules | |
| run: tools/ci.sh native_mpy_modules_32bit_build | |
| - name: Test importing .mpy generated by mpy_ld.py | |
| run: tools/ci.sh unix_coverage_32bit_run_native_mpy_tests | |
| - name: Print failures | |
| if: failure() | |
| run: tests/run-tests.py --print-failures | |
| nanbox: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/setup-python@v6 | |
| # Python 3.12 is the default for ubuntu-24.04, but that has compatibility issues with settrace tests. | |
| # Can remove this step when ubuntu-latest uses a more recent Python 3.x as the default. | |
| with: | |
| python-version: '3.11' | |
| - name: Install packages | |
| run: tools/ci.sh unix_32bit_setup | |
| - name: Build | |
| run: tools/ci.sh unix_nanbox_build | |
| - name: Run main test suite | |
| run: tools/ci.sh unix_nanbox_run_tests | |
| - name: Print failures | |
| if: failure() | |
| run: tests/run-tests.py --print-failures | |
| longlong: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/setup-python@v6 | |
| # Python 3.12 is the default for ubuntu-24.04, but that has compatibility issues with settrace tests. | |
| # Can remove this step when ubuntu-latest uses a more recent Python 3.x as the default. | |
| with: | |
| python-version: '3.11' | |
| - name: Install packages | |
| run: tools/ci.sh unix_32bit_setup | |
| - name: Build | |
| run: tools/ci.sh unix_longlong_build | |
| - name: Run main test suite | |
| run: tools/ci.sh unix_longlong_run_tests | |
| - name: Print failures | |
| if: failure() | |
| run: tests/run-tests.py --print-failures | |
| float: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Build | |
| run: tools/ci.sh unix_float_build | |
| - name: Run main test suite | |
| run: tools/ci.sh unix_float_run_tests | |
| - name: Print failures | |
| if: failure() | |
| run: tests/run-tests.py --print-failures | |
| gil_enabled: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Build | |
| run: tools/ci.sh unix_gil_enabled_build | |
| - name: Run main test suite | |
| run: tools/ci.sh unix_gil_enabled_run_tests | |
| - name: Print failures | |
| if: failure() | |
| run: tests/run-tests.py --print-failures | |
| stackless_clang: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install packages | |
| run: tools/ci.sh unix_clang_setup | |
| - name: Build | |
| run: tools/ci.sh unix_stackless_clang_build | |
| - name: Run main test suite | |
| run: tools/ci.sh unix_stackless_clang_run_tests | |
| - name: Print failures | |
| if: failure() | |
| run: tests/run-tests.py --print-failures | |
| float_clang: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install packages | |
| run: tools/ci.sh unix_clang_setup | |
| - name: Build | |
| run: tools/ci.sh unix_float_clang_build | |
| - name: Run main test suite | |
| run: tools/ci.sh unix_float_clang_run_tests | |
| - name: Print failures | |
| if: failure() | |
| run: tests/run-tests.py --print-failures | |
| settrace_stackless: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/setup-python@v6 | |
| # Python 3.12 is the default for ubuntu-24.04, but that has compatibility issues with settrace tests. | |
| # Can remove this step when ubuntu-latest uses a more recent Python 3.x as the default. | |
| with: | |
| python-version: '3.11' | |
| - name: Build | |
| run: tools/ci.sh unix_settrace_stackless_build | |
| - name: Run main test suite | |
| run: tools/ci.sh unix_settrace_stackless_run_tests | |
| - name: Print failures | |
| if: failure() | |
| run: tests/run-tests.py --print-failures | |
| repr_b: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/setup-python@v6 | |
| # Python 3.12 is the default for ubuntu-24.04, but that has compatibility issues with settrace tests. | |
| # Can remove this step when ubuntu-latest uses a more recent Python 3.x as the default. | |
| with: | |
| python-version: '3.11' | |
| - name: Install packages | |
| run: tools/ci.sh unix_32bit_setup | |
| - name: Build | |
| run: tools/ci.sh unix_repr_b_build | |
| - name: Run main test suite | |
| run: tools/ci.sh unix_repr_b_run_tests | |
| - name: Print failures | |
| if: failure() | |
| run: tests/run-tests.py --print-failures | |
| macos: | |
| runs-on: macos-26 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/setup-python@v6 | |
| with: | |
| python-version: '3.8' | |
| - name: Build | |
| run: tools/ci.sh unix_macos_build | |
| - name: Run tests | |
| run: tools/ci.sh unix_macos_run_tests | |
| - name: Print failures | |
| if: failure() | |
| run: tests/run-tests.py --print-failures | |
| qemu_mips: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/setup-python@v6 | |
| # Python 3.12 is the default for ubuntu-24.04, but that has compatibility issues with settrace tests. | |
| # Can remove this step when ubuntu-latest uses a more recent Python 3.x as the default. | |
| with: | |
| python-version: '3.11' | |
| - name: Install packages | |
| run: tools/ci.sh unix_qemu_mips_setup | |
| - name: Build | |
| run: tools/ci.sh unix_qemu_mips_build | |
| - name: Run main test suite | |
| run: tools/ci.sh unix_qemu_mips_run_tests | |
| - name: Print failures | |
| if: failure() | |
| run: tests/run-tests.py --print-failures | |
| qemu_arm: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/setup-python@v6 | |
| # Python 3.12 is the default for ubuntu-24.04, but that has compatibility issues with settrace tests. | |
| # Can remove this step when ubuntu-latest uses a more recent Python 3.x as the default. | |
| with: | |
| python-version: '3.11' | |
| - name: Install packages | |
| run: tools/ci.sh unix_qemu_arm_setup | |
| - name: Build | |
| run: tools/ci.sh unix_qemu_arm_build | |
| - name: Run main test suite | |
| run: tools/ci.sh unix_qemu_arm_run_tests | |
| - name: Print failures | |
| if: failure() | |
| run: tests/run-tests.py --print-failures | |
| qemu_riscv64: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/setup-python@v6 | |
| # Python 3.12 is the default for ubuntu-24.04, but that has compatibility issues with settrace tests. | |
| # Can remove this step when ubuntu-latest uses a more recent Python 3.x as the default. | |
| with: | |
| python-version: '3.11' | |
| - name: Install packages | |
| run: tools/ci.sh unix_qemu_riscv64_setup | |
| - name: Build | |
| run: tools/ci.sh unix_qemu_riscv64_build | |
| - name: Run main test suite | |
| run: tools/ci.sh unix_qemu_riscv64_run_tests | |
| - name: Print failures | |
| if: failure() | |
| run: tests/run-tests.py --print-failures | |
| sanitize_address: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/setup-python@v6 | |
| # Python 3.12 is the default for ubuntu-24.04, but that has compatibility issues with settrace tests. | |
| # Can remove this step when ubuntu-latest uses a more recent Python 3.x as the default. | |
| with: | |
| python-version: '3.11' | |
| - name: Install packages | |
| run: tools/ci.sh unix_coverage_setup | |
| - name: Build | |
| run: tools/ci.sh unix_sanitize_address_build | |
| - name: Run main test suite | |
| run: tools/ci.sh unix_sanitize_address_run_tests | |
| - name: Test merging .mpy files | |
| run: tools/ci.sh unix_coverage_run_mpy_merge_tests | |
| - name: Build native mpy modules | |
| run: tools/ci.sh native_mpy_modules_build | |
| - name: Test importing .mpy generated by mpy_ld.py | |
| run: tools/ci.sh unix_coverage_run_native_mpy_tests | |
| - name: Print failures | |
| if: failure() | |
| run: tests/run-tests.py --print-failures | |
| sanitize_undefined: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/setup-python@v6 | |
| # Python 3.12 is the default for ubuntu-24.04, but that has compatibility issues with settrace tests. | |
| # Can remove this step when ubuntu-latest uses a more recent Python 3.x as the default. | |
| with: | |
| python-version: '3.11' | |
| - name: Install packages | |
| run: tools/ci.sh unix_coverage_setup | |
| - name: Build | |
| run: tools/ci.sh unix_sanitize_undefined_build | |
| - name: Run main test suite | |
| run: tools/ci.sh unix_sanitize_undefined_run_tests | |
| - name: Test merging .mpy files | |
| run: tools/ci.sh unix_coverage_run_mpy_merge_tests | |
| - name: Build native mpy modules | |
| run: tools/ci.sh native_mpy_modules_build | |
| - name: Test importing .mpy generated by mpy_ld.py | |
| run: tools/ci.sh unix_coverage_run_native_mpy_tests | |
| - name: Print failures | |
| if: failure() | |
| run: tests/run-tests.py --print-failures |