Skip to content

feat(#7): release/RC jar-name tests; RC builds pass build.sh's wheel check - #13

Merged
robfrank merged 1 commit into
mainfrom
feat/7-release-rc-jar-name-tests
Oct 23, 2026
Merged

robfrank merged 1 commit into
mainfrom
feat/7-release-rc-jar-name-tests

Conversation

@robfrank

Copy link
Copy Markdown
Contributor

Closes #7

This adds end-to-end tests that start from a release or RC engine jar's file name, for both extract_version() and the CLI, in both --format=pep440 and --format=docker. Testing that path further found a real bug in scripts/build.sh. Its local-jars wheel check (the inline python3 - << 'PY' block) turned the engine version into the wheel version with its own rules: .replace("-SNAPSHOT","").replace("-","."). That maps 26.11.1-RC1 to 26.11.1.RC1. No RC wheel (26.11.1rc1) matches that, so a local-jars RC build failed with no arcadedb_embedded-26.11.1.RC1 wheel in dist/. The check now uses the same rules as extract_version.py's maven_to_pep440.

Test plan

  • tests/test_extract_version.py: 8 new parametrized cases (release, release+post, RC, RC+post), through the module and the CLI. The CLI cases also check that --python-patch doesn't change the docker string.
  • Mutation check: with the RC and .post conversion broken in extract_version.py, the new tests fail (7 failures); with it restored, they pass.
  • tests/test_build_wheel_check.py runs the heredoc from build.sh unchanged, for SNAPSHOT, release and RC versions, against a fake dist/ wheel and local-jars/lib jar. RED on main: the RC case fails with ❌ no arcadedb_embedded-26.11.1.RC1 wheel in dist/. GREEN with this change.
  • Full suite on darwin/arm64: 1070 passed.

Coverage

Invariant: a release or RC engine jar gives the right package version and docker string, and a build from it passes build.sh's wheel check.

Entry point Fixed Tested
extract_version() (used by write_version.py:42 and Dockerfile.build:229) already correct yes
CLI --format=pep440 / --format=docker (build-native.sh:311, both workflows' download-jars) already correct yes
build.sh local-jars wheel check fixed here yes, the real heredoc

Known gaps: None. write_version.py wraps extract_version(jars_dir), so it is covered through extract_version(), not with a test of its own.

Adversarial pass

  1. An RC version breaks build.sh's wheel check. Real. Fixed here, with a test that runs the heredoc.
  2. The .postN rows test a path no build passes. True: --python-patch is only for running the script by hand, and the script's own docstring documents it. The tests keep it working, and the comment now says that no build path passes it.
  3. The test comment named the wrong consumer of the docker string. Fixed: it now names download-jars → ARCADEDB_TAG and the build.sh check.
  4. The docker rows with a patch value added nothing. Fixed: the CLI now passes --python-patch with --format=docker too, which checks that it's ignored there.
  5. write_version.py isn't tested end to end for release/RC. Not changed: it calls extract_version(jars_dir) directly, which is tested.

Review cycles

This repository has no Claude review workflow, so no bot review was waited for. Final state: no-reviewer.

🤖 Generated with Claude Code

…s wheel check

extract_version is tested end to end from release and RC engine jar names
(module and CLI, pep440 and docker). Running build.sh's local-jars wheel
check for the same versions found it mapped 26.11.1-RC1 to 26.11.1.RC1,
which no RC wheel (26.11.1rc1) matches: it now follows maven_to_pep440's
rules. tests/test_build_wheel_check.py runs that heredoc unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@robfrank
robfrank merged commit 0674068 into main Oct 23, 2026
46 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.

Tests: no end-to-end jar-name tests for release and RC versions

1 participant