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 default-jdk - name: Run benchmark suite run: make benchmark