Cleanup: tests: Factorize some common processing in linking tests utils.

This commit is contained in:
Bastien Montagne
2025-07-22 13:48:22 +02:00
parent 907d023b83
commit 3ab40912f7

View File

@@ -63,15 +63,40 @@ class TestBlendLibLinkHelper(TestHelper):
def unique_blendfile_name(self, base_name):
return base_name + self.__class__.__name__ + ".blend"
def init_lib_data_basic(self):
self.reset_blender()
# Utils generating common data patterns.
# Assume that the current blendfile is cleared and empty.
def gen_indirect_library_data_(self):
im = bpy.data.images.load(os.path.join(self.args.src_test_dir,
"imbuf_io",
"reference",
"jpeg-rgb-90__from__rgba08.jpg"))
im.name = "LibMaterial"
assert len(im.pixels)
assert im.has_data
ma = bpy.data.materials.new("LibMaterial")
ma.use_fake_user = True
ma.use_nodes = True
teximage_node = ma.node_tree.nodes.new("ShaderNodeTexImage")
teximage_node.image = im
bsdf_node = ma.node_tree.nodes["Principled BSDF"]
ma.node_tree.links.new(bsdf_node.inputs["Base Color"], teximage_node.outputs["Color"])
def gen_library_data_(self):
me = bpy.data.meshes.new("LibMesh")
ob = bpy.data.objects.new("LibMesh", me)
coll = bpy.data.collections.new("LibMesh")
coll.objects.link(ob)
bpy.context.scene.collection.children.link(coll)
# Actual init code, generating blendfiles for various linking/appending scenarii.
def init_lib_data_basic(self):
self.reset_blender()
self.gen_library_data_()
output_dir = self.args.output_dir
self.ensure_path(output_dir)
# Take care to keep the name unique so multiple test jobs can run at once.
@@ -84,13 +109,12 @@ class TestBlendLibLinkHelper(TestHelper):
def init_lib_data_animated(self):
self.reset_blender()
me = bpy.data.meshes.new("LibMesh")
ob = bpy.data.objects.new("LibMesh", me)
self.gen_library_data_()
ob = bpy.data.objects[0]
ob_ctrl = bpy.data.objects.new("LibController", None)
coll = bpy.data.collections.new("LibMesh")
coll.objects.link(ob)
coll = bpy.data.collections[0]
coll.objects.link(ob_ctrl)
bpy.context.scene.collection.children.link(coll)
# Add some action & driver animation to `LibMesh`.
# Animate Y location.
@@ -123,6 +147,7 @@ class TestBlendLibLinkHelper(TestHelper):
return output_lib_path
def init_lib_data_indirect_lib(self):
output_dir = self.args.output_dir
self.ensure_path(output_dir)
@@ -130,21 +155,7 @@ class TestBlendLibLinkHelper(TestHelper):
# Create an indirect library containing a material, and an image texture.
self.reset_blender()
im = bpy.data.images.load(os.path.join(self.args.src_test_dir,
"imbuf_io",
"reference",
"jpeg-rgb-90__from__rgba08.jpg"))
im.name = "LibMaterial"
assert len(im.pixels)
assert im.has_data
ma = bpy.data.materials.new("LibMaterial")
ma.use_fake_user = True
ma.use_nodes = True
teximage_node = ma.node_tree.nodes.new("ShaderNodeTexImage")
teximage_node.image = im
bsdf_node = ma.node_tree.nodes["Principled BSDF"]
ma.node_tree.links.new(bsdf_node.inputs["Base Color"], teximage_node.outputs["Color"])
self.gen_indirect_library_data_()
# Take care to keep the name unique so multiple test jobs can run at once.
output_lib_path = os.path.join(output_dir, self.unique_blendfile_name("blendlib_indirect_material"))
@@ -158,12 +169,10 @@ class TestBlendLibLinkHelper(TestHelper):
bpy.ops.wm.link(directory=link_dir, filename="LibMaterial")
ma = bpy.data.materials[0]
me = bpy.data.meshes.new("LibMesh")
self.gen_library_data_()
me = bpy.data.meshes[0]
me.materials.append(ma)
ob = bpy.data.objects.new("LibMesh", me)
coll = bpy.data.collections.new("LibMesh")
coll.objects.link(ob)
bpy.context.scene.collection.children.link(coll)
output_dir = self.args.output_dir
self.ensure_path(output_dir)