Gate checkout-only tests with a root fixture - #7389
Conversation
Several unit tests validate source-tree artifacts such as the root pyproject, uv.lock, tools, apps, and scripts. These tests are useful in the repository checkout, but they are not valid for installed-package test runs where those artifacts are intentionally absent. Add a shared source checkout root fixture that skips when the checkout is unavailable and returns the root path when it is present. Use it in the affected tests so the same fixture provides both the gate and the path under test.
Greptile SummaryThe PR introduces a shared session fixture that identifies a source checkout and skips checkout-only tests when repository artifacts are unavailable.
Confidence Score: 5/5The PR appears safe to merge, with no concrete blocking or independently actionable non-blocking defects identified. The fixture consistently resolves repository artifacts in a normal source checkout and skips only when that checkout cannot be identified; the updated tests preserve their prior assertions and execution behavior. Important Files Changed
Reviews (1): Last reviewed commit: "Gate checkout-only tests with a root fix..." | Re-trigger Greptile |
There was a problem hiding this comment.
Isaac Lab Review Bot
The PR centralizes source-checkout discovery in a session-scoped fixture and consistently migrates tests that inspect repository-only artifacts to skip when no checkout is available.
- Design and architecture: Placing
source_checkout_rootinsource/isaaclab/test/conftest.pymakes it available to the affected app, CLI, and top-level tests while removing duplicated root-discovery logic. The three-marker check identifies the repository root rather than the package directory. - API: No production or public API changes are introduced. The modified helper signatures are private to test modules, their call sites are updated consistently, and the test-only
.skipchangelog fragment matches repository policy. - Implementation: The migrated paths for apps, scripts, root metadata, lock data, workflows, and wheel-builder tools are derived consistently from the fixture. The Pink IK test appropriately patches the production root constant while exercising production path resolution; the teleop tests separately validate dispatch and checkout artifact existence. A minor tradeoff is that checkout detection intentionally depends on
isaaclab.sh,pyproject.toml, andsource/remaining stable repository markers.
No blocking issues. No inline issue met the actionable-evidence threshold; the assessment above records the review feedback.
Automated review; human maintainers own approval decisions.
Description
A handful of unit tests inspect repository artifacts that only exist in a source checkout (
apps,scripts, the rootpyproject.toml,uv.lock,tools/wheel_builder, and the workflow files). Run from an installed package they fail because those paths are absent. This gates them behind a sharedsource_checkout_rootsession fixture that locates the checkout and skips the test when it is not present, and returns the root path so the tests stop recomputing it by hand.The fixture lives in
source/isaaclab/test/conftest.py. The affected tests now takesource_checkout_rootand drop their local_repo_root()helpers, so the gating is explicit at the test and the requirement is hard to forget: a checkout-only test needs the root anyway, so it asks for the fixture and gets the skip for free.Type of change
Release backport
developChecklist
pre-commitchecks with./isaaclab.sh --formatsource/<pkg>/changelog.d/for every touched packageCONTRIBUTORS.mdor my name already exists there