Files
workinf_Blender_Wasm/my-tools/test_wbv2_modifier_accessors.py
mes123456 f3e21c6b98
Some checks failed
M6 deployable RC / quick (push) Has been cancelled
M6 deployable RC / chromium (push) Has been cancelled
M6 deployable RC / release (push) Has been cancelled
chore: checkpoint web Blender migration source, tools and docs
Accumulated uncommitted work: GHOST Web backend, WebGL/GPU web layer,
web workflow engine and protocol, tooling, docs and task records.
Large generated evidence, user-testing archives, build snapshots and
imported test assets remain untracked.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-11-10 11:18:01 +08:00

45 lines
1.8 KiB
Python

import pathlib
import sys
import unittest
ROOT = pathlib.Path(__file__).resolve().parents[1]
sys.path.insert(0, str(ROOT / "blender-5.2.0/source/blender/web_engine"))
import extract_modifier_accessors as extractor
from extract_id_property_rna import function
class ModifierAccessorTests(unittest.TestCase):
def source(self):
source = ROOT / "build_web_blender6/source/blender/makesrna/intern/rna_modifier_gen.cc"
if not source.exists():
self.skipTest("makesrna output has not been built")
return source.read_text()
def test_each_field_uses_original_generated_accessors(self):
source = self.source()
output = extractor.generate(source)
for modifier, fields in extractor.FIELDS.items():
for name, _, _, _ in fields:
for operation in ("get", "set"):
self.assertIn(function(source, f"{modifier}Modifier_{name}_{operation}")[1], output)
self.assertEqual(output, extractor.generate(source))
def test_missing_source_accessor_rejects_generation(self):
source = self.source().replace("BevelModifier_segments_set", "Removed_segments_set")
with self.assertRaisesRegex(ValueError, "Missing generated function"):
extractor.generate(source)
def test_schema_field_names_are_unique_and_numeric_bounds_are_valid(self):
for fields in extractor.FIELDS.values():
self.assertEqual(len(fields), len({field[0] for field in fields}))
for _, kind, lower, upper in fields:
if kind.startswith("bool"):
self.assertIsNone(lower)
self.assertIsNone(upper)
else:
self.assertLess(lower, upper)
if __name__ == "__main__":
unittest.main()