Tests: exclude big-endian tests on macOS

In preparation for adding big-endian tests, disable them on macOS
where many are failing, although it looks like the cause of failure
may not relate to endian conversion, it needs further investigation.
This commit is contained in:
Campbell Barton
2024-09-05 12:51:17 +10:00
parent 4a9d67df0e
commit 16df642c2a

View File

@@ -3,10 +3,12 @@
# SPDX-License-Identifier: Apache-2.0
# ./blender.bin --background --python tests/python/bl_blendfile_versioning.py ..
import bpy
import os
import platform
import sys
import bpy
sys.path.append(os.path.dirname(os.path.realpath(__file__)))
from bl_blendfile_utils import TestHelper
@@ -43,6 +45,21 @@ class TestBlendFileOpenAllTestFiles(TestHelper):
"ram_glsl.blend",
}
# Directories to exclude relative to `./tests/data/`.
self.excluded_dirs = ()
if platform.system() == "Darwin":
self.excluded_dirs = (
*self.excluded_dirs,
# The assert in `BKE_libblock_alloc_in_lib` often fails:
# `BLI_assert(bmain->is_locked_for_linking == false || ELEM(type, ID_WS, ID_GR, ID_NT))`.
# This needs to be investigated.
"io_tests/blend_big_endian/",
)
assert all(p.endswith("/") for p in self.excluded_dirs)
self.excluded_dirs = tuple(p.replace("/", os.sep) for p in self.excluded_dirs)
# Generate the slice of blendfile paths that this instance of the test should process.
blendfile_paths = [p for p in self.iter_blendfiles_from_directory(self.args.src_test_dir)]
# `os.scandir()` used by `iter_blendfiles_from_directory` does not
@@ -73,16 +90,26 @@ class TestBlendFileOpenAllTestFiles(TestHelper):
slice_indices = [(gen_indices(i), gen_indices(i + 1)) for i in range(slice_range)]
return slice_indices[slice_index]
def skip_path_check(self, bfp):
if os.path.basename(bfp) in self.excluded_paths:
return True
if self.excluded_dirs:
assert bfp.startswith(self.args.src_test_dir)
bfp_relative = bfp[len(self.args.src_test_dir):].rstrip(os.sep)
if bfp_relative.startswith(*self.excluded_dirs):
return True
return False
def test_open(self):
for bfp in self.blendfile_paths:
if os.path.basename(bfp) in self.excluded_paths:
if self.skip_path_check(bfp):
continue
bpy.ops.wm.read_homefile(use_empty=True, use_factory_startup=True)
bpy.ops.wm.open_mainfile(filepath=bfp, load_ui=False)
def link_append(self, do_link):
for bfp in self.blendfile_paths:
if os.path.basename(bfp) in self.excluded_paths:
if self.skip_path_check(bfp):
continue
bpy.ops.wm.read_homefile(use_empty=True, use_factory_startup=True)
with bpy.data.libraries.load(bfp, link=do_link) as (lib_in, lib_out):