Skip to content
Open
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
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,12 @@ def _process_activation_requests(self, event: carb.eventdispatcher.Event) -> Non
noop = rep.AnnotatorRegistry.get_annotator(
"IsaacNoop",
)
noop.attach([request.render_product_path])
render_products = (
request.render_product_path
if isinstance(request.render_product_path, list)
else [request.render_product_path]
)
noop.attach(render_products)
carb.log_info(f"Attaching:\n{request}")
else:
request.writer.detach()
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0

"""Tests for BaseWriterNode render-product attachment handling."""

from unittest.mock import MagicMock, patch

import omni.kit.test
from isaacsim.core.nodes import BaseWriterNode, WriterRequest


class TestBaseWriterNode(omni.kit.test.AsyncTestCase):
"""Validate writer activation requests."""

@patch("isaacsim.core.nodes.impl.base_writer_node.Usd.EditContext")
@patch("isaacsim.core.nodes.impl.base_writer_node.omni.usd.get_context")
@patch("isaacsim.core.nodes.impl.base_writer_node.rep.AnnotatorRegistry.get_annotator")
async def test_noop_annotator_preserves_render_product_list(
self, mock_get_annotator: MagicMock, mock_get_context: MagicMock, mock_edit_context: MagicMock
) -> None:
"""A list of render products must not be wrapped in another list."""
stage = MagicMock()
mock_get_context.return_value.get_stage.return_value = stage
mock_edit_context.return_value.__enter__.return_value = None
mock_edit_context.return_value.__exit__.return_value = False

writer = MagicMock()
writer.node_type_id = "TestWriter"
writer._kwargs = {}
writer._annotators = []
noop = mock_get_annotator.return_value

render_products = ["/Render/ProductA", "/Render/ProductB"]
node = BaseWriterNode()
node.post_attach = MagicMock()
node._requests = [WriterRequest(writer, render_products, True)]

node._process_activation_requests(MagicMock())

writer.attach.assert_called_once_with(render_products)
noop.attach.assert_called_once_with(render_products)