Decode DCS appearance template XML

This commit is contained in:
2026-08-14 12:57:32 +03:00
parent 5615e262a8
commit 8a6610f30c
3 changed files with 79 additions and 0 deletions
+13
View File
@@ -38,6 +38,7 @@ from parser.bsl_validation import replace_routine_text, routine_blocks, text_sha
from parser.form_payload import command_handler_links, data_path_reference_from_node, decode_form_payload, dynamic_list_fields, dynamic_list_settings, embedded_table_addition_row, enrich_form_common_semantic, enrich_item_data_paths, enrich_item_reference_semantics, event_handlers, event_handlers_from_node, form_common_semantic, form_item_coverage_summary, section_record_semantic_properties # noqa: E402
from parser.form_xml import decode_form_xml # noqa: E402
from parser.scd_payload import compare_scd_semantics, inspect_scd_payload, plan_scd_scalar_patch # noqa: E402
from parser.appearance_payload import inspect_appearance_payload # noqa: E402
from parser.dbnames import parse_dbnames_bytes, parse_dbnames_version_bytes # noqa: E402
sys.path.insert(0, str(ROOT / "plugins" / "1c" / "connector"))
import adapter_1c_server as adapter_server # noqa: E402
@@ -252,6 +253,18 @@ def test_scd_payload_decoder_reads_xml_after_platform_prefix() -> None:
assert result["analysis"]["settings_context"] == {"status": "not_present", "sections": {}}
def test_appearance_payload_decoder_reads_xml_rules() -> None:
xml = """<?xml version="1.0" encoding="UTF-8"?>
<AppearanceTemplate><item><parameter>Заголовок</parameter><value>style:Title</value></item><style><name>Title</name></style></AppearanceTemplate>"""
result = inspect_appearance_payload(compress_payload(b"\x00\x01" + xml.encode("utf-8"), "raw_deflate"))
assert result["status"] == "ok"
assert result["items"] == [{"ordinal": 1, "parameter": "Заголовок", "value": "style:Title"}]
assert result["outline"]["tag_counts"] == {"AppearanceTemplate": 1, "item": 1, "name": 1, "parameter": 1, "style": 1, "value": 1}
assert result["diagnostics"]["write"] == "unsupported_until_reverse_codec_fixture"
def test_scd_scalar_patch_preserves_platform_prefix_and_trailer() -> None:
xml = """<?xml version="1.0" encoding="UTF-8"?>
<SchemaFile><dataCompositionSchema>