Skip to content

0.20.0: over openkal-musl 0.29 and the OpenKal 0.25 implementations; tests on the mtest library - #70

Merged
Sunrisepeak merged 5 commits into
mainfrom
feat/0.29.0
Nov 10, 2026
Merged

Sunrisepeak merged 5 commits into
mainfrom
feat/0.29.0

Conversation

@Sunrisepeak

@Sunrisepeak Sunrisepeak commented Nov 9, 2026 •

Copy link
Copy Markdown
Member

Summary

Tests on the mtest library

tests/ is a package beside the runtime, as the examples are. The runtime's own build compiles libc++ with its own dialect flags, so a program that imports std is a consumer of what that build makes. Its tests are mtest UTest objects above this runtime, openkal-musl and the system's openkal implementation:

  • cxx: examples/cxx's observations as one case (exceptions across frames, threads, filesystem names with volumes, links, random_device, thread_local destructors). The example stays the program the cross-builds carry.
  • hard_link: std::filesystem::create_hard_link over openkal-musl's link. It checks that the two names are one file (equivalent), that a taken name is refused, and that the file remains when one name is removed. hard_link_count is not asserted: openkal's node information carries no count of names, so it answers 1.
  • program_search (openkal-musl K11):
    • On Windows: hostname is found as hostname.exe through a ; PATH (an absent entry first) with PATHEXT set and with the default suffixes; hostname.exe given with its suffix is found as given; a name found nowhere is not started; a suffixless non-program file hostname in an earlier entry does not stop the search.
    • Elsewhere: true is found past an absent entry of a colon PATH.

CI runs the tests on Linux and natively on the Windows and macOS hosts. The mtest pin is in .github/versions.env, which the mtest action reads, so no workflow states it. Each job reports through .github/actions/test-report: the stores mcpp test kept are taken into one store of the job, written to the job's summary and kept as an artifact. The report job writes the workflow run's group (mtest ci report --group). tools/branch-graph.sh also makes the tests' package name the stack's working trees from its root: mcpplibs.os, reached through mtest, states the specification and the implementation by version, and the engine refused a path from inside the graph against those versions.

Test plan

  • Existing suite at the functional change: CI run 42714691746 green at a6c82a7 (55fe36b plus the okrun pin).
  • Tests on the mtest library: CI run 42719543679 green at 9a8d595.
    • The Windows host passes program_search, hard_link and cxx natively; Linux and macOS pass the same three.
    • The macOS image job's first attempt failed only on the L2 bench gate (index/symbol 1.16 against a limit of 1.15; it passed at a6c82a7), and passed on rerun.
  • Review changes (versions.env, test-report action, ci report --group): CI run 42726797128 green at 3ef2471, all 11 checks.

The step installed mcpp unpinned and received 2026.10.24.1, which
openkal-run 0.5.4 refuses (requires mcpp >= 2026.11.9.1).
tests/ is a package beside the runtime, as the examples are, whose tests
are mtest UTest objects above this runtime, openkal-musl and the
system's openkal implementation:

- cxx: examples/cxx's observations as one case (exceptions across
  frames, threads, filesystem names with volumes, links, random_device,
  thread_local destructors); the example stays the program the
  cross-builds carry.
- hard_link: std::filesystem::create_hard_link over openkal-musl's link,
  the two names one file, a taken name refused, one name removed.
- program_search: a program named without a separator is found by the
  system's conventions; on Windows hostname through a semicolon PATH and
  PATHEXT (openkal-musl 0.29.0, K11), elsewhere true past an absent
  entry of a colon PATH.

CI runs them on Linux and on each host (Windows and macOS natively),
writes mtest's report to each job's summary, keeps the store, and joins
every job's runs in a report job. The engine is mcpp 2026.11.9.1.
tests/ reaches mcpplibs.os through the test library, and os states the
specification and the implementation by version; the trees are named by
the C library, which is not the root, and the engine refused the graph
("requested as both a path dep ... and a version dep ... Pick one").
The mtest action reads MTEST_VERSION and MTEST_SHA256 from
.github/versions.env, so no workflow states the pin. The two jobs that
run the tests report through .github/actions/test-report (the stores mcpp
test kept, taken into one store of the job, the job's summary, the
artifact), as mcpp's CI does, and the report job writes the workflow
run's group (mtest ci report --group).
@Sunrisepeak
Sunrisepeak merged commit 33dec60 into main Nov 10, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant