diff --git a/source/blender/makesrna/intern/rna_scene.cc b/source/blender/makesrna/intern/rna_scene.cc index b47912f5ddb..b21a9864836 100644 --- a/source/blender/makesrna/intern/rna_scene.cc +++ b/source/blender/makesrna/intern/rna_scene.cc @@ -1258,7 +1258,11 @@ static void rna_Scene_compositing_node_group_set(PointerRNA *ptr, reports, RPT_ERROR, "Node tree '%s' is not a compositing node group.", ntree->id.name + 2); return; } + if (scene->compositing_node_group) { + id_us_min(&scene->compositing_node_group->id); + } scene->compositing_node_group = ntree; + id_us_plus(&scene->compositing_node_group->id); } static std::optional rna_SceneEEVEE_path(const PointerRNA * /*ptr*/) diff --git a/tests/python/CMakeLists.txt b/tests/python/CMakeLists.txt index 500c247f822..551d73b5afa 100644 --- a/tests/python/CMakeLists.txt +++ b/tests/python/CMakeLists.txt @@ -1035,6 +1035,11 @@ if(WITH_GPU_COMPOSITOR_TESTS AND TEST_SRC_DIR_EXISTS) endif() endif() +add_blender_test( + compositing_node_group + --python ${CMAKE_CURRENT_LIST_DIR}/compositing_node_group.py +) + # ------------------------------------------------------------------------------ # GEOMETRY NODE TESTS # ------------------------------------------------------------------------------ diff --git a/tests/python/compositing_node_group.py b/tests/python/compositing_node_group.py new file mode 100644 index 00000000000..79a529cfbb6 --- /dev/null +++ b/tests/python/compositing_node_group.py @@ -0,0 +1,26 @@ +# SPDX-FileCopyrightText: 2025 Blender Authors +# +# SPDX-License-Identifier: Apache-2.0 + +import bpy +import unittest + + +class CompositingNodeGroupTest(unittest.TestCase): + """ + Tests specific to the root compositing node tree + """ + + def setUp(self): + bpy.ops.wm.read_factory_settings(use_empty=True) + + def test_assign_invalid(self): + scene = bpy.data.scenes["Scene"] + with self.assertRaises(RuntimeError): + scene.compositing_node_group = bpy.data.node_groups.new("invalid", "GeometryNodeTree") + + +if __name__ == "__main__": + import sys + sys.argv = [__file__] + (sys.argv[sys.argv.index("--") + 1:] if "--" in sys.argv else []) + unittest.main()