forked from bartvdbraak/blender
145 lines
4.7 KiB
Python
145 lines
4.7 KiB
Python
# ############################################################
|
|
# Importing - Same For All Render Layer Tests
|
|
# ############################################################
|
|
|
|
import unittest
|
|
import os
|
|
import sys
|
|
|
|
from view_layer_common import *
|
|
|
|
|
|
# ############################################################
|
|
# Testing
|
|
# ############################################################
|
|
|
|
class UnitTesting(ViewLayerTesting):
|
|
def do_scene_write_read(self, filepath_layers, filepath_layers_json, data_callbacks, do_read):
|
|
"""
|
|
See if write/read is working for scene collections and layers
|
|
"""
|
|
import bpy
|
|
import os
|
|
import tempfile
|
|
import filecmp
|
|
|
|
with tempfile.TemporaryDirectory() as dirpath:
|
|
(self.path_exists(f) for f in (filepath_layers, filepath_layers_json))
|
|
|
|
filepath_doversion = os.path.join(dirpath, 'doversion.blend')
|
|
filepath_saved = os.path.join(dirpath, 'doversion_saved.blend')
|
|
filepath_read_json = os.path.join(dirpath, "read.json")
|
|
|
|
# doversion + write test
|
|
bpy.ops.wm.open_mainfile('EXEC_DEFAULT', filepath=filepath_layers)
|
|
self.rename_collections()
|
|
bpy.ops.wm.save_mainfile('EXEC_DEFAULT', filepath=filepath_doversion)
|
|
|
|
datas = query_scene(filepath_doversion, 'Main', data_callbacks)
|
|
self.assertTrue(datas, "Data is not valid")
|
|
|
|
filepath_doversion_json = os.path.join(dirpath, "doversion.json")
|
|
with open(filepath_doversion_json, "w") as f:
|
|
for data in datas:
|
|
f.write(dump(data))
|
|
|
|
self.assertTrue(compare_files(
|
|
filepath_doversion_json,
|
|
filepath_layers_json,
|
|
),
|
|
"Run: test_scene_write_layers")
|
|
|
|
if do_read:
|
|
# read test, simply open and save the file
|
|
bpy.ops.wm.open_mainfile('EXEC_DEFAULT', filepath=filepath_doversion)
|
|
self.rename_collections()
|
|
bpy.ops.wm.save_mainfile('EXEC_DEFAULT', filepath=filepath_saved)
|
|
|
|
datas = query_scene(filepath_saved, 'Main', data_callbacks)
|
|
self.assertTrue(datas, "Data is not valid")
|
|
|
|
with open(filepath_read_json, "w") as f:
|
|
for data in datas:
|
|
f.write(dump(data))
|
|
|
|
self.assertTrue(compare_files(
|
|
filepath_read_json,
|
|
filepath_layers_json,
|
|
),
|
|
"Scene dump files differ")
|
|
|
|
def test_scene_write_collections(self):
|
|
"""
|
|
See if the doversion and writing are working for scene collections
|
|
"""
|
|
import os
|
|
|
|
ROOT = self.get_root()
|
|
filepath_layers = os.path.join(ROOT, 'layers.blend')
|
|
filepath_layers_json = os.path.join(ROOT, 'layers_simple.json')
|
|
|
|
self.do_scene_write_read(
|
|
filepath_layers,
|
|
filepath_layers_json,
|
|
(get_scene_collections,),
|
|
False)
|
|
|
|
def test_scene_write_layers(self):
|
|
"""
|
|
See if the doversion and writing are working for collections and layers
|
|
"""
|
|
import os
|
|
|
|
ROOT = self.get_root()
|
|
filepath_layers = os.path.join(ROOT, 'layers.blend')
|
|
filepath_layers_json = os.path.join(ROOT, 'layers.json')
|
|
|
|
self.do_scene_write_read(
|
|
filepath_layers,
|
|
filepath_layers_json,
|
|
(get_scene_collections, get_layers),
|
|
False)
|
|
|
|
def test_scene_read_collections(self):
|
|
"""
|
|
See if read is working for scene collections
|
|
(run `test_scene_write_colections` first)
|
|
"""
|
|
import os
|
|
|
|
ROOT = self.get_root()
|
|
filepath_layers = os.path.join(ROOT, 'layers.blend')
|
|
filepath_layers_json = os.path.join(ROOT, 'layers_simple.json')
|
|
|
|
self.do_scene_write_read(
|
|
filepath_layers,
|
|
filepath_layers_json,
|
|
(get_scene_collections,),
|
|
True)
|
|
|
|
def test_scene_read_layers(self):
|
|
"""
|
|
See if read is working for scene layers
|
|
(run `test_scene_write_layers` first)
|
|
"""
|
|
import os
|
|
|
|
ROOT = self.get_root()
|
|
filepath_layers = os.path.join(ROOT, 'layers.blend')
|
|
filepath_layers_json = os.path.join(ROOT, 'layers.json')
|
|
|
|
self.do_scene_write_read(
|
|
filepath_layers,
|
|
filepath_layers_json,
|
|
(get_scene_collections, get_layers),
|
|
True)
|
|
|
|
|
|
# ############################################################
|
|
# Main - Same For All Render Layer Tests
|
|
# ############################################################
|
|
|
|
if __name__ == '__main__':
|
|
UnitTesting._extra_arguments = setup_extra_arguments(__file__)
|
|
unittest.main()
|