Skip to content

Run the suite, and refuse a construct that stops a test asserting - #20

Merged
estebanzimanyi merged 6 commits into
MobilityDB:mainfrom
estebanzimanyi:ci/no-test-can-be-skipped
Oct 31, 2026
Merged

estebanzimanyi merged 6 commits into
MobilityDB:mainfrom
estebanzimanyi:ci/no-test-can-be-skipped

Conversation

@estebanzimanyi

@estebanzimanyi estebanzimanyi commented Sep 8, 2026 •

Copy link
Copy Markdown
Member

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 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
estebanzimanyi force-pushed the ci/no-test-can-be-skipped branch 2 times, most recently from 2a03e95 to 3f495ab Compare September 8, 2026 05:51
@estebanzimanyi
estebanzimanyi force-pushed the ci/no-test-can-be-skipped branch from 3f495ab to 62d64ec Compare October 30, 2026 23:47
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
estebanzimanyi force-pushed the ci/no-test-can-be-skipped branch from 62d64ec to 1330ade Compare October 31, 2026 01:22
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
estebanzimanyi force-pushed the ci/no-test-can-be-skipped branch from 1330ade to 02ee740 Compare October 31, 2026 02:05
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
estebanzimanyi force-pushed the ci/no-test-can-be-skipped branch from 02ee740 to ce3977e Compare October 31, 2026 02:24
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
estebanzimanyi force-pushed the ci/no-test-can-be-skipped branch from ce3977e to 5362928 Compare October 31, 2026 07:34
@estebanzimanyi
estebanzimanyi merged commit bd0ce05 into MobilityDB:main Oct 31, 2026
3 checks passed
@estebanzimanyi
estebanzimanyi deleted the ci/no-test-can-be-skipped branch October 31, 2026 08:47
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