Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,13 @@ on:
- develop
- 'release/**'
workflow_dispatch:
inputs:
marker:
description: >-
Run only the tests carrying this registered pytest marker, e.g. kitless. A job with no
marked file passes with an empty report. Empty runs every test.
type: string
default: ''

# Concurrency control to prevent parallel runs on the same PR
concurrency:
Expand Down Expand Up @@ -266,6 +273,7 @@ jobs:
lfs: true
- uses: ./.github/actions/run-package-tests
with:
ci-marker: ${{ inputs.marker || 'ov' }}
image-tag: ${{ needs.config.outputs.ci_image_tag }}
isaacsim-base-image: ${{ needs.config.outputs.isaacsim_image_name }}
isaacsim-version: ${{ needs.config.outputs.isaacsim_image_tag }}
Expand Down Expand Up @@ -294,6 +302,7 @@ jobs:
lfs: true
- uses: ./.github/actions/run-package-tests
with:
ci-marker: ${{ inputs.marker || 'ov' }}
image-tag: ${{ needs.config.outputs.ci_image_tag }}
isaacsim-base-image: ${{ needs.config.outputs.isaacsim_image_name }}
isaacsim-version: ${{ needs.config.outputs.isaacsim_image_tag }}
Expand Down Expand Up @@ -322,6 +331,7 @@ jobs:
lfs: true
- uses: ./.github/actions/run-package-tests
with:
ci-marker: ${{ inputs.marker || 'ov' }}
image-tag: ${{ needs.config.outputs.ci_image_tag }}
isaacsim-base-image: ${{ needs.config.outputs.isaacsim_image_name }}
isaacsim-version: ${{ needs.config.outputs.isaacsim_image_tag }}
Expand Down Expand Up @@ -349,6 +359,7 @@ jobs:
lfs: true
- uses: ./.github/actions/run-package-tests
with:
ci-marker: ${{ inputs.marker || 'ov' }}
image-tag: ${{ needs.config.outputs.ci_image_tag }}
isaacsim-base-image: ${{ needs.config.outputs.isaacsim_image_name }}
isaacsim-version: ${{ needs.config.outputs.isaacsim_image_tag }}
Expand Down Expand Up @@ -376,6 +387,7 @@ jobs:
lfs: true
- uses: ./.github/actions/run-package-tests
with:
ci-marker: ${{ inputs.marker || 'ov' }}
image-tag: ${{ needs.config.outputs.ci_image_tag }}
isaacsim-base-image: ${{ needs.config.outputs.isaacsim_image_name }}
isaacsim-version: ${{ needs.config.outputs.isaacsim_image_tag }}
Expand Down Expand Up @@ -403,6 +415,7 @@ jobs:
lfs: true
- uses: ./.github/actions/run-package-tests
with:
ci-marker: ${{ inputs.marker || 'ov' }}
image-tag: ${{ needs.config.outputs.ci_image_tag }}
isaacsim-base-image: ${{ needs.config.outputs.isaacsim_image_name }}
isaacsim-version: ${{ needs.config.outputs.isaacsim_image_tag }}
Expand Down Expand Up @@ -434,6 +447,7 @@ jobs:
lfs: true
- uses: ./.github/actions/run-package-tests
with:
ci-marker: ${{ inputs.marker || 'ov' }}
image-tag: ${{ needs.config.outputs.ci_image_tag }}
isaacsim-base-image: ${{ needs.config.outputs.isaacsim_image_name }}
isaacsim-version: ${{ needs.config.outputs.isaacsim_image_tag }}
Expand Down Expand Up @@ -468,6 +482,7 @@ jobs:
id: ov_pins
- uses: ./.github/actions/run-package-tests
with:
ci-marker: ${{ inputs.marker || 'ov' }}
image-tag: ${{ needs.config.outputs.ci_image_tag }}
isaacsim-base-image: ${{ needs.config.outputs.isaacsim_image_name }}
isaacsim-version: ${{ needs.config.outputs.isaacsim_image_tag }}
Expand Down Expand Up @@ -499,6 +514,7 @@ jobs:
lfs: true
- uses: ./.github/actions/run-package-tests
with:
ci-marker: ${{ inputs.marker || 'ov' }}
image-tag: ${{ needs.config.outputs.ci_image_tag }}
isaacsim-base-image: ${{ needs.config.outputs.isaacsim_image_name }}
isaacsim-version: ${{ needs.config.outputs.isaacsim_image_tag }}
Expand All @@ -523,6 +539,7 @@ jobs:
lfs: true
- uses: ./.github/actions/run-package-tests
with:
ci-marker: ${{ inputs.marker || 'ov' }}
image-tag: ${{ needs.config.outputs.ci_image_tag }}
isaacsim-base-image: ${{ needs.config.outputs.isaacsim_image_name }}
isaacsim-version: ${{ needs.config.outputs.isaacsim_image_tag }}
Expand All @@ -546,6 +563,7 @@ jobs:
lfs: true
- uses: ./.github/actions/run-package-tests
with:
ci-marker: ${{ inputs.marker || 'ov' }}
image-tag: ${{ needs.config.outputs.ci_image_tag }}
isaacsim-base-image: ${{ needs.config.outputs.isaacsim_image_name }}
isaacsim-version: ${{ needs.config.outputs.isaacsim_image_tag }}
Expand All @@ -570,6 +588,7 @@ jobs:
lfs: true
- uses: ./.github/actions/run-package-tests
with:
ci-marker: ${{ inputs.marker || 'ov' }}
image-tag: ${{ needs.config.outputs.ci_image_tag }}
isaacsim-base-image: ${{ needs.config.outputs.isaacsim_image_name }}
isaacsim-version: ${{ needs.config.outputs.isaacsim_image_tag }}
Expand All @@ -594,6 +613,7 @@ jobs:
lfs: true
- uses: ./.github/actions/run-package-tests
with:
ci-marker: ${{ inputs.marker || 'ov' }}
image-tag: ${{ needs.config.outputs.ci_image_tag }}
isaacsim-base-image: ${{ needs.config.outputs.isaacsim_image_name }}
isaacsim-version: ${{ needs.config.outputs.isaacsim_image_tag }}
Expand All @@ -618,6 +638,7 @@ jobs:
lfs: true
- uses: ./.github/actions/run-package-tests
with:
ci-marker: ${{ inputs.marker || 'ov' }}
image-tag: ${{ needs.config.outputs.ci_image_tag }}
isaacsim-base-image: ${{ needs.config.outputs.isaacsim_image_name }}
isaacsim-version: ${{ needs.config.outputs.isaacsim_image_tag }}
Expand All @@ -641,6 +662,7 @@ jobs:
lfs: true
- uses: ./.github/actions/run-package-tests
with:
ci-marker: ${{ inputs.marker || 'ov' }}
image-tag: ${{ needs.config.outputs.ci_image_tag }}
isaacsim-base-image: ${{ needs.config.outputs.isaacsim_image_name }}
isaacsim-version: ${{ needs.config.outputs.isaacsim_image_tag }}
Expand All @@ -664,6 +686,7 @@ jobs:
lfs: true
- uses: ./.github/actions/run-package-tests
with:
ci-marker: ${{ inputs.marker || 'ov' }}
image-tag: ${{ needs.config.outputs.ci_image_tag }}
isaacsim-base-image: ${{ needs.config.outputs.isaacsim_image_name }}
isaacsim-version: ${{ needs.config.outputs.isaacsim_image_tag }}
Expand All @@ -688,6 +711,7 @@ jobs:
lfs: true
- uses: ./.github/actions/run-package-tests
with:
ci-marker: ${{ inputs.marker || 'ov' }}
image-tag: ${{ needs.config.outputs.ci_image_tag }}
isaacsim-base-image: ${{ needs.config.outputs.isaacsim_image_name }}
isaacsim-version: ${{ needs.config.outputs.isaacsim_image_tag }}
Expand Down Expand Up @@ -717,6 +741,7 @@ jobs:
id: ov_pins
- uses: ./.github/actions/run-package-tests
with:
ci-marker: ${{ inputs.marker || 'ov' }}
image-tag: ${{ needs.config.outputs.ci_image_tag }}
isaacsim-base-image: ${{ needs.config.outputs.isaacsim_image_name }}
isaacsim-version: ${{ needs.config.outputs.isaacsim_image_tag }}
Expand Down Expand Up @@ -761,6 +786,7 @@ jobs:
lfs: true
- uses: ./.github/actions/run-package-tests
with:
ci-marker: ${{ inputs.marker || 'ov' }}
image-tag: ${{ needs.config.outputs.ci_image_tag }}-curobo
isaacsim-base-image: ${{ needs.config.outputs.isaacsim_image_name }}
isaacsim-version: ${{ needs.config.outputs.isaacsim_image_tag }}
Expand Down Expand Up @@ -802,6 +828,7 @@ jobs:
lfs: true
- uses: ./.github/actions/run-package-tests
with:
ci-marker: ${{ inputs.marker || 'ov' }}
image-tag: ${{ needs.config.outputs.ci_image_tag }}-curobo
isaacsim-base-image: ${{ needs.config.outputs.isaacsim_image_name }}
isaacsim-version: ${{ needs.config.outputs.isaacsim_image_tag }}
Expand Down Expand Up @@ -834,6 +861,7 @@ jobs:
lfs: true
- uses: ./.github/actions/run-package-tests
with:
ci-marker: ${{ inputs.marker || 'ov' }}
image-tag: ${{ needs.config.outputs.ci_image_tag }}
isaacsim-base-image: ${{ needs.config.outputs.isaacsim_image_name }}
isaacsim-version: ${{ needs.config.outputs.isaacsim_image_tag }}
Expand All @@ -857,6 +885,7 @@ jobs:
lfs: true
- uses: ./.github/actions/run-package-tests
with:
ci-marker: ${{ inputs.marker || 'ov' }}
image-tag: ${{ needs.config.outputs.ci_image_tag }}
isaacsim-base-image: ${{ needs.config.outputs.isaacsim_image_name }}
isaacsim-version: ${{ needs.config.outputs.isaacsim_image_tag }}
Expand Down Expand Up @@ -901,6 +930,7 @@ jobs:
id: ov_pins
- uses: ./.github/actions/run-package-tests
with:
ci-marker: ${{ inputs.marker || 'ov' }}
image-tag: ${{ needs.config.outputs.ci_image_tag }}
isaacsim-base-image: ${{ needs.config.outputs.isaacsim_image_name }}
isaacsim-version: ${{ needs.config.outputs.isaacsim_image_tag }}
Expand Down Expand Up @@ -948,6 +978,7 @@ jobs:
id: ov_pins
- uses: ./.github/actions/run-package-tests
with:
ci-marker: ${{ inputs.marker || 'ov' }}
image-tag: ${{ needs.config.outputs.ci_image_tag }}
isaacsim-base-image: ${{ needs.config.outputs.isaacsim_image_name }}
isaacsim-version: ${{ needs.config.outputs.isaacsim_image_tag }}
Expand Down Expand Up @@ -1273,6 +1304,7 @@ jobs:
lfs: true
- uses: ./.github/actions/run-package-tests
with:
ci-marker: ${{ inputs.marker || 'ov' }}
image-tag: ${{ needs.config.outputs.ci_image_tag }}
isaacsim-base-image: ${{ needs.config.outputs.isaacsim_image_name }}
isaacsim-version: ${{ needs.config.outputs.isaacsim_image_tag }}
Expand Down Expand Up @@ -1317,6 +1349,7 @@ jobs:
id: ov_pins
- uses: ./.github/actions/run-package-tests
with:
ci-marker: ${{ inputs.marker || 'ov' }}
image-tag: ${{ needs.config.outputs.ci_image_tag }}
isaacsim-base-image: ${{ needs.config.outputs.isaacsim_image_name }}
isaacsim-version: ${{ needs.config.outputs.isaacsim_image_tag }}
Expand Down
1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -373,6 +373,7 @@ markers = [
"rendering: test exercises the rendering / camera / visualizer pipeline",
"smoke: tests for core installation, task, and RL functionality",
"kitless: test must pass inside the Kit-less container, which has no Isaac Sim runtime",
"ov: test exercises the OV libraries (ovphysx, ovrtx, ovstage)",
]

# Add pypi.nvidia.com so that `uv pip install isaaclab[isaacsim]` works without --extra-index-url.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Rejected unregistered CI markers in the test orchestrator.
11 changes: 11 additions & 0 deletions source/isaaclab/test/cli/test_test_orchestrator_result_handling.py
Original file line number Diff line number Diff line change
Expand Up @@ -718,3 +718,14 @@ def test_external_git_asset_tests_receive_extended_startup_deadline():

assert startup_deadline == orchestrator.test_settings.GIT_ASSET_STARTUP_TIMEOUT
assert orchestrator._resolve_startup_deadline("test_sample.py", timeout=10000, is_cold_cache_test=False) == 120


def test_ci_marker_must_be_a_registered_marker_name():
"""A marker run matches files by name, so an expression or a misspelling must not reach selection."""
orchestrator = _load_orchestrator_module()

registered = orchestrator._registered_markers(str(TOOLS_DIR.parent))

assert {"kitless", "arm_ci", "isaacsim_ci"} <= registered
assert "kitless and not rendering" not in registered
assert "kitles" not in registered
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Marked the test files that run without Kit as kitless so a marker run can select them.
2 changes: 2 additions & 0 deletions source/isaaclab_newton/test/assets/test_cable_object.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@

from isaaclab_contrib.coupling import CouplerEntryCfg, CouplerProxyCfg, CouplerProxyMappingCfg

pytestmark = pytest.mark.kitless


@configclass
class _CableSceneCfg(InteractiveSceneCfg):
Expand Down
2 changes: 2 additions & 0 deletions source/isaaclab_newton/test/assets/test_joint_coordinates.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@
from newton.selection import ArticulationView
from scipy.spatial.transform import Rotation

pytestmark = pytest.mark.kitless

# One revolute, one ball, one revolute -- the layout that hides an off-by-one when the tables are
# built by walking the model instead of the view's own per-joint counts.
COORD_COUNTS = [1, 4, 1]
Expand Down
2 changes: 2 additions & 0 deletions source/isaaclab_newton/test/assets/test_mpm_object.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
import pytest
import torch

pytestmark = pytest.mark.kitless

newton = pytest.importorskip("newton")

from isaaclab_newton.assets.mpm_object import MPMObject, MPMObjectCfg
Expand Down
2 changes: 2 additions & 0 deletions source/isaaclab_newton/test/cloner/test_clone_xform_math.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
import warp as wp
from isaaclab_newton.cloner.newton_clone_utils import _quat_rotate

pytestmark = pytest.mark.kitless

_TOL = 1e-5

# Hand-picked quaternions (xyzw) that cover identity and the 180-degree cases where a sign
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@

from pxr import Sdf, Usd, UsdGeom, UsdPhysics, UsdShade

pytestmark = pytest.mark.kitless

_SOURCE = "/World/Asset"


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@
from isaaclab.cloner import make_clone_plan
from isaaclab.sim import SimulationCfg, SimulationContext, SpawnerCfg, build_simulation_context

pytestmark = pytest.mark.kitless

replicate_module = importlib.import_module("isaaclab_newton.cloner.replicate")


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

import newton
import numpy as np
import pytest
import warp as wp
from isaaclab_newton.cloner import NewtonReplicateContext
from isaaclab_newton.cloner import newton_clone_utils as newton_clone_utils_module
Expand All @@ -27,6 +28,8 @@
from isaaclab.sim import SimulationContext, SpawnerCfg
from isaaclab.sim.schemas import define_deformable_curve_properties

pytestmark = pytest.mark.kitless


class TestReplicateBuilderMapping(unittest.TestCase):
def test_world_prototypes_preserve_repeated_instances_and_default_poses(self):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@

from pxr import Usd, UsdGeom, UsdPhysics

pytestmark = pytest.mark.kitless


@pytest.mark.parametrize("load_visual_shapes", [True, False])
@pytest.mark.parametrize("dynamic", [True, False])
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@

from isaaclab.utils import math as math_utils

pytestmark = pytest.mark.kitless

_NUM_ENVS = 3
_NUM_JOINTS = 7
_DEVICE = "cpu"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

import isaaclab_newton.controllers.ik.newton_ik_objectives as objectives_module
import isaaclab_newton.controllers.ik.newton_ik_solver as ik_solver_module
import pytest
import torch
import warp as wp
from isaaclab_newton.controllers.ik.newton_ik_objectives import (
Expand All @@ -24,6 +25,8 @@

from isaaclab.utils import configclass

pytestmark = pytest.mark.kitless

# Maps the stub body names used across these tests to Newton link indices.
_LINKS = {"ee": 0, "torso": 1, "custom": 0}

Expand Down
2 changes: 2 additions & 0 deletions source/isaaclab_newton/test/envs/test_events.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@
from isaaclab.utils import configclass
from isaaclab.visualizers import VisualizerCfg

pytestmark = pytest.mark.kitless


@configclass
class ActionsCfg:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
)
from newton.solvers import SolverMuJoCo

pytestmark = pytest.mark.kitless

_TENDON = int(SolverMuJoCo.TrnType.TENDON)
_JOINT = 0

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
from isaaclab_newton.physics import MPMSolverCfg, NewtonManager, NewtonMPMManager
from newton.solvers import SolverImplicitMPM

pytestmark = pytest.mark.kitless


@pytest.fixture(scope="module")
def cpu_mpm_solver_and_state():
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@
from isaaclab.sim import SimulationCfg, SimulationContext, build_simulation_context
from isaaclab.test.utils import test_devices

pytestmark = pytest.mark.kitless

# ---------------------------------------------------------------------------
# Lightweight (no sim) parametrisation
# ---------------------------------------------------------------------------
Expand Down
2 changes: 2 additions & 0 deletions source/isaaclab_newton/test/physics/test_vbd_core.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
from isaaclab.sim import BackendCfg, SimulationContext
from isaaclab.utils import replace

pytestmark = pytest.mark.kitless


# The soft-contact and simulation axes are independent, so each value is covered once.
@pytest.mark.parametrize(
Expand Down
Loading
Loading