fixes
This commit is contained in:
parent
eccfcc543f
commit
636acd1087
@ -4,7 +4,7 @@ import re
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
FILE_NAME_PATTERNS = (
|
FILE_NAME_PATTERNS = (
|
||||||
re.compile(r"^SKO115FZ_\d{2}_[A-Za-zА-Яа-я0-9]{9}_\d{8}_[ХX]\d{5}\.xml$"),
|
re.compile(r"^SKO115FZ_\d{2}_[A-Za-zА-Яа-я0-9]{9}_\d{8}_(?:[ХX]\d{5}|\d{6})\.xml$"),
|
||||||
)
|
)
|
||||||
|
|
||||||
DEFAULT_OUTPUT_DIR_NAME = "Out"
|
DEFAULT_OUTPUT_DIR_NAME = "Out"
|
||||||
|
|||||||
@ -55,7 +55,7 @@ def parse_xml_content(file_name: str, xml_content: bytes | str) -> FileParseResu
|
|||||||
result = FileParseResult(file_name=file_name)
|
result = FileParseResult(file_name=file_name)
|
||||||
|
|
||||||
if not validate_file_name(file_name):
|
if not validate_file_name(file_name):
|
||||||
result.fatal_error = "Некорректное имя файла"
|
result.fatal_error = "Некорректное имя XML-файла"
|
||||||
return result
|
return result
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|||||||
@ -277,7 +277,8 @@ def _upload_artifacts(
|
|||||||
|
|
||||||
write_report(report_rows, local_report)
|
write_report(report_rows, local_report)
|
||||||
write_protocol(protocol_rows, local_protocol)
|
write_protocol(protocol_rows, local_protocol)
|
||||||
local_log.write_text("\n".join(log_lines) + "\n", encoding="utf-8")
|
# Use CRLF to keep one-record-per-line in Windows viewers.
|
||||||
|
local_log.write_text("\r\n".join(log_lines) + "\r\n", encoding="utf-8")
|
||||||
|
|
||||||
upload_local_file(local_report, report_path, samba_conn=samba_conn)
|
upload_local_file(local_report, report_path, samba_conn=samba_conn)
|
||||||
upload_local_file(local_protocol, protocol_path, samba_conn=samba_conn)
|
upload_local_file(local_protocol, protocol_path, samba_conn=samba_conn)
|
||||||
|
|||||||
@ -20,7 +20,7 @@ def _base_xml(operations: str) -> str:
|
|||||||
def test_parse_xml_with_invalid_name_returns_fatal() -> None:
|
def test_parse_xml_with_invalid_name_returns_fatal() -> None:
|
||||||
result = parse_xml_content("broken.xml", "<СообщОперКО/>")
|
result = parse_xml_content("broken.xml", "<СообщОперКО/>")
|
||||||
assert result.is_fatal
|
assert result.is_fatal
|
||||||
assert "Некорректное имя файла" in (result.fatal_error or "")
|
assert "Некорректное имя XML-файла" in (result.fatal_error or "")
|
||||||
|
|
||||||
|
|
||||||
def test_parse_xml_with_malformed_xml_returns_fatal() -> None:
|
def test_parse_xml_with_malformed_xml_returns_fatal() -> None:
|
||||||
@ -82,3 +82,12 @@ def test_parse_xml_operation_error_marks_partial(monkeypatch) -> None:
|
|||||||
assert not result.is_fatal
|
assert not result.is_fatal
|
||||||
assert result.operation_errors
|
assert result.operation_errors
|
||||||
assert result.operation_errors[0].record_id == "OP3"
|
assert result.operation_errors[0].record_id == "OP3"
|
||||||
|
|
||||||
|
|
||||||
|
def test_parse_xml_with_numeric_suffix_file_name_is_valid() -> None:
|
||||||
|
xml = _base_xml(
|
||||||
|
"<Операция><ИдентификаторЗаписи>OP4</ИдентификаторЗаписи><СуммаОпер>100</СуммаОпер></Операция>"
|
||||||
|
)
|
||||||
|
result = parse_xml_content("SKO115FZ_01_044525111_20251224_000051.xml", xml)
|
||||||
|
assert not result.is_fatal
|
||||||
|
assert len(result.rows) == 1
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user