Repository navigation
Run the suite, and refuse a construct that stops a test asserting - #20
Merged
estebanzimanyi merged 6 commits intoOct 31, 2026
Merged
Conversation
estebanzimanyi
force-pushed
the
ci/no-test-can-be-skipped
branch
2 times, most recently
from
September 8, 2026 05:51
2a03e95 to
3f495ab
Compare
estebanzimanyi
force-pushed
the
ci/no-test-can-be-skipped
branch
from
October 30, 2026 23:47
3f495ab to
62d64ec
Compare
A function answering a bool hands its value back through a parameter named result, except where that parameter points to const: MEOS reads it and never writes through it. index_result_id takes the index result it reads as const MeosArray *result and answers through id, so its wrapper passes the array through and answers the bool, which is the one wrapper of the catalog this changes.
estebanzimanyi
force-pushed
the
ci/no-test-can-be-skipped
branch
from
October 31, 2026 01:22
62d64ec to
1330ade
Compare
The C wrappers and the TypeScript functions are regenerated from the catalog of MobilityDB master 3c5baef2b3: 4043 wrappers, none skipped and none duplicated. The geodetic lengths, speeds, distances and box distances of MEOS take a spheroid flag, so the object layer follows MobilityDB's PostgreSQL wrappers: TGeogPoint and STBox take an optional spheroid argument that defaults to true, and the planar TGeomPoint passes true, as the wrappers do when SQL names no spheroid. MEOS answers the distance of two timestamptz sets, spans or span sets as an interval, and TsTzSet, TsTzSpan and TsTzSpanSet answer it in microseconds, as they state, through interval_us_free, which reads the interval with the formula of temporal_duration_us and frees it. MEOS orders the base values of the temporal numbers and of ttext alone, so the Boolean tests state that atMin, atMax, minusMin and minusMax refuse a temporal Boolean, as SQL defines none of them for it. TNumber answers avgValue through tnumber_avg_value, the average value SQL names avgValue, and the box tests read a timestamp through the public timestamptz_in, so the sources and the tests type-check against the surface.
MEOS 1.4 calls neither GEOS nor GSL: its random draws come from the pg_prng generators of PostgreSQL, and its geometry operations are native. The image builds MobilityDB master, so it compiles neither library with Emscripten, passes neither to the CMake of MobilityDB, and links neither into the WebAssembly module. GDAL keeps GEOS off, as raster band sampling reaches no OGR geometry predicate.
estebanzimanyi
force-pushed
the
ci/no-test-can-be-skipped
branch
from
October 31, 2026 02:05
1330ade to
02ee740
Compare
MEOS opens spatial_ref_sys.csv at the data directory of the prefix it is installed in, /root/meos-install/share, so the module embeds the file at that path. A geometry naming an SRID and every MF-JSON output of a temporal point read their spatial reference system from it.
estebanzimanyi
force-pushed
the
ci/no-test-can-be-skipped
branch
from
October 31, 2026 02:24
02ee740 to
ce3977e
Compare
MEOS states the time shift and the time scale of a timestamptz set and of a timestamptz span as their own functions, tstzset_shift, tstzset_scale, tstzspan_shift and tstzspan_scale, and tstzset_shift_scale and tstzspan_shift_scale take both intervals. The wrappers are regenerated from the catalog of MobilityDB master cde4a92732, which adds these four: 4047 wrappers, none skipped and none duplicated. TsTzSet and TsTzSpan answer shift and scale through them, as Temporal answers shiftTime and scaleTime, and shiftScale takes both intervals. The shift tests of both classes call shift, the scale test of TsTzSpan calls scale, and a test of each class gives shiftScale both intervals.
The tests import `wasm/meos.js`, and only the `Build the WebAssembly module` job takes that module out of the image — a job without it can collect nothing. So the suite runs in that job and nowhere else, after `npm ci`, which is what `Regenerate from the catalog and type-check` cannot do and why 1073 `it(` assertions across 29 files reached no runner: the three jobs on main execute checkout, provision, npm ci, regenerate, drift, type-check, buildx, build module, report, and tree hygiene, and none of them runs a test. `set -o pipefail` before the tee is what makes the step honest. Without it the status is tee's, so a suite that FAILED would report success and every guard above it would read a log nobody was failing on. `tools/check-no-skips.mjs` reads the test sources and refuses the `skip` and `todo` options, the `.skip` and `.todo` property forms, and `t.skip()`. It reads sources only, so it needs neither node_modules nor the module and answers the same locally through `npm run check:no-skips`. A run that reads no file exits 2 rather than reporting a clean tree over an empty search. Five refuters, one per form, each naming the construct it caught; on the tree it reads 29 sources and 0 constructs. The large-temporal regression test loses its guard. It waited on a wasm rebuilt with `-sSTACK_SIZE=8MB`, and the Dockerfile builds with exactly that, so the precondition is supplied and the test runs.
estebanzimanyi
force-pushed
the
ci/no-test-can-be-skipped
branch
from
October 31, 2026 07:34
ce3977e to
5362928
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Read a result parameter MEOS declares const as an input
A function answering a bool hands its value back through a parameter
named result, except where that parameter points to const: MEOS reads
it and never writes through it. index_result_id takes the index result
it reads as const MeosArray *result and answers through id, so its
wrapper passes the array through and answers the bool, which is the one
wrapper of the catalog this changes.
Project the surface MEOS publishes today
The C wrappers and the TypeScript functions are regenerated from the
catalog of MobilityDB master 3c5baef2b3: 4043 wrappers, none skipped and
none duplicated. The geodetic lengths, speeds, distances and box
distances of MEOS take a spheroid flag, so the object layer follows
MobilityDB's PostgreSQL wrappers: TGeogPoint and STBox take an optional
spheroid argument that defaults to true, and the planar TGeomPoint
passes true, as the wrappers do when SQL names no spheroid.
MEOS answers the distance of two timestamptz sets, spans or span sets as
an interval, and TsTzSet, TsTzSpan and TsTzSpanSet answer it in
microseconds, as they state, through interval_us_free, which reads the
interval with the formula of temporal_duration_us and frees it. MEOS
orders the base values of the temporal numbers and of ttext alone, so the
Boolean tests state that atMin, atMax, minusMin and minusMax refuse a
temporal Boolean, as SQL defines none of them for it.
TNumber answers avgValue through tnumber_avg_value, the average value
SQL names avgValue, and the box tests read a timestamp through the public
timestamptz_in, so the sources and the tests type-check against the
surface.
Build neither GEOS nor GSL for MEOS 1.4
MEOS 1.4 calls neither GEOS nor GSL: its random draws come from the
pg_prng generators of PostgreSQL, and its geometry operations are native.
The image builds MobilityDB master, so it compiles neither library with
Emscripten, passes neither to the CMake of MobilityDB, and links neither
into the WebAssembly module. GDAL keeps GEOS off, as raster band sampling
reaches no OGR geometry predicate.
Embed the spatial reference systems where MEOS reads them
MEOS opens spatial_ref_sys.csv at the data directory of the prefix it is
installed in, /root/meos-install/share, so the module embeds the file at
that path. A geometry naming an SRID and every MF-JSON output of a
temporal point read their spatial reference system from it.
Shift or scale a timestamptz set or span alone
MEOS states the time shift and the time scale of a timestamptz set and of
a timestamptz span as their own functions, tstzset_shift, tstzset_scale,
tstzspan_shift and tstzspan_scale, and tstzset_shift_scale and
tstzspan_shift_scale take both intervals. The wrappers are regenerated
from the catalog of MobilityDB master cde4a92732, which adds these four:
4047 wrappers, none skipped and none duplicated. TsTzSet and TsTzSpan
answer shift and scale through them, as Temporal answers shiftTime and
scaleTime, and shiftScale takes both intervals.
The shift tests of both classes call shift, the scale test of TsTzSpan
calls scale, and a test of each class gives shiftScale both intervals.
Run the suite, and refuse a construct that stops a test asserting
The tests import
wasm/meos.js, and only theBuild the WebAssembly modulejobtakes that module out of the image — a job without it can collect nothing. So
the suite runs in that job and nowhere else, after
npm ci, which is whatRegenerate from the catalog and type-checkcannot do and why 1073it(assertions across 29 files reached no runner: the three jobs on main execute
checkout, provision, npm ci, regenerate, drift, type-check, buildx, build module,
report, and tree hygiene, and none of them runs a test.
set -o pipefailbefore the tee is what makes the step honest. Without it thestatus is tee's, so a suite that FAILED would report success and every guard
above it would read a log nobody was failing on.
tools/check-no-skips.mjsreads the test sources and refuses theskipandtodooptions, the.skipand.todoproperty forms, andt.skip(). It readssources only, so it needs neither node_modules nor the module and answers the
same locally through
npm run check:no-skips. A run that reads no file exits 2rather than reporting a clean tree over an empty search. Five refuters, one per
form, each naming the construct it caught; on the tree it reads 29 sources and 0
constructs.
The large-temporal regression test loses its guard. It waited on a wasm rebuilt
with
-sSTACK_SIZE=8MB, and the Dockerfile builds with exactly that, so theprecondition is supplied and the test runs.