# One job: a check on what common/ is allowed to contain, on every push. # # Nothing is built here. The check reads source and no more, so this file needs # no toolchain at all, which is what keeps it honest about running on every # push. There used to be a second, scheduled job that re-resolved the # jolt-native flake input; there is no jolt half any more and no input to # follow, so there is nothing for a schedule to do. stages: [check] # common/ is compiled by ClojureDart for two targets — the APK and the Linux # desktop — and shared code reaching for the JVM or a `dart:` library breaks # one of them at a namespace nobody touched. `Math/ceil` in the compose bar was # the third time. Reading the source is enough to catch it, which is why this # needs no toolchain and no builder: python and a checkout, a few seconds, on # every push. check-common: stage: check image: python:3-alpine script: - python3 tools/check-common.py common # The Nim core's tests. A second job rather than a step in the first, because # it wants a compiler where check-common wants nothing: one can fail without # hiding the other, and the pair of them is still seconds. nim-test: stage: check image: nimlang/nim:2.2.0-alpine script: - cd nim && for t in tests/t*.nim; do nim c -r --hints:off --path:src "$t"; done # The Dart side of the same boundary. Needs the Nim library built first, which # is why this is one job and not two: the artifact would be larger than the # build that makes it. dart-test: stage: check image: dart:3.13 script: - apt-get update -qq && apt-get install -y -qq nim - cd nim && nim c --app:lib --mm:orc -d:release --hints:off --path:src --out:../build/nim/libfrqcore.so src/frq_core.nim - cd ../dart/frq_core && dart pub get && dart test -r expanded