Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMichael Kowalski <makowalski@nvidia.com>2021-10-20 19:07:28 +0300
committerMichael Kowalski <makowalski@nvidia.com>2021-10-20 19:07:28 +0300
commit0baa876b8347a81a457dadaa1f11acc7530c2769 (patch)
tree582d48a337defa3e1ad4458024f53826e2bfd2ee /tests
parent40c3b8836b7a36303ea9c78b0932758cbf277f93 (diff)
New test for USD import.
Added a basic test for importing a primitive hierarchy from a USDA file into Blender. This was reviewed by Sybren in patch D12479.
Diffstat (limited to 'tests')
-rw-r--r--tests/python/CMakeLists.txt9
-rw-r--r--tests/python/bl_usd_import_test.py78
2 files changed, 87 insertions, 0 deletions
diff --git a/tests/python/CMakeLists.txt b/tests/python/CMakeLists.txt
index 2b31b6362e9..b761f310b1a 100644
--- a/tests/python/CMakeLists.txt
+++ b/tests/python/CMakeLists.txt
@@ -838,6 +838,15 @@ if(WITH_ALEMBIC)
)
endif()
+if(WITH_USD)
+ add_blender_test(
+ usd_import_test
+ --python ${CMAKE_CURRENT_LIST_DIR}/bl_usd_import_test.py
+ --
+ --testdir "${TEST_SRC_DIR}/usd"
+ )
+endif()
+
if(WITH_CODEC_FFMPEG)
add_python_test(
ffmpeg
diff --git a/tests/python/bl_usd_import_test.py b/tests/python/bl_usd_import_test.py
new file mode 100644
index 00000000000..6f157c3f928
--- /dev/null
+++ b/tests/python/bl_usd_import_test.py
@@ -0,0 +1,78 @@
+# ##### BEGIN GPL LICENSE BLOCK #####
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# ##### END GPL LICENSE BLOCK #####
+
+# <pep8 compliant>
+
+import pathlib
+import sys
+import unittest
+
+import bpy
+
+args = None
+
+class AbstractUSDTest(unittest.TestCase):
+ @classmethod
+ def setUpClass(cls):
+ cls.testdir = args.testdir
+
+ def setUp(self):
+ self.assertTrue(self.testdir.exists(),
+ 'Test dir {0} should exist'.format(self.testdir))
+
+ # Make sure we always start with a known-empty file.
+ bpy.ops.wm.open_mainfile(filepath=str(self.testdir / "empty.blend"))
+
+class USDImportTest(AbstractUSDTest):
+
+ def test_import_prim_hierarchy(self):
+ """Test importing a simple object hierarchy from a USDA file."""
+
+ infile = str(self.testdir / "prim-hierarchy.usda")
+
+ res = bpy.ops.wm.usd_import(filepath=infile)
+ self.assertEqual({'FINISHED'}, res)
+
+ objects = bpy.context.scene.collection.objects
+ self.assertEqual(5, len(objects))
+
+ # Test the hierarchy.
+ self.assertIsNone(objects['World'].parent)
+ self.assertEqual(objects['World'], objects['Plane'].parent)
+ self.assertEqual(objects['World'], objects['Plane_001'].parent)
+ self.assertEqual(objects['World'], objects['Empty'].parent)
+ self.assertEqual(objects['Empty'], objects['Plane_002'].parent)
+
+def main():
+ global args
+ import argparse
+
+ if '--' in sys.argv:
+ argv = [sys.argv[0]] + sys.argv[sys.argv.index('--') + 1:]
+ else:
+ argv = sys.argv
+
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--testdir', required=True, type=pathlib.Path)
+ args, remaining = parser.parse_known_args(argv)
+
+ unittest.main(argv=remaining)
+
+
+if __name__ == "__main__":
+ main()