Check the reference corpus in, so the build stops needing the Go submodule
All 41 .bas/.txt pairs copied byte for byte from basicinterpreter@d76162c into tests/reference/, plus the Commodore font into assets/fonts/ -- the two things that tied the build to deps/basicinterpret. Both were verified cmp-identical to the submodule copies. This reverses a decision that was deliberate and correct at the time: the corpus was driven in place because copying a submodule's corpus guarantees drift. Overruled on purpose -- the Go dependency is being deprecated, and a build that cannot run its acceptance suite without cloning the implementation it replaced is not finished. tests/reference/README.md records what the drift now costs and that those expectations are never edited. Checked rather than assumed: both configurations configure, build and pass from scratch with deps/basicinterpret moved out of the tree entirely. The submodule is kept as the behavioural spec, which is a real use. The font came with an open licence question; assets/fonts/PROVENANCE.md states it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -15,8 +15,10 @@ jobs:
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
# Not recursive, deliberately. The top-level build needs
|
||||
# deps/libakerror and deps/libakstdlib (via add_subdirectory) and
|
||||
# deps/basicinterpret (the golden corpus is driven in place from it).
|
||||
# deps/libakerror and deps/libakstdlib, via add_subdirectory, and
|
||||
# nothing else: the golden corpus and the Commodore font now live in
|
||||
# this repository (tests/reference/ and assets/fonts/), so
|
||||
# deps/basicinterpret is no longer a build dependency at all.
|
||||
# It does *not* need deps/libakgl, which is guarded behind
|
||||
# AKBASIC_WITH_AKGL and defaults OFF -- and recursing into it would
|
||||
# clone SDL, SDL_image, SDL_mixer, SDL_ttf and jansson for a target
|
||||
@@ -32,12 +34,13 @@ jobs:
|
||||
run: |
|
||||
cmake -S . -B build
|
||||
cmake --build build --parallel
|
||||
# The suite is 70 cases: 41 golden files byte-compared against the Go
|
||||
# reference's own corpus, 5 local golden cases for verbs the reference
|
||||
# never implemented, 21 unit tests, 2 embedding examples, and 1
|
||||
# known-failing test that asserts the *correct* contract for defects
|
||||
# carried over from the reference (TODO.md section 6). A green run
|
||||
# therefore does not mean defect-free -- see AKBASIC_KNOWN_FAILING_TESTS.
|
||||
# The suite is 78 cases: 41 golden files byte-compared against the Go
|
||||
# reference's own corpus (checked in at tests/reference/, see its README),
|
||||
# 9 local golden cases for verbs the reference never implemented, 25 unit
|
||||
# tests, 2 embedding examples, and 1 known-failing test that asserts the
|
||||
# *correct* contract for defects carried over from the reference (TODO.md
|
||||
# section 6). A green run therefore does not mean defect-free -- see
|
||||
# AKBASIC_KNOWN_FAILING_TESTS.
|
||||
#
|
||||
# AKBASIC_WITH_AKGL is off here, which is the point rather than an
|
||||
# omission: this job is what proves the interpreter builds and passes on a
|
||||
@@ -96,13 +99,14 @@ jobs:
|
||||
run: |
|
||||
sudo apt-get update -y
|
||||
sudo apt-get install -y cmake gcc gcovr
|
||||
# The gate is a ratchet, not a target: src/ sits at 93.5% of lines and
|
||||
# 97.8% of functions, so 90 fails on a real regression (a test deleted, or
|
||||
# The gate is a ratchet, not a target: src/ sits at 94.6% of lines and
|
||||
# 98.6% of functions, so 90 fails on a real regression (a test deleted, or
|
||||
# new untested code added) without tripping over rounding.
|
||||
#
|
||||
# The akbasic_akgl target is not in this figure. It is not built in a
|
||||
# default configuration, and instrumenting it would drag SDL into the
|
||||
# coverage job for four thin adaptors.
|
||||
# The akbasic_akgl and akbasic_frontend targets are not in this figure.
|
||||
# Neither is built in a default configuration, and instrumenting them would
|
||||
# drag SDL into the coverage job for four thin adaptors and a host. What
|
||||
# covers them instead is the akgl_build job below.
|
||||
#
|
||||
# There is deliberately no branch gate. Branch coverage reads about 18%
|
||||
# and is not a meaningful number here, for the reason libakgl's and
|
||||
@@ -235,9 +239,9 @@ jobs:
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
# The harness copies the repo and configures a build inside the copy,
|
||||
# so it needs the same submodules the main build does -- including
|
||||
# deps/basicinterpret, because the golden corpus is part of what kills
|
||||
# mutants.
|
||||
# so it needs the same submodules the main build does. The golden
|
||||
# corpus is part of what kills mutants and it is checked in now, so
|
||||
# that is libakerror and libakstdlib and nothing else.
|
||||
submodules: true
|
||||
- name: dependencies
|
||||
run: |
|
||||
|
||||
@@ -66,9 +66,9 @@ jobs:
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
# The harness copies the repo and configures a build inside the copy,
|
||||
# so it needs the same submodules the main build does -- including
|
||||
# deps/basicinterpret, because the golden corpus is part of what kills
|
||||
# mutants.
|
||||
# so it needs the same submodules the main build does. The golden
|
||||
# corpus is part of what kills mutants and it is checked in now, so
|
||||
# that is libakerror and libakstdlib and nothing else.
|
||||
submodules: true
|
||||
- name: dependencies
|
||||
run: |
|
||||
|
||||
Reference in New Issue
Block a user