mirror of
https://github.com/bearlanguageorg/bear.git
synced 2026-08-26 15:17:19 +00:00
80 lines
2.5 KiB
YAML
80 lines
2.5 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
pull_request:
|
|
branches: [main]
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
build-and-test:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Install V
|
|
run: |
|
|
git clone --depth 1 https://github.com/vlang/v /tmp/v
|
|
cd /tmp/v && make
|
|
sudo ln -sf /tmp/v/v /usr/local/bin/v
|
|
v version
|
|
|
|
- name: Build toolchain
|
|
run: v -o bin/vr .
|
|
|
|
- name: Smoke test — compile and run hello.vr
|
|
run: ./bin/vr run examples/hello.vr
|
|
|
|
- name: Smoke test — compile and run fib.vr
|
|
run: ./bin/vr run examples/fib.vr
|
|
|
|
- name: Smoke test — compile and run structs.vr
|
|
run: ./bin/vr run examples/structs.vr
|
|
|
|
- name: Smoke test — compile and run match.vr
|
|
run: ./bin/vr run examples/match.vr
|
|
|
|
- name: Smoke test — compile and run arrays.vr
|
|
run: ./bin/vr run examples/arrays.vr
|
|
|
|
- name: Smoke test — assemble, link, and run math.vasm
|
|
run: |
|
|
./bin/vr assemble examples/math.vasm -o /tmp/math.vobj
|
|
./bin/vr link /tmp/math.vobj -o /tmp/math.vbin
|
|
./bin/vr run /tmp/math.vbin
|
|
|
|
- name: Smoke test — multi-file compile + link
|
|
run: |
|
|
./bin/vr compile examples/lib.vr -o /tmp/lib.vobj
|
|
./bin/vr compile examples/use_lib.vr -o /tmp/use_lib.vobj
|
|
./bin/vr link /tmp/lib.vobj /tmp/use_lib.vobj -o /tmp/use_lib.vbin
|
|
./bin/vr run /tmp/use_lib.vbin
|
|
|
|
- name: Run test suite
|
|
# test_failing is intentionally skipped — it asserts 1 == 2 on purpose.
|
|
# The test runner exits 1 if any test_* fails, so we run every .vr file
|
|
# that does NOT contain a test_failing function. examples/tests.vr has
|
|
# test_failing, so we compile a clean copy without it.
|
|
run: |
|
|
grep -n 'fn test_failing' examples/tests.vr || true
|
|
sed '/fn test_failing/,/^}/d' examples/tests.vr > /tmp/ci_tests.vr
|
|
./bin/vr test /tmp/ci_tests.vr
|
|
|
|
- name: Run stdlib test suite
|
|
run: |
|
|
./bin/vr test examples/stdlib.vr
|
|
|
|
- name: LSP smoke test
|
|
run: |
|
|
BODY='{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}'
|
|
printf 'Content-Length: %d\r\n\r\n%s' "${#BODY}" "$BODY" | ./bin/vr lsp | grep -q '"id":1' && echo "LSP responded"
|
|
|
|
- name: Watch-mode and directory-test smoke
|
|
run: |
|
|
./bin/vr test examples | grep -q 'passed'
|