Skip to content

Add kitless core environment test config factories#6557

Merged
nvsekkin merged 4 commits into
isaac-sim:developfrom
nvsekkin:esekkin/core-test-config-fixtures
Jul 16, 2026
Merged

Add kitless core environment test config factories#6557
nvsekkin merged 4 commits into
isaac-sim:developfrom
nvsekkin:esekkin/core-test-config-fixtures

Conversation

@nvsekkin

@nvsekkin nvsekkin commented Jul 16, 2026

Copy link
Copy Markdown
Collaborator

Description

Split the fixture foundation out of #6526 so later core-test changes can reuse empty environment configurations without importing task or integration-scene dependencies.

  • Add config-only factories for empty manager-based, manager-based RL, and direct MARL environments.
  • Add a fresh-process CPU canary that constructs and validates every factory without loading task packages, assets, Kit/runtime roots, SciPy, or integration-scene-only modules.

Type of change

  • Test infrastructure (non-breaking)

Checklist

  • I have read and understood the contribution guidelines
  • I have run the pre-commit checks with ./isaaclab.sh --format
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • I have updated the changelog and the corresponding version in the extension's config/extension.toml file
  • I have added my name to the CONTRIBUTORS.md or my name already exists there

Provide reusable empty environment configs that construct without starting
Kit. Guard them in a fresh process against task, asset, simulator, and
integration-scene imports.
@github-actions github-actions Bot added bug Something isn't working isaac-lab Related to Isaac Lab team labels Jul 16, 2026
@greptile-apps

greptile-apps Bot commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR introduces a minimal, kitless foundation of shared environment config factories (ManagerBasedEnvCfg, ManagerBasedRLEnvCfg, DirectMARLEnvCfg) and a fresh-process canary test that verifies none of the forbidden runtime or integration-scene modules are pulled in during import or construction.

  • source/isaaclab/isaaclab/test/env_cfgs.py adds three factory functions and two supporting @configclass helpers (EmptyManagerCfg, EmptySceneCfg) that rely only on core isaaclab.envs, isaaclab.sim, isaaclab.scene, and isaaclab.utils.configclass.
  • source/isaaclab/test/envs/test_env_cfgs.py adds a single pytest test that spawns a fresh subprocess, constructs all three configs with device=\"cpu\", calls validate(), asserts basic field values, then checks sys.modules for a set of forbidden roots and prefixes.
  • A .skip changelog marker correctly labels this as test-only infrastructure with no user-facing API changes.

Confidence Score: 4/5

The change is self-contained test infrastructure with no effect on production code paths; the main concern is that the canary subprocess has no timeout and may stall CI if something goes wrong during module initialization.

Both changed source files are test-only. The factory module imports core env configs but deliberately avoids integration-scene and runtime dependencies — the approach is sound and the module-boundary canary is a good pattern. The two findings are both non-blocking: a missing subprocess timeout that could cause CI to hang indefinitely rather than fail quickly, and literal values in the MARL factory that silently diverge from the shared constants used by the other two factories.

The MARL factory in source/isaaclab/isaaclab/test/env_cfgs.py and the subprocess.run call in source/isaaclab/test/envs/test_env_cfgs.py both deserve a second look.

Important Files Changed

Filename Overview
source/isaaclab/changelog.d/core-test-config-fixtures.skip Changelog skip marker for a test-only change; content is correct and no issues found.
source/isaaclab/isaaclab/test/env_cfgs.py Adds three kitless environment config factories and two supporting configclasses; the MARL factory uses hardcoded decimation/episode_length values inconsistently with the module-level constants used by the other two factories.
source/isaaclab/test/envs/test_env_cfgs.py Fresh-process canary test verifying kitless imports and forbidden-module boundaries; subprocess.run lacks a timeout so the test can hang indefinitely if the spawned process deadlocks.

Reviews (1): Last reviewed commit: "Add kitless core environment fixtures" | Re-trigger Greptile

Comment thread source/isaaclab/test/envs/test_env_cfgs.py Outdated
Comment thread source/isaaclab/isaaclab/test/env_cfgs.py
nvsekkin and others added 2 commits July 16, 2026 00:01
Fail clearly when a future configuration import blocks instead of waiting
for the broader per-file test timeout.
@nvsekkin
nvsekkin requested a review from mataylor-nvidia July 16, 2026 14:59
Keep the fresh-process boundary while allowing lint and static analysis to
inspect the canary implementation.
@nvsekkin
nvsekkin merged commit 4a8c288 into isaac-sim:develop Jul 16, 2026
41 checks passed
@nvsekkin nvsekkin changed the title Add kitless core environment fixtures Add kitless core environment test config factories Jul 16, 2026
nvsekkin added a commit that referenced this pull request Jul 16, 2026
## Summary

- Add backend-neutral cart-pole and articulation/rigid-object scene
configurations for core integration tests using direct USD paths and
core schema configs.
- Consume the config-only fixtures introduced by #6557 to decouple
recorder, color, texture, and curriculum integration hosts from task
configuration imports while retaining their integration markers and
assertions.
- Uses `make_empty_manager_based_env_cfg` and `EmptyManagerCfg` from the
merged foundation.

This is PR 2 of the focused replacement series for #6526.

## Type of change

- Test refactor (no production behavior change)

## Checklist

- [x] I have read and understood the [contribution
guidelines](https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html)
- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./isaaclab.sh --format`
- [ ] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [x] I have added tests that prove my fix is effective or that my
feature works
- [ ] I have updated the changelog and the corresponding version in the
extension's `config/extension.toml` file
- [x] I have added my name to the `CONTRIBUTORS.md` or my name already
exists there
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working isaac-lab Related to Isaac Lab team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants