Skip to content

Test every package against the packages it depends on in this checkout - #41

Merged
jwrosewell merged 1 commit into
rcfrom
ci/tox-local-dependencies
Nov 5, 2026
Merged

jwrosewell merged 1 commit into
rcfrom
ci/tox-local-dependencies

Conversation

@jwrosewell

Copy link
Copy Markdown
Contributor

Problem

The publish of release #37 failed in all 15 Test jobs on two Device Detection cloud tests, which #38 fixed. Those tests had passed in every pull request build after #35 changed the link they check, because the pull request builds did not test the code that was about to be released.

The Device Detection cloud package's tox.ini installed fiftyone_devicedetection_shared from the checkout, but nothing else, so pip took its pipeline packages from PyPI. The integration tests of #36's full build (run 41881062372, Ubuntu Python 3.12) ran with these:

fiftyone_devicedetection_cloud @ file:///.../fiftyone_devicedetection_cloud-4.5.102-py3-none-any.whl
-e git+https://github.com/51Degrees/51degrees-python@61bcb09...#egg=fiftyone_devicedetection_shared
fiftyone_pipeline_cloudrequestengine==4.5.42
fiftyone_pipeline_core==4.5.41
fiftyone_pipeline_engines==4.5.41
fiftyone_pipeline_engines_fiftyone==4.5.42

So #35's change to fiftyone_pipeline_cloudrequestengine reached those tests only in the publish, which installs every package it has just built.

The same gap was in four more packages. Run against rc, the check this change adds reports 17 missing packages:

tox.ini Took from PyPI
device-detection/fiftyone_devicedetection_cloud pipeline core, engines, engines_fiftyone, cloudrequestengine
ip-intelligence/fiftyone_ipintelligence_cloud the same four
ip-intelligence/fiftyone_ipintelligence_shared the same four
ip-intelligence/fiftyone_ipintelligence_translation pipeline core, pipeline translation
location pipeline core, engines, cloudrequestengine

Change

  • Those five tox.ini files install every package their package depends on, directly or through another, from the checkout, as the examples' tox.ini files already did.
  • Get-ToxGaps in ci/packages.ps1 reads ci/packages.json and lists each tox.ini that leaves out a package its package depends on.
  • ci/run-unit-tests.ps1 runs it before any test, so a package left out fails the build with the list. No workflow runs the Pester tests in ci/, so the check is in the unit test step, which every build runs.
  • ci/packages.Tests.ps1 checks the real list too.

How it was checked

Get-ToxGaps was run against the tox.ini files and packages.json of rc, where it reports the 17 gaps above, and of this branch, where it reports none.

The full build with macOS is linked below once it has run. It is the first in which the cloud, shared, translation and Location tests use the pipeline code in this checkout.

The Device Detection cloud tests installed fiftyone_devicedetection_shared from
the checkout but its pipeline packages from PyPI, so a change to the cloud
request engine in a pull request was never tested by them. #35 moved the
resource keys link in the cloud request engine's messages, and two Device
Detection cloud tests that still looked for the old link passed in every
pull request build and failed only in the publish, which installs what it
has just built.

The tox.ini of the Device Detection cloud, IP Intelligence cloud, shared and
translation, and Location packages now install every package each depends
on, directly or through another, from the checkout, as the examples already
do. run-unit-tests.ps1 checks that every tox.ini does so before any test
runs, so a package left out fails the build.
@jwrosewell
jwrosewell marked this pull request as ready for review November 5, 2026 08:29
@jwrosewell
jwrosewell merged commit 081386d into rc Nov 5, 2026
2 checks passed
@jwrosewell
jwrosewell deleted the ci/tox-local-dependencies branch November 5, 2026 08:29
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