From 75a4b2a66bf98eea002dd5877d0dc95a549be9b0 Mon Sep 17 00:00:00 2001 From: Griffin Long <151978260+DrunkOnJava@users.noreply.github.com> Date: Wed, 28 Oct 2026 06:53:54 -0400 Subject: [PATCH 1/2] ci(corpus): run every corpus-reading real target in the Corpus job integration_dxf_roundtrip, integration_gltf and integration_legacy_container read ../../samples and skip when it is absent, which is every Test leg, and the Corpus job's list of targets did not name them, so they ran nowhere with the 19 pinned drawings in place. The step now runs all eight targets of tools/ci/test-targets.txt that read the corpus, and fails on the "convert failed" early return of integration_dxf_roundtrip as well as on a skip, since both pass vacuously. --- .github/workflows/ci.yml | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4f8a6b35..18e39b8c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -291,15 +291,21 @@ jobs: with: path: ~/dwg-corpus key: dwg-corpus-${{ hashFiles('tools/corpus/pins.tsv') }} - # tests/samples.rs, class_census.rs, block_names.rs, corpus_roundtrip.rs - # and r2013_entity_values.rs read ../../samples and skip silently when a - # file is absent, so a skip here would be a vacuous pass. + # Every tests/ target of tools/ci/test-targets.txt that reads ../../samples + # (class real): samples, class_census, block_names, corpus_roundtrip, + # r2013_entity_values, integration_dxf_roundtrip, integration_gltf and + # integration_legacy_container. They skip silently when a file is absent, + # so a skip here would be a vacuous pass; integration_dxf_roundtrip also + # returns early, printing "convert failed", when the converter errors on + # the drawing, which passes just as vacuously. Both fail the step below. - name: Real-file tests on the 19-file corpus if: steps.fetch.outputs.measured == 'true' run: | set +e cargo +stable test --release --all-features --test samples --test class_census \ --test block_names --test corpus_roundtrip --test r2013_entity_values \ + --test integration_dxf_roundtrip --test integration_gltf \ + --test integration_legacy_container \ -- --nocapture > corpus-tests.log 2>&1 status=$? set -e @@ -307,8 +313,8 @@ jobs: if [ "$status" -ne 0 ]; then exit "$status" fi - if grep -n -i 'skipping' corpus-tests.log; then - echo "::error::a corpus test skipped although the corpus is present" + if grep -n -i -e 'skipping' -e 'convert failed' corpus-tests.log; then + echo "::error::a corpus test skipped or returned early although the corpus is present" exit 1 fi - name: Measure every pinned drawing and check the ratchet From 242e2d0baa269221153bec823c892be683cb2db5 Mon Sep 17 00:00:00 2001 From: Griffin Long <151978260+DrunkOnJava@users.noreply.github.com> Date: Wed, 28 Oct 2026 07:40:47 -0400 Subject: [PATCH 2/2] chore(ci): leave out the byte-built tests of integration_legacy_container in the Corpus job The manifest classes integration_legacy_container as real with seven tests skipped, because they build their flat files and page maps byte by byte. The Corpus step ran the file whole. It now passes the same seven names to libtest's --skip, so the manifest stays the one statement of what runs. --- .github/workflows/ci.yml | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 18e39b8c..994fda87 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -294,7 +294,10 @@ jobs: # Every tests/ target of tools/ci/test-targets.txt that reads ../../samples # (class real): samples, class_census, block_names, corpus_roundtrip, # r2013_entity_values, integration_dxf_roundtrip, integration_gltf and - # integration_legacy_container. They skip silently when a file is absent, + # integration_legacy_container, without the seven byte-built tests its + # skip= list in the manifest leaves out (the names are unique across the + # eight binaries, and libtest's --skip applies to all of them). They skip + # silently when a file is absent, # so a skip here would be a vacuous pass; integration_dxf_roundtrip also # returns early, printing "convert failed", when the converter errors on # the drawing, which passes just as vacuously. Both fail the step below. @@ -306,7 +309,15 @@ jobs: --test block_names --test corpus_roundtrip --test r2013_entity_values \ --test integration_dxf_roundtrip --test integration_gltf \ --test integration_legacy_container \ - -- --nocapture > corpus-tests.log 2>&1 + -- --nocapture \ + --skip r14_flat_file_walks_its_object_map_and_decodes_a_line \ + --skip r2000_flat_file_walks_its_object_map_and_decodes_a_line \ + --skip r13_r15_object_stream_is_the_whole_file \ + --skip r13_r15_locators_carry_the_canonical_section_names \ + --skip r2007_locates_its_string_stream_from_the_object_prologue \ + --skip r2007_system_page_size_matches_the_spec_pseudo_code \ + --skip r2007_page_map_pairs_accumulate_into_offsets \ + > corpus-tests.log 2>&1 status=$? set -e cat corpus-tests.log