name: CI
on:
push:
branches:
- main
- master
pull_request:
branches:
- main
- master
jobs:
unit-tests:
name: Unit Tests
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y gcc make
- name: Build unit tests
run: |
make test_lexer
make test_parser
make test_semantic
make test_ir
- name: Run lexer tests
run: ./test_lexer
- name: Run parser tests
run: ./test_parser
- name: Run semantic tests
run: ./test_semantic
- name: Run IR tests
run: ./test_ir
integration-tests:
name: Integration Tests
runs-on: ubuntu-latest
needs: unit-tests
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y gcc make
- name: Build integration tests
run: |
make test_runtime
make test_strings
make test_arrays
make test_objects
make test_instance_methods
make test_fileio
- name: Run runtime tests
run: ./test_runtime
- name: Run string tests
run: ./test_strings
- name: Run array tests
run: ./test_arrays
- name: Run object tests
run: ./test_objects
- name: Run instance method tests
run: ./test_instance_methods
- name: Run file I/O tests
run: ./test_fileio
optimization-tests:
name: Optimization Infrastructure Tests
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y gcc make
- name: Build Phase 0 tests
run: |
make test_nanbox
make test_fastframe
make test_labeltable
make test_methodcache
- name: Run NaN boxing tests
run: ./test_nanbox
- name: Run fast frame tests
run: ./test_fastframe
- name: Run label table tests
run: ./test_labeltable
- name: Run method cache tests
run: ./test_methodcache
benchmark:
name: Performance Benchmark
runs-on: ubuntu-latest
needs: [unit-tests, integration-tests]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y gcc make python3
- name: Build benchmark
run: make test_benchmark
- name: Run benchmark
run: ./test_benchmark