1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
# 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
|