Skip to content

Merge pull request #1549 from SchoolyB/feat/io-filesystem-paths #782

Merge pull request #1549 from SchoolyB/feat/io-filesystem-paths

Merge pull request #1549 from SchoolyB/feat/io-filesystem-paths #782

Workflow file for this run

name: CI
on:
push:
branches:
- main
- v3.0.0
pull_request:
branches:
- main
- v3.0.0
jobs:
test:
name: Build and Test
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
go-version: ['1.23']
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: ${{ matrix.go-version }}
# ===== Go CLI =====
- name: Build ez CLI
run: go build -o ez ./cmd/ez
- name: Run Go unit tests
run: go test ./pkg/lineeditor/...
# ===== EZ Compiler =====
- name: Build EZ compiler
run: |
cd ezc
make clean
make build
- name: Run EZ unit tests (lexer + parser + typechecker)
run: |
cd ezc
make test-unit
- name: Run EZ end-to-end tests
run: |
cd ezc
make test-e2e
- name: Run EZ integration tests (core + stdlib + named returns)
run: |
cd ezc
make test-integration
- name: Run EZ UBSan tests
run: |
cd ezc
make test-ubsan
- name: Run EZ ASan tests (Linux only)
if: runner.os == 'Linux'
env:
ASAN_OPTIONS: detect_leaks=0
run: |
cd ezc
make test-asan
- name: Type-check scaffolded pz templates
run: |
# Smoke-test every `ez pz` template against the freshly
# built compiler. Catches drift between the language and
# the scaffolder before a release ships (#1462).
set -e
tmp=$(mktemp -d)
for t in basic cli lib multi; do
./ez pz "$tmp/pz-$t" -t "$t"
./ez check "$tmp/pz-$t/main.ez"
done
for t in server client; do
for s in minimal normal; do
./ez pz "$tmp/pz-$t-$s" -t "$t" -s "$s"
./ez check "$tmp/pz-$t-$s/main.ez"
done
done
rm -rf "$tmp"
echo "All pz templates type-check clean"