Skip to content

0.4.1: a body returns nothing; suite types across sources; tag conjunction - #6

Merged
Sunrisepeak merged 2 commits into
mainfrom
release/0.4.1
Nov 8, 2026
Merged

Sunrisepeak merged 2 commits into
mainfrom
release/0.4.1

Conversation

@Sunrisepeak

@Sunrisepeak Sunrisepeak commented Nov 8, 2026 •

Copy link
Copy Markdown
Member

Summary

  • A body returns nothing. body's constructor requires a callable whose result is void, and the suite types and values | f state the same with a static_assert. A case ends at its end, at return;, at skip() or at fail(). Before, a value-returning lambda was accepted and its value discarded; a main converted to an object's body kept if (!x) return 1; and fell off the end of a non-void lambda (undefined behaviour, a SIGILL under clang).
  • The static manifest reads a project's suite types across its sources. manifest::types_of(sources) returns the types a set of sources declares (a type deriving from a type of another source included), and scan(source, types) reads a file's cases with them. mtest list --static reads the types of every C++ source of the project first, so a type written once in a module that the tests import (class Fixture : public CTS in fixture.cppm) is its base's kind in every file that uses it.
  • A tag selection a&b names the cases that have both tags (--tag 'on:linux-x64&release', and a set's tags); the tags given stay alternatives, and a case has its program's tags as well as its own. A project that tags its cases by platform and by purpose selects one purpose on one platform.
  • Version 0.4.1 everywhere; CHANGELOG; docs/layout.md states both rules.

Tests

  • lib/tests/suites.cpp: body is constructible from void() and not from int().
  • manifest/tests/manifest.cpp: a type in another source, one derived from it, and the absence of cases when the type is unknown.
  • engine/tests/engine.cpp: list --static reads a Bench-derived type declared in a module beside the tests; --tag 'a&b' selects the case with both tags and none when no case has both.
  • Local: mcpp test passes for mcpplibs.mtest, mcpplibs.mtest.manifest, mtest.mtest and conformance.

Co-authored-by: speak-agent [email protected]

@Sunrisepeak Sunrisepeak changed the title 0.4.1: a body returns nothing; the static manifest reads a project's suite types across its sources 0.4.1: a body returns nothing; suite types across sources; tag conjunction Nov 8, 2026
@Sunrisepeak
Sunrisepeak merged commit 9c1a431 into main Nov 8, 2026
8 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