Source code for tests.recipes.cec2.data_preparation.test_render_scenes

# Tests for render_scenes module
#
import json
from unittest.mock import MagicMock, patch

import hydra

from recipes.cec2.data_preparation.render_scenes import run


[docs] @patch("recipes.cec2.data_preparation.render_scenes.SceneRenderer") def test_render_scenes(mock_sr, tmp_path): """Test render_scenes function.""" # Mock out the SceneRenderer as we don't want to actually render # any scenes - it's very slow and tested elsewhere in the unit tests scene_renderer_instance = MagicMock() mock_sr.return_value = scene_renderer_instance # Using the config file from the actual recipe, but overriding # just the paths to the scene data and the output directory hydra.core.global_hydra.GlobalHydra.instance().clear() hydra.initialize( config_path="../../../../recipes/cec2/data_preparation/", job_name="test_cec2", ) hydra_cfg = hydra.compose( config_name="config", overrides=[ "path.root=tests/test_data", "path.metadata_dir=tests/test_data/metadata", ( "scene_renderer.train.metadata.scene_definitions=" "tests/test_data/metadata/scenes.test.json" ), ( "scene_renderer.dev.metadata.scene_definitions=" "tests/test_data/metadata/scenes.test.json" ), ( "scene_renderer.demo.metadata.scene_definitions=" "tests/test_data/metadata/scenes.test.json" ), f"scene_renderer.train.paths.scenes={tmp_path}", ], ) run(hydra_cfg) # Check the the scene renderer was instantiated assert mock_sr.call_count == 3 assert scene_renderer_instance.render_scenes.call_count == 3 # Read the scene data directly with open("tests/test_data/metadata/scenes.test.json", encoding="utf-8") as fp: expected_scene_data = json.load(fp) # Check that the scene data was delivered to the SceneRenderer assert ( scene_renderer_instance.render_scenes.call_args.args[0] == expected_scene_data )