Add interactive todo_demo example and document it in README, CHANGELO… #69
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: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| permissions: | |
| contents: read | |
| jobs: | |
| rust: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@1.96.0 | |
| with: | |
| components: rustfmt, clippy | |
| - uses: Swatinem/rust-cache@v2 | |
| - run: cargo fmt --check | |
| - run: cargo test | |
| - run: cargo clippy -- -D warnings | |
| - run: cargo build --release --bin ion-compiler --bin ion-lsp --bin ion-build | |
| - run: ./target/release/ion-compiler --version | |
| - run: ./target/release/ion-build --version | |
| - name: Integration tests (Linux) | |
| shell: bash | |
| env: | |
| COMPILER: ${{ github.workspace }}/target/release/ion-compiler | |
| ION_BUILD: ${{ github.workspace }}/target/release/ion-build | |
| run: cd tests && bash test_runner.sh | |
| - name: Generated C sanitizer smoke (Linux) | |
| shell: bash | |
| env: | |
| COMPILER: ${{ github.workspace }}/target/release/ion-compiler | |
| CC: gcc | |
| CFLAGS: -fsanitize=address,undefined -fno-omit-frame-pointer | |
| LDFLAGS: -fsanitize=address,undefined | |
| ASAN_OPTIONS: detect_leaks=0 | |
| UBSAN_OPTIONS: halt_on_error=1 | |
| run: | | |
| cd tests | |
| "$CC" $CFLAGS -c ../runtime/ion_runtime.c -I. -I.. -I../runtime -o .ion_test_runtime_san.o | |
| while IFS=' ' read -r test expected; do | |
| "$COMPILER" "$test.ion" >/dev/null | |
| "$CC" $CFLAGS "$test.c" .ion_test_runtime_san.o -I. -I.. -I../runtime -lpthread $LDFLAGS -o "$test" | |
| set +e | |
| "./$test" >/dev/null | |
| status=$? | |
| set -e | |
| if [ "$status" -ne "$expected" ]; then | |
| echo "$test: expected exit $expected, got $status" | |
| exit 1 | |
| fi | |
| rm -f "$test.c" "$test" | |
| done <<'EOF' | |
| test_basic 42 | |
| test_vec_push_pop 0 | |
| test_string_push_byte 79 | |
| test_spawn_channel 0 | |
| test_array_to_slice_coercion 10 | |
| EOF | |
| - name: Generated C warning-clean (Linux) | |
| shell: bash | |
| env: | |
| COMPILER: ${{ github.workspace }}/target/release/ion-compiler | |
| ION_BUILD: ${{ github.workspace }}/target/release/ion-build | |
| CC: gcc | |
| CFLAGS: -Wall -Wextra -Werror | |
| RUNTIME_OBJ: .ion_test_runtime_werror.o | |
| run: cd tests && bash test_runner.sh | |
| integration: | |
| permissions: | |
| contents: read | |
| runs-on: windows-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@1.96.0 | |
| - uses: Swatinem/rust-cache@v2 | |
| - run: cargo build --release --bin ion-compiler --bin ion-build | |
| - name: Integration tests (Windows) | |
| shell: bash | |
| env: | |
| COMPILER: ${{ github.workspace }}/target/release/ion-compiler | |
| ION_BUILD: ${{ github.workspace }}/target/release/ion-build | |
| run: cd tests && bash test_runner.sh |