From cb041c08761cb10241068b0c19ffeafd44a3be65 Mon Sep 17 00:00:00 2001 From: Bailey Nguyen Date: Sat, 3 Oct 2026 17:58:16 -0500 Subject: [PATCH 1/4] fix(codegen): preserve defaults and fixed strings in Python C++ and C# --- .../skills/polyxml-codegen-workflow/SKILL.md | 8 + crates/polyxml-core/src/codegen/cpp/mod.rs | 6 +- crates/polyxml-core/src/codegen/csharp/mod.rs | 11 +- crates/polyxml-core/src/codegen/python/mod.rs | 14 +- .../tests/test_default_literal_codegen.rs | 138 ++++++++++++++++++ .../fixtures/default_literal_escaping.xsd | 7 + 6 files changed, 171 insertions(+), 13 deletions(-) create mode 100644 crates/polyxml-core/tests/test_default_literal_codegen.rs create mode 100644 research/fixtures/default_literal_escaping.xsd diff --git a/.agents/skills/polyxml-codegen-workflow/SKILL.md b/.agents/skills/polyxml-codegen-workflow/SKILL.md index 2b1e6a5..63f8bbe 100644 --- a/.agents/skills/polyxml-codegen-workflow/SKILL.md +++ b/.agents/skills/polyxml-codegen-workflow/SKILL.md @@ -36,6 +36,14 @@ C++ uses fixed-width octal escapes for ASCII controls. Execute `test_enum_literal_codegen` with all seven toolchains to verify exact runtime values and Rust Serde round trips, not just whether generated files exist. +Schema defaults and fixed values need the same literal escaping as enums. +Python metadata must not use Rust Debug escapes, and C++ defaults need C++ +control-character escapes. C# defaults parsed through an internal XML element +must encode carriage returns as ` ` after escaping XML markup; otherwise XML +line-ending normalization changes the lexical value. Execute generated consumers +against independent UTF-8 expected data, including backslash-u text, referenced +whitespace, Unicode line separators, empty-element defaults and fixed rejection. + ## C# runtime availability for smoke checks The C# execution fixtures target `net8.0`. An installed .NET 10 SDK/runtime diff --git a/crates/polyxml-core/src/codegen/cpp/mod.rs b/crates/polyxml-core/src/codegen/cpp/mod.rs index 339529a..da235e8 100644 --- a/crates/polyxml-core/src/codegen/cpp/mod.rs +++ b/crates/polyxml-core/src/codegen/cpp/mod.rs @@ -1009,7 +1009,9 @@ inline int polyxml_integer_compare(std::string_view a,std::string_view b) noexce // Value field let init = match &f.default_value { Some(v) => match f.type_ref { - TypeRef::Primitive(p) if p.is_unbounded_integer() => format!(" = {v:?}"), + TypeRef::Primitive(p) if p.is_unbounded_integer() => { + format!(" = {}", super::cpp_string_literal(v)) + } TypeRef::Primitive(PrimitiveType::Boolean) => { format!(" = {}", v.to_lowercase()) } @@ -1019,7 +1021,7 @@ inline int polyxml_integer_compare(std::string_view a,std::string_view b) noexce TypeRef::Primitive(PrimitiveType::String) | TypeRef::Primitive(PrimitiveType::Token) | TypeRef::Primitive(PrimitiveType::NormalizedString) => { - format!(" = \"{}\"", v.replace('\\', "\\\\").replace('"', "\\\"")) + format!(" = {}", super::cpp_string_literal(v)) } TypeRef::Primitive(_) => format!(" = {}", v), TypeRef::Named(_) => format!(" = {}", v), diff --git a/crates/polyxml-core/src/codegen/csharp/mod.rs b/crates/polyxml-core/src/codegen/csharp/mod.rs index 31ffede..05153f4 100644 --- a/crates/polyxml-core/src/codegen/csharp/mod.rs +++ b/crates/polyxml-core/src/codegen/csharp/mod.rs @@ -1304,10 +1304,10 @@ impl CSharpCodegen { if let Some(kind) = integer_kind { return format!("PolyxmlIntegerLexical.Validate({text},{kind})"); } - format!("({base})new XmlSerializer(typeof({base}), new XmlRootAttribute(\"value\")).Deserialize(new System.IO.StringReader(\"\" + System.Security.SecurityElement.Escape({text}) + \"\"))!") + format!("({base})new XmlSerializer(typeof({base}), new XmlRootAttribute(\"value\")).Deserialize(new System.IO.StringReader(\"\" + System.Security.SecurityElement.Escape({text}).Replace(\"\\r\", \" \") + \"\"))!") }; if let Some(fixed) = &field.fixed_value { - let expected = parse(&format!("{fixed:?}")); + let expected = parse(&super::string_literal(fixed)); let initial = if field.cardinality.is_optional() && field.kind == FieldKind::Element { "default!".to_string() } else { @@ -1327,7 +1327,7 @@ impl CSharpCodegen { {indent} [XmlIgnore] public {ty} {name} {{ get => _{name}; set {{ if ({present}!({equal})) throw new System.ComponentModel.DataAnnotations.ValidationException(\"Fixed value constraint violated for {name}\"); _{name} = value; }} }}").unwrap(); } else { let initial = if field.kind == FieldKind::Attribute { - parse(&format!("{default:?}")) + parse(&super::string_literal(default)) } else { "default!".to_string() }; @@ -1361,7 +1361,10 @@ impl CSharpCodegen { let text = if field.kind == FieldKind::Attribute { "value".into() } else { - format!("value.Length == 0 ? {default:?} : value") + format!( + "value.Length == 0 ? {} : value", + super::string_literal(default) + ) }; let parsed = parse("text"); writeln!(out, "{indent} set {{ if (value is null) {{ {name} = default!; return; }} var text = {text}; {name} = {parsed}; }} diff --git a/crates/polyxml-core/src/codegen/python/mod.rs b/crates/polyxml-core/src/codegen/python/mod.rs index 6858fec..11b6d27 100644 --- a/crates/polyxml-core/src/codegen/python/mod.rs +++ b/crates/polyxml-core/src/codegen/python/mod.rs @@ -1012,10 +1012,10 @@ impl PythonCodegen { } if let Some(ref fixed) = field.fixed_value { - parts.push(format!("\"fixed\": {fixed:?}")); + parts.push(format!("\"fixed\": {}", super::string_literal(fixed))); } if let Some(ref default) = field.default_value { - parts.push(format!("\"default\": {default:?}")); + parts.push(format!("\"default\": {}", super::string_literal(default))); } if matches!(super::primitive_base(&field.type_ref, ir), TypeRef::List(_)) { parts.push("\"tokens\": True".into()); @@ -1045,7 +1045,7 @@ impl PythonCodegen { fn format_default_value(&self, val: &str, type_ref: &TypeRef, ir: &SchemaIR) -> String { if matches!(super::primitive_base(type_ref, ir), TypeRef::Primitive(p) if p.is_unbounded_integer()) { - return format!("int({val:?})"); + return format!("int({})", super::string_literal(val)); } let base = super::primitive_base(type_ref, ir); @@ -1073,20 +1073,20 @@ impl PythonCodegen { if val.trim().parse::().is_ok() { val.trim().to_string() } else { - format!("\"{}\"", val.replace('"', "\\\"")) + super::string_literal(val) } } TypeRef::Primitive(PrimitiveType::Float | PrimitiveType::Double) => { if val.trim().parse::().is_ok() { val.trim().to_string() } else { - format!("\"{}\"", val.replace('"', "\\\"")) + super::string_literal(val) } } TypeRef::Primitive(PrimitiveType::Decimal) => { - format!("Decimal(\"{}\")", val.replace('"', "\\\"")) + format!("Decimal({})", super::string_literal(val)) } - _ => format!("\"{}\"", val.replace('"', "\\\"")), + _ => super::string_literal(val), } } diff --git a/crates/polyxml-core/tests/test_default_literal_codegen.rs b/crates/polyxml-core/tests/test_default_literal_codegen.rs new file mode 100644 index 0000000..1f20773 --- /dev/null +++ b/crates/polyxml-core/tests/test_default_literal_codegen.rs @@ -0,0 +1,138 @@ +//! Execute consumers: escaping must preserve values as well as valid source. +use polyxml::codegen::*; +use polyxml::schema_parser::XsdParser; +use std::{fs, path::Path, process::Command}; + +fn run(directory: &Path, program: &str, args: &[&str]) { + let output = Command::new(program) + .args(args) + .current_dir(directory) + .output() + .unwrap(); + assert!( + output.status.success(), + "{program} {args:?}:\n{}\n{}", + String::from_utf8_lossy(&output.stdout), + String::from_utf8_lossy(&output.stderr) + ); +} + +#[test] +fn generated_string_defaults_and_fixed_values_preserve_xml_characters() { + let ir = XsdParser::new() + .parse_str(include_str!( + "../../../research/fixtures/default_literal_escaping.xsd" + )) + .unwrap(); + let expected = "\"quoted\"\\path\\u000a\t\n\r\u{85}\u{2028}cafรฉ ๐Ÿ˜€"; + let root = tempfile::tempdir().unwrap(); + let consumer = |name: &str| { + let path = root.path().join(name); + fs::create_dir(&path).unwrap(); + fs::write(path.join("expected.txt"), expected).unwrap(); + path + }; + let python = consumer("python"); + fs::write( + python.join("models.py"), + PythonCodegen::new(PythonOptions::default()).generate_module(&ir), + ) + .unwrap(); + fs::write( + python.join("check.py"), + r#"import dataclasses +from models import RootType +with open('expected.txt', encoding='utf-8', newline='') as f: + expected = f.read() +model = RootType(fixed=expected) +assert model.value == expected, repr(model.value) +assert model.label == expected, repr(model.label) +fields = {f.name: f for f in dataclasses.fields(RootType)} +assert fields['value'].metadata['default'] == expected +assert fields['label'].metadata['default'] == expected +assert fields['fixed'].metadata['fixed'] == expected +"#, + ) + .unwrap(); + run(&python, "python3", &["check.py"]); + let pydantic = consumer("pydantic"); + fs::write( + pydantic.join("models.py"), + PythonCodegen::new(PythonOptions { + backend: PythonBackend::Pydantic, + ..Default::default() + }) + .generate_module(&ir), + ) + .unwrap(); + fs::write( + pydantic.join("check.py"), + r#"from models import RootType +with open('expected.txt', encoding='utf-8', newline='') as f: + expected = f.read() +model = RootType(fixed=expected) +assert model.value == expected +assert model.label == expected +assert RootType.model_fields['value'].json_schema_extra['default'] == expected +assert RootType.model_fields['fixed'].json_schema_extra['fixed'] == expected +"#, + ) + .unwrap(); + run(&pydantic, "python3", &["check.py"]); + let cpp = consumer("cpp"); + fs::write( + cpp.join("models.hpp"), + CppCodegen::new(CppOptions::default()).generate_header(&ir), + ) + .unwrap(); + fs::write( + cpp.join("main.cpp"), + r#"#include "models.hpp" +#include +#include +#include +int main() { + std::ifstream input("expected.txt", std::ios::binary); + std::string expected((std::istreambuf_iterator(input)), std::istreambuf_iterator()); + polyxml::generated::RootType model; + if(model.value != expected) throw std::runtime_error("default mismatch"); +} +"#, + ) + .unwrap(); + run(&cpp, "g++", &["-std=c++20", "main.cpp", "-o", "check"]); + run(&cpp, "./check", &[]); + let csharp = consumer("csharp"); + fs::write(csharp.join("Check.csproj"), "Exenet8.0enableenable").unwrap(); + fs::write( + csharp.join("Models.cs"), + CSharpCodegen::new(CSharpOptions { + namespace: "Models".into(), + ..Default::default() + }) + .generate_module(&ir), + ) + .unwrap(); + fs::write( + csharp.join("Program.cs"), + r#"using Models; +using System.ComponentModel.DataAnnotations; +var expected = File.ReadAllText("expected.txt"); +var model = new RootType(); +if(model.Label != expected || model.Fixed != expected) throw new Exception("initializer mismatch"); +model.ValueXml = ""; +if(model.Value != expected) throw new Exception("element default mismatch"); +model.Fixed = expected; +try { model.Fixed = expected + "wrong"; throw new Exception("fixed value accepted"); } +catch(ValidationException) {} +model.LabelXml = expected; +if(model.Label != expected) throw new Exception("attribute proxy mismatch"); +"#, + ) + .unwrap(); + run( + &csharp, + "dotnet", + &["run", "--project", "Check.csproj", "--verbosity", "quiet"], + ); +} diff --git a/research/fixtures/default_literal_escaping.xsd b/research/fixtures/default_literal_escaping.xsd new file mode 100644 index 0000000..103a48b --- /dev/null +++ b/research/fixtures/default_literal_escaping.xsd @@ -0,0 +1,7 @@ + + + + + + + From a7ed359684c099268e303e43c774a411ef23d47c Mon Sep 17 00:00:00 2001 From: Bailey Nguyen Date: Sat, 3 Oct 2026 19:08:36 -0500 Subject: [PATCH 2/4] test: verify strict consumers and select CLI from isolated Cargo targets --- .../skills/polyxml-codegen-workflow/SKILL.md | 8 +++ .../tests/test_default_literal_codegen.rs | 16 ++++- .../tests/test_generated_models.py | 64 +++++++++++++++++-- scripts/verify_codegen.sh | 2 +- 4 files changed, 80 insertions(+), 10 deletions(-) diff --git a/.agents/skills/polyxml-codegen-workflow/SKILL.md b/.agents/skills/polyxml-codegen-workflow/SKILL.md index 63f8bbe..dbc41d6 100644 --- a/.agents/skills/polyxml-codegen-workflow/SKILL.md +++ b/.agents/skills/polyxml-codegen-workflow/SKILL.md @@ -970,3 +970,11 @@ owned/borrowed XML and JSON round trips, use the declared root name explicitly when it differs from its type name, and distinguish C++/TypeScript model-only generation from their runtime binding schemas. Strict docs builds catch broken anchors and misplaced code fences, including guides appended after old fences. + +When Python generated-model tests use an isolated absolute CARGO_TARGET_DIR, +resolve the CLI under that target, not the checkout's default target directory +or an unrelated global executable. Relative target values resolve from the +checkout because the helper builds with that cwd. The generated-model test +helper now honors this override and builds the matching CLI if needed. Keep +workspace targets owned by one worktree; switching checkouts in a shared target +can leave stale unchanged executables even after a core compile message. diff --git a/crates/polyxml-core/tests/test_default_literal_codegen.rs b/crates/polyxml-core/tests/test_default_literal_codegen.rs index 1f20773..fabef09 100644 --- a/crates/polyxml-core/tests/test_default_literal_codegen.rs +++ b/crates/polyxml-core/tests/test_default_literal_codegen.rs @@ -100,10 +100,22 @@ int main() { "#, ) .unwrap(); - run(&cpp, "g++", &["-std=c++20", "main.cpp", "-o", "check"]); + run( + &cpp, + "g++", + &[ + "-std=c++20", + "-Wall", + "-Wextra", + "-Werror", + "main.cpp", + "-o", + "check", + ], + ); run(&cpp, "./check", &[]); let csharp = consumer("csharp"); - fs::write(csharp.join("Check.csproj"), "Exenet8.0enableenable").unwrap(); + fs::write(csharp.join("Check.csproj"), "Exenet8.0enableenabletrue").unwrap(); fs::write( csharp.join("Models.cs"), CSharpCodegen::new(CSharpOptions { diff --git a/crates/polyxml-python/tests/test_generated_models.py b/crates/polyxml-python/tests/test_generated_models.py index 38741c4..3375b29 100644 --- a/crates/polyxml-python/tests/test_generated_models.py +++ b/crates/polyxml-python/tests/test_generated_models.py @@ -1,4 +1,5 @@ import importlib.util +import os import pathlib import shutil import subprocess @@ -262,17 +263,20 @@ def _load_module_from_file(module_name: str, file_path: pathlib.Path): def _get_polyxml_bin() -> pathlib.Path: repo_root = pathlib.Path(__file__).parent.parent.parent.parent exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" - candidates = [ - repo_root / "target" / "debug" / exe_name, - repo_root / "target" / "release" / exe_name, - ] + configured_target = os.environ.get("CARGO_TARGET_DIR") + target_dir = pathlib.Path(configured_target or "target") + if not target_dir.is_absolute(): + target_dir = repo_root / target_dir + target_dir = target_dir.resolve() + candidates = [target_dir / profile / exe_name for profile in ("debug", "release")] for c in candidates: if c.exists(): return c - which_path = shutil.which(exe_name) or shutil.which("polyxml") - if which_path: - return pathlib.Path(which_path) + if not configured_target: + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) # Attempt on-the-fly compilation via cargo if not found subprocess.run( @@ -288,6 +292,52 @@ def _get_polyxml_bin() -> pathlib.Path: raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +@pytest.mark.parametrize("relative", [False, True]) +def test_cli_discovery_respects_cargo_target_directory(tmp_path, monkeypatch, relative): + repo_root = tmp_path / "repo" + monkeypatch.setitem( + _get_polyxml_bin.__globals__, + "__file__", + str(repo_root / "crates/polyxml-python/tests/test_generated_models.py"), + ) + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + stale = repo_root / "target/debug" / exe_name + stale.parent.mkdir(parents=True) + stale.write_text("old revision") + matching = repo_root / "custom-target/debug" / exe_name + matching.parent.mkdir(parents=True) + matching.write_text("matching revision") + monkeypatch.setenv( + "CARGO_TARGET_DIR", "custom-target" if relative else str(matching.parent.parent) + ) + monkeypatch.setattr(shutil, "which", lambda _: str(stale)) + assert _get_polyxml_bin() == matching + + +def test_configured_target_builds_matching_cli_instead_of_using_global(tmp_path, monkeypatch): + repo_root = tmp_path / "repo" + monkeypatch.setitem( + _get_polyxml_bin.__globals__, + "__file__", + str(repo_root / "crates/polyxml-python/tests/test_generated_models.py"), + ) + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + matching = repo_root / "custom-target/debug" / exe_name + monkeypatch.setenv("CARGO_TARGET_DIR", str(matching.parent.parent)) + monkeypatch.setattr(shutil, "which", lambda _: str(tmp_path / "old-global-cli")) + builds = [] + + def build(command, *, cwd, check, capture_output): + builds.append((command, cwd)) + assert check and capture_output + matching.parent.mkdir(parents=True) + matching.write_text("matching revision") + + monkeypatch.setattr(subprocess, "run", build) + assert _get_polyxml_bin() == matching + assert builds == [(["cargo", "build", "-p", "polyxml-cli"], repo_root)] + + @pytest.fixture(scope="module") def generated_models(): """Generates both Dataclass and Pydantic models from SAMPLE_XSD using polyxml CLI, diff --git a/scripts/verify_codegen.sh b/scripts/verify_codegen.sh index cb2b33c..608824c 100755 --- a/scripts/verify_codegen.sh +++ b/scripts/verify_codegen.sh @@ -18,7 +18,7 @@ NC='\033[0m' echo -e "${BLUE}==> Building polyxml CLI binary...${NC}" cargo build -p polyxml-cli --quiet -POLYXML_BIN="${REPO_ROOT}/target/debug/polyxml" +POLYXML_BIN="${CARGO_TARGET_DIR:-${REPO_ROOT}/target}/debug/polyxml" TMP_DIR="$(mktemp -d -t polyxml-smoke-XXXXXX)" trap 'rm -rf "${TMP_DIR}"' EXIT From a2dd69149f66a8d624273cce1e8631f5b9de02b0 Mon Sep 17 00:00:00 2001 From: Bailey Nguyen Date: Sat, 3 Oct 2026 19:27:33 -0500 Subject: [PATCH 3/4] research: retain default literal consumer and isolated corpus evidence --- .../default-literals/AttrDecl.txt | 23 + .../default-literals/CType.txt | 53 + .../default-literals/NIST.txt | 32 + .../default-literals/baseline-generated.py | 59 + .../baseline-reproduction.txt | 8 + .../default-literals/candidate-generated.py | 57 + .../default-literals/cli-probe.txt | 9 + .../default-literals/companion-binding.txt | 10 + .../default-literals/corpus-comparison.json | 11 + .../default-literals/focused-consumers.txt | 55 + .../default-literals/manifest.json | 58 + .../default-literals/native-probe.json | 4 + .../quality-gate-missing-target.txt | 3822 +++++++++++++++++ .../default-literals/quality-gate.txt | 769 ++++ .../seven-backend-cli-smoke.txt | 21 + .../runtime-default-literals-2026-10-03.md | 63 + 16 files changed, 5054 insertions(+) create mode 100644 research/data/runtime-followups-2026-10-03/default-literals/AttrDecl.txt create mode 100644 research/data/runtime-followups-2026-10-03/default-literals/CType.txt create mode 100644 research/data/runtime-followups-2026-10-03/default-literals/NIST.txt create mode 100644 research/data/runtime-followups-2026-10-03/default-literals/baseline-generated.py create mode 100644 research/data/runtime-followups-2026-10-03/default-literals/baseline-reproduction.txt create mode 100644 research/data/runtime-followups-2026-10-03/default-literals/candidate-generated.py create mode 100644 research/data/runtime-followups-2026-10-03/default-literals/cli-probe.txt create mode 100644 research/data/runtime-followups-2026-10-03/default-literals/companion-binding.txt create mode 100644 research/data/runtime-followups-2026-10-03/default-literals/corpus-comparison.json create mode 100644 research/data/runtime-followups-2026-10-03/default-literals/focused-consumers.txt create mode 100644 research/data/runtime-followups-2026-10-03/default-literals/manifest.json create mode 100644 research/data/runtime-followups-2026-10-03/default-literals/native-probe.json create mode 100644 research/data/runtime-followups-2026-10-03/default-literals/quality-gate-missing-target.txt create mode 100644 research/data/runtime-followups-2026-10-03/default-literals/quality-gate.txt create mode 100644 research/data/runtime-followups-2026-10-03/default-literals/seven-backend-cli-smoke.txt create mode 100644 research/runtime-default-literals-2026-10-03.md diff --git a/research/data/runtime-followups-2026-10-03/default-literals/AttrDecl.txt b/research/data/runtime-followups-2026-10-03/default-literals/AttrDecl.txt new file mode 100644 index 0000000..edebaa0 --- /dev/null +++ b/research/data/runtime-followups-2026-10-03/default-literals/AttrDecl.txt @@ -0,0 +1,23 @@ +memcap: <=7711 MiB (60% of 12853 MiB available) [systemd MemoryMax, swap off] +โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ +โ”‚ PolyXML W3C XML Schema Conformance Suite โ”‚ +โ”‚ Compiler Binary: /tmp/polyxml-followup-default-bin/polyxml โ”‚ +โ”‚ W3C Submodule: /home/bailey/github/polyxml-w3c-tests/w3c โ”‚ +โ”‚ Selected Suite: AttrDecl โ”‚ +โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ +Executing 50 test group(s)... + + Testing AttrDecl/ad_name00108m5... โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” 100% 0:00:00 + + W3C XML Schema Conformance Summary +โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”“ +โ”ƒ Category โ”ƒ Count โ”ƒ Rate โ”ƒ +โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ +โ”‚ Total Test Groups โ”‚ 50 โ”‚ 100.0% โ”‚ +โ”‚ Schema Compilations Passed โ”‚ 50 โ”‚ 100.0% โ”‚ +โ”‚ Schema Compilations Failed โ”‚ 0 โ”‚ 0.0% โ”‚ +โ”‚ Valid Instances Evaluated โ”‚ 50 โ”‚ - โ”‚ +โ”‚ Roundtrip Validations Passed โ”‚ 50 โ”‚ 100.0% โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + +All executed tests passed with 100% compliance! diff --git a/research/data/runtime-followups-2026-10-03/default-literals/CType.txt b/research/data/runtime-followups-2026-10-03/default-literals/CType.txt new file mode 100644 index 0000000..854d6a9 --- /dev/null +++ b/research/data/runtime-followups-2026-10-03/default-literals/CType.txt @@ -0,0 +1,53 @@ +memcap: <=7722 MiB (60% of 12871 MiB available) [systemd MemoryMax, swap off] +โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ +โ”‚ PolyXML W3C XML Schema Conformance Suite โ”‚ +โ”‚ Compiler Binary: /tmp/polyxml-followup-default-bin/polyxml โ”‚ +โ”‚ W3C Submodule: /home/bailey/github/polyxml-w3c-tests/w3c โ”‚ +โ”‚ Selected Suite: CType โ”‚ +โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ +Executing 31 test group(s)... + + Testing CType/targetns00101m... โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ” 100% 0:00:00 + + W3C XML Schema Conformance Summary +โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”“ +โ”ƒ Category โ”ƒ Count โ”ƒ Rate โ”ƒ +โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ +โ”‚ Total Test Groups โ”‚ 31 โ”‚ 100.0% โ”‚ +โ”‚ Schema Compilations Passed โ”‚ 31 โ”‚ 100.0% โ”‚ +โ”‚ Schema Compilations Failed โ”‚ 0 โ”‚ 0.0% โ”‚ +โ”‚ Valid Instances Evaluated โ”‚ 28 โ”‚ - โ”‚ +โ”‚ Roundtrip Validations Passed โ”‚ 23 โ”‚ 82.1% โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + +Failures & Exceptions (5 groups): +โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“ +โ”ƒ โ”ƒ โ”ƒ Instances โ”ƒ Error / First โ”ƒ +โ”ƒ Suite/Group โ”ƒ Schema Status โ”ƒ (Pass/Total) โ”ƒ Failure โ”ƒ +โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ +โ”‚ CType/basetd00101โ€ฆ โ”‚ PASS โ”‚ 0/1 โ”‚ Positive: FAIL - โ”‚ +โ”‚ โ”‚ โ”‚ โ”‚ Root.__init__() โ”‚ +โ”‚ โ”‚ โ”‚ โ”‚ missing 1 required โ”‚ +โ”‚ โ”‚ โ”‚ โ”‚ keyword-only โ”‚ +โ”‚ โ”‚ โ”‚ โ”‚ argument: 'valu โ”‚ +โ”‚ CType/basetd00101โ€ฆ โ”‚ PASS โ”‚ 0/1 โ”‚ Positive: FAIL - โ”‚ +โ”‚ โ”‚ โ”‚ โ”‚ Root.__init__() โ”‚ +โ”‚ โ”‚ โ”‚ โ”‚ missing 1 required โ”‚ +โ”‚ โ”‚ โ”‚ โ”‚ keyword-only โ”‚ +โ”‚ โ”‚ โ”‚ โ”‚ argument: 'valu โ”‚ +โ”‚ CType/derivationmโ€ฆ โ”‚ PASS โ”‚ 0/1 โ”‚ Positive: FAIL - โ”‚ +โ”‚ โ”‚ โ”‚ โ”‚ B.__init__() โ”‚ +โ”‚ โ”‚ โ”‚ โ”‚ missing 1 required โ”‚ +โ”‚ โ”‚ โ”‚ โ”‚ keyword-only โ”‚ +โ”‚ โ”‚ โ”‚ โ”‚ argument: 'value' โ”‚ +โ”‚ CType/psubstitutiโ€ฆ โ”‚ PASS โ”‚ 1/2 โ”‚ pSubstitutions001โ€ฆ โ”‚ +โ”‚ โ”‚ โ”‚ โ”‚ FAIL - Schema โ”‚ +โ”‚ โ”‚ โ”‚ โ”‚ error: Unexpected โ”‚ +โ”‚ โ”‚ โ”‚ โ”‚ root element โ”‚ +โ”‚ โ”‚ โ”‚ โ”‚ {pSubstitu โ”‚ +โ”‚ CType/psubstitutiโ€ฆ โ”‚ PASS โ”‚ 1/2 โ”‚ pSubstitutions001โ€ฆ โ”‚ +โ”‚ โ”‚ โ”‚ โ”‚ FAIL - Schema โ”‚ +โ”‚ โ”‚ โ”‚ โ”‚ error: Unexpected โ”‚ +โ”‚ โ”‚ โ”‚ โ”‚ root element โ”‚ +โ”‚ โ”‚ โ”‚ โ”‚ {pSubstitu โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ diff --git a/research/data/runtime-followups-2026-10-03/default-literals/NIST.txt b/research/data/runtime-followups-2026-10-03/default-literals/NIST.txt new file mode 100644 index 0000000..936c268 --- /dev/null +++ b/research/data/runtime-followups-2026-10-03/default-literals/NIST.txt @@ -0,0 +1,32 @@ +memcap: <=7699 MiB (60% of 12832 MiB available) [systemd MemoryMax, swap off] +โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ +โ”‚ PolyXML W3C XML Schema Conformance Suite โ”‚ +โ”‚ Compiler Binary: /tmp/polyxml-followup-default-bin/polyxml โ”‚ +โ”‚ W3C Submodule: /home/bailey/github/polyxml-w3c-tests/w3c โ”‚ +โ”‚ Selected Suite: NISTXMLSchemaDatatypes โ”‚ +โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ +Executing 100 test group(s)... + + Testing NIST2004-01-14/atomic-nonPositiveInteger-totalDigits... โ”โ”โ”โ” 100% 0:0โ€ฆ + + W3C XML Schema Conformance Summary +โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”“ +โ”ƒ Category โ”ƒ Count โ”ƒ Rate โ”ƒ +โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ +โ”‚ Total Test Groups โ”‚ 100 โ”‚ 100.0% โ”‚ +โ”‚ Schema Compilations Passed โ”‚ 100 โ”‚ 100.0% โ”‚ +โ”‚ Schema Compilations Failed โ”‚ 0 โ”‚ 0.0% โ”‚ +โ”‚ Valid Instances Evaluated โ”‚ 452 โ”‚ - โ”‚ +โ”‚ Roundtrip Validations Passed โ”‚ 447 โ”‚ 98.9% โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + +Failures & Exceptions (1 groups): +โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“ +โ”ƒ โ”ƒ โ”ƒ Instances โ”ƒ Error / First โ”ƒ +โ”ƒ Suite/Group โ”ƒ Schema Status โ”ƒ (Pass/Total) โ”ƒ Failure โ”ƒ +โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ +โ”‚ NIST2004-01-14/atโ€ฆ โ”‚ PASS โ”‚ 0/5 โ”‚ NISTXML-SV-IV-atoโ€ฆ โ”‚ +โ”‚ โ”‚ โ”‚ โ”‚ FAIL - Scalar โ”‚ +โ”‚ โ”‚ โ”‚ โ”‚ parse error for โ”‚ +โ”‚ โ”‚ โ”‚ โ”‚ field 'v โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ diff --git a/research/data/runtime-followups-2026-10-03/default-literals/baseline-generated.py b/research/data/runtime-followups-2026-10-03/default-literals/baseline-generated.py new file mode 100644 index 0000000..0251025 --- /dev/null +++ b/research/data/runtime-followups-2026-10-03/default-literals/baseline-generated.py @@ -0,0 +1,59 @@ +# @generated by PolyXML Compiler (https://github.com/polyxml/PolyXML) +from __future__ import annotations + +from dataclasses import dataclass, field +from typing import Self + +@dataclass(slots=True, kw_only=True) +class RootType: + class Meta: + name = "RootType" + strict_root = False + + value: str = field(default="\"quoted\"\path\u000a + ย…โ€จcafรฉ ๐Ÿ˜€", metadata={"type": "Element", "name": "Value", "json_name": "Value", "default": "\"quoted\"\\path\\u000a\t\n\r\u{85}\u{2028}cafรฉ ๐Ÿ˜€"}) + fixed: str = field(metadata={"type": "Element", "name": "Fixed", "json_name": "Fixed", "fixed": "\"quoted\"\\path\\u000a\t\n\r\u{85}\u{2028}cafรฉ ๐Ÿ˜€"}) + label: str | None = field(default="\"quoted\"\path\u000a + ย…โ€จcafรฉ ๐Ÿ˜€", metadata={"type": "Attribute", "name": "Label", "json_name": "Label", "default": "\"quoted\"\\path\\u000a\t\n\r\u{85}\u{2028}cafรฉ ๐Ÿ˜€"}) + + @classmethod + def from_xml(cls, data: bytes | str) -> Self: + """Deserialize XML bytes or string into this model.""" + import polyxml + raw_bytes = data.encode("utf-8") if isinstance(data, str) else data + return polyxml.deserialize(raw_bytes, cls) + + def to_xml( + self, + *, + indent: int | None = None, + namespaces: bool | None = None, + ns_map: dict[str, str] | None = None, + ) -> bytes: + """Serialize this model instance into XML bytes.""" + import polyxml + return polyxml.serialize(self, indent=indent, namespaces=namespaces, ns_map=ns_map) + + @classmethod + def from_json(cls, data: bytes | str) -> Self: + """Deserialize JSON bytes or string into this model.""" + import polyxml + return polyxml.deserialize_json(data, cls) + + def to_json( + self, + *, + indent: int | None = None, + by_alias: bool = True, + ) -> bytes: + """Serialize this model instance into JSON bytes.""" + import polyxml + return polyxml.serialize_json(self, indent=indent, by_alias=by_alias) + +@dataclass(slots=True, kw_only=True) +class Root(RootType): + class Meta(RootType.Meta): + name = "Root" + namespace = "" + strict_root = True + root_type = RootType diff --git a/research/data/runtime-followups-2026-10-03/default-literals/baseline-reproduction.txt b/research/data/runtime-followups-2026-10-03/default-literals/baseline-reproduction.txt new file mode 100644 index 0000000..d87cd5a --- /dev/null +++ b/research/data/runtime-followups-2026-10-03/default-literals/baseline-reproduction.txt @@ -0,0 +1,8 @@ +Parsing schema: /home/bailey/github/polyxml-default-literals/research/fixtures/default_literal_escaping.xsd + Types: 1 total (1 structs, 0 enums, 0 unions, 0 simple restrictions) + Root elements: 1 +Code generation complete. + File "/tmp/polyxml-default-literals-baseline-python/default_literal_escaping.py", line 13 + value: str = field(default="\"quoted\"\path\u000a + ^ +SyntaxError: unterminated string literal (detected at line 13); perhaps you escaped the end quote? diff --git a/research/data/runtime-followups-2026-10-03/default-literals/candidate-generated.py b/research/data/runtime-followups-2026-10-03/default-literals/candidate-generated.py new file mode 100644 index 0000000..5530100 --- /dev/null +++ b/research/data/runtime-followups-2026-10-03/default-literals/candidate-generated.py @@ -0,0 +1,57 @@ +# @generated by PolyXML Compiler (https://github.com/polyxml/PolyXML) +from __future__ import annotations + +from dataclasses import dataclass, field +from typing import Self + +@dataclass(slots=True, kw_only=True) +class RootType: + class Meta: + name = "RootType" + strict_root = False + + value: str = field(default="\"quoted\"\\path\\u000a\t\n\r\u0085\u2028cafรฉ ๐Ÿ˜€", metadata={"type": "Element", "name": "Value", "json_name": "Value", "default": "\"quoted\"\\path\\u000a\t\n\r\u0085\u2028cafรฉ ๐Ÿ˜€"}) + fixed: str = field(metadata={"type": "Element", "name": "Fixed", "json_name": "Fixed", "fixed": "\"quoted\"\\path\\u000a\t\n\r\u0085\u2028cafรฉ ๐Ÿ˜€"}) + label: str | None = field(default="\"quoted\"\\path\\u000a\t\n\r\u0085\u2028cafรฉ ๐Ÿ˜€", metadata={"type": "Attribute", "name": "Label", "json_name": "Label", "default": "\"quoted\"\\path\\u000a\t\n\r\u0085\u2028cafรฉ ๐Ÿ˜€"}) + + @classmethod + def from_xml(cls, data: bytes | str) -> Self: + """Deserialize XML bytes or string into this model.""" + import polyxml + raw_bytes = data.encode("utf-8") if isinstance(data, str) else data + return polyxml.deserialize(raw_bytes, cls) + + def to_xml( + self, + *, + indent: int | None = None, + namespaces: bool | None = None, + ns_map: dict[str, str] | None = None, + ) -> bytes: + """Serialize this model instance into XML bytes.""" + import polyxml + return polyxml.serialize(self, indent=indent, namespaces=namespaces, ns_map=ns_map) + + @classmethod + def from_json(cls, data: bytes | str) -> Self: + """Deserialize JSON bytes or string into this model.""" + import polyxml + return polyxml.deserialize_json(data, cls) + + def to_json( + self, + *, + indent: int | None = None, + by_alias: bool = True, + ) -> bytes: + """Serialize this model instance into JSON bytes.""" + import polyxml + return polyxml.serialize_json(self, indent=indent, by_alias=by_alias) + +@dataclass(slots=True, kw_only=True) +class Root(RootType): + class Meta(RootType.Meta): + name = "Root" + namespace = "" + strict_root = True + root_type = RootType diff --git a/research/data/runtime-followups-2026-10-03/default-literals/cli-probe.txt b/research/data/runtime-followups-2026-10-03/default-literals/cli-probe.txt new file mode 100644 index 0000000..04f3db9 --- /dev/null +++ b/research/data/runtime-followups-2026-10-03/default-literals/cli-probe.txt @@ -0,0 +1,9 @@ +Parsing schema: research/fixtures/default_literal_escaping.xsd + Types: 1 total (1 structs, 0 enums, 0 unions, 0 simple restrictions) + Root elements: 1 +Code generation complete. +{ + "expected": "\"quoted\"\\path\\u000a\t\n\r\u0085\u2028caf\u00e9 \ud83d\ude00", + "default": "\"quoted\"\\path\\u000a\t\n\r\u0085\u2028caf\u00e9 \ud83d\ude00", + "cli_sha256": "55da9bccc0425fe2c1300c98e1123717f2e61a815567ba3939de0ef50c6c7565" +} diff --git a/research/data/runtime-followups-2026-10-03/default-literals/companion-binding.txt b/research/data/runtime-followups-2026-10-03/default-literals/companion-binding.txt new file mode 100644 index 0000000..7c25f80 --- /dev/null +++ b/research/data/runtime-followups-2026-10-03/default-literals/companion-binding.txt @@ -0,0 +1,10 @@ +memcap: <=7777 MiB (60% of 12962 MiB available) [systemd MemoryMax, swap off] +๐Ÿน Building a mixed python/rust project +๐Ÿ Found CPython 3.14 at /home/bailey/github/polyxml-w3c-tests/.venv/bin/python +๐Ÿ”— Found pyo3 bindings with abi3-py3.12 support +๐Ÿ“ก Using build options features from pyproject.toml +Checked 6 packages in 0.47ms + Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.02s +๐Ÿ“ฆ Built wheel for abi3 Python โ‰ฅ 3.12 to /tmp/.tmpWcsY7w/polyxml-0.34.6-cp312-abi3-linux_x86_64.whl +โœ๏ธ Setting installed package as editable +๐Ÿ›  Installed polyxml-0.34.6 diff --git a/research/data/runtime-followups-2026-10-03/default-literals/corpus-comparison.json b/research/data/runtime-followups-2026-10-03/default-literals/corpus-comparison.json new file mode 100644 index 0000000..7ff6421 --- /dev/null +++ b/research/data/runtime-followups-2026-10-03/default-literals/corpus-comparison.json @@ -0,0 +1,11 @@ +{ + "CType": { + "identical_summary_and_failures": true + }, + "AttrDecl": { + "identical_summary_and_failures": true + }, + "NIST": { + "identical_summary_and_failures": true + } +} diff --git a/research/data/runtime-followups-2026-10-03/default-literals/focused-consumers.txt b/research/data/runtime-followups-2026-10-03/default-literals/focused-consumers.txt new file mode 100644 index 0000000..1f0b7b2 --- /dev/null +++ b/research/data/runtime-followups-2026-10-03/default-literals/focused-consumers.txt @@ -0,0 +1,55 @@ +memcap: <=7739 MiB (60% of 12899 MiB available) [systemd MemoryMax, swap off] + Compiling syn v2.0.119 + Compiling serde v1.0.229 + Compiling cfg-if v1.0.4 + Compiling zerocopy v0.8.57 + Compiling zerocopy-derive v0.8.57 + Compiling shlex v2.0.1 + Compiling find-msvc-tools v0.1.12 + Compiling cc v1.4.5 + Compiling autocfg v1.5.1 + Compiling fastrand v2.5.0 + Compiling num-traits v0.2.19 + Compiling half v2.7.1 + Compiling alloca v0.4.0 + Compiling phf_shared v0.14.0 + Compiling rustix v1.1.5 + Compiling either v1.18.0 + Compiling getrandom v0.4.3 + Compiling ciborium-io v0.2.2 + Compiling ciborium-ll v0.2.2 + Compiling phf_generator v0.14.0 + Compiling itertools v0.13.0 + Compiling clap_builder v4.6.7 + Compiling cast v0.3.0 + Compiling bitflags v2.13.2 + Compiling linux-raw-sys v0.12.1 + Compiling same-file v1.0.6 + Compiling walkdir v2.5.0 + Compiling criterion-plot v0.8.2 + Compiling minijinja v2.24.0 + Compiling phf_codegen v0.14.0 + Compiling clap v4.6.7 + Compiling phf_macros v0.14.0 + Compiling ciborium v0.2.2 + Compiling tinytemplate v1.2.1 + Compiling page_size v0.6.0 + Compiling quick-xml v0.42.0 + Compiling yansi v1.0.1 + Compiling oorandom v11.1.5 + Compiling diff v0.1.13 + Compiling anes v0.1.6 + Compiling once_cell v1.21.4 + Compiling polyxml v0.34.6 (/home/bailey/github/polyxml-default-literals/crates/polyxml-core) + Compiling tempfile v3.27.0 + Compiling criterion v0.8.2 + Compiling pretty_assertions v1.4.1 + Compiling phf v0.14.0 + Finished `test` profile [unoptimized + debuginfo] target(s) in 26.48s + Running tests/test_default_literal_codegen.rs (/home/bailey/github/PolyXML/target/followup-entities-verification/debug/deps/test_default_literal_codegen-2692bac302c8ed5d) + +running 1 test +test generated_string_defaults_and_fixed_values_preserve_xml_characters ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.93s + diff --git a/research/data/runtime-followups-2026-10-03/default-literals/manifest.json b/research/data/runtime-followups-2026-10-03/default-literals/manifest.json new file mode 100644 index 0000000..c12a7d7 --- /dev/null +++ b/research/data/runtime-followups-2026-10-03/default-literals/manifest.json @@ -0,0 +1,58 @@ +{ + "AttrDecl.txt": { + "sha256": "d73b85834c9153f9be0ae2f621f6afedaf7826d8f264d208ff29c527e3a34a5c", + "bytes": 1784 + }, + "CType.txt": { + "sha256": "4ef9c47560aed0ef1a8b651163c5fdea14b5fe5831a1509563ef030f49b7dd2e", + "bytes": 4970 + }, + "NIST.txt": { + "sha256": "ddf82c002fd4720aafe8d74fa0d49f09619193d2a92ec23183e5dbab2fa1a709", + "bytes": 2994 + }, + "baseline-generated.py": { + "sha256": "c66125c0928585c0bd40817717fb9fb268d3d879350dc677bcb814e2fda49fdd", + "bytes": 2206 + }, + "baseline-reproduction.txt": { + "sha256": "01223a5bcb064d6c146bacce42196f6aad63b98f5a3aafcf446dea4665c3118d", + "bytes": 503 + }, + "candidate-generated.py": { + "sha256": "94fe949fe13914d18a6fc1349ec08d139d6782fda534c637508c170f8d05fbaf", + "bytes": 2224 + }, + "cli-probe.txt": { + "sha256": "eb3cae18ddf9655367a3a7a7177eb48f5bb3d6c13fddc8a497f68175122264f3", + "bytes": 427 + }, + "companion-binding.txt": { + "sha256": "5cef6fabdff12503701c85f1175e1858206e6fc7eee8ea87ba2295dc9c65750d", + "bytes": 586 + }, + "corpus-comparison.json": { + "sha256": "44bb1f5f13d114980edb6472ca71591c215c5970fcfceffd0a15bc9d1e20490a", + "bytes": 188 + }, + "focused-consumers.txt": { + "sha256": "745b26713ba7415dbb9a0c4026d66581392e5581e2f6c8fd6969178c78e25909", + "bytes": 1958 + }, + "native-probe.json": { + "sha256": "703399ffbe71231afa356a26fba5a213a53f7a26fbfc533fb2728596b344a83d", + "bytes": 202 + }, + "quality-gate-missing-target.txt": { + "sha256": "647ae9339d02fc25cd83d3de86f811e56d30fb3a86717f17cea6214ad900d65e", + "bytes": 277608 + }, + "quality-gate.txt": { + "sha256": "8789ebdb1cd87682ade6f19f917e87503eac6ede15ba84df66e04ea39a51827c", + "bytes": 37508 + }, + "seven-backend-cli-smoke.txt": { + "sha256": "93d14e4e50af92dffd64a60e9609c9d19a69a655e6d3c6a28d3ffe894e01c281", + "bytes": 1060 + } +} diff --git a/research/data/runtime-followups-2026-10-03/default-literals/native-probe.json b/research/data/runtime-followups-2026-10-03/default-literals/native-probe.json new file mode 100644 index 0000000..7eb9946 --- /dev/null +++ b/research/data/runtime-followups-2026-10-03/default-literals/native-probe.json @@ -0,0 +1,4 @@ +{ + "native_file": "/home/bailey/github/polyxml-default-literals/crates/polyxml-python/python/polyxml/_polyxml.abi3.so", + "sha256": "3fc95d99ccbeac911383f75c6bc1943fc4c51883554de37d2e1ba4332a9aad9d" +} diff --git a/research/data/runtime-followups-2026-10-03/default-literals/quality-gate-missing-target.txt b/research/data/runtime-followups-2026-10-03/default-literals/quality-gate-missing-target.txt new file mode 100644 index 0000000..b812bd7 --- /dev/null +++ b/research/data/runtime-followups-2026-10-03/default-literals/quality-gate-missing-target.txt @@ -0,0 +1,3822 @@ +memcap: <=7774 MiB (60% of 12957 MiB available) [systemd MemoryMax, swap off] +==> [1/6] Running Rust format check (cargo fmt)... +==> [2/6] Running Rust Clippy (cargo clippy -D warnings)... + Compiling unicode-ident v1.0.24 + Compiling proc-macro2 v1.0.107 + Compiling quote v1.0.47 + Compiling syn v3.0.5 + Compiling serde_core v1.0.229 + Compiling serde v1.0.229 + Checking memchr v2.8.3 + Compiling serde_derive v1.0.229 + Compiling syn v2.0.119 + Checking lexical-util v1.0.7 + Compiling zmij v1.0.23 + Compiling serde_json v1.0.151 + Checking siphasher v1.0.3 + Checking phf_shared v0.14.0 + Checking aho-corasick v1.1.5 + Checking itoa v1.0.18 + Checking regex-syntax v0.8.11 + Checking fastrand v2.5.0 + Checking regex-automata v0.4.18 + Checking lexical-parse-integer v1.0.6 + Checking lexical-write-integer v1.0.6 + Compiling thiserror v2.0.21 + Checking lexical-write-float v1.0.6 + Checking lexical-parse-float v1.0.6 + Checking regex v1.13.1 + Checking phf_generator v0.14.0 + Compiling thiserror-impl v2.0.21 + Checking memo-map v0.3.4 + Checking minijinja v2.24.0 + Checking phf_codegen v0.14.0 + Checking lexical-core v1.0.6 + Checking quick-xml v0.42.0 + Checking heck v0.5.0 + Checking smallvec v1.16.2 + Checking once_cell v1.21.4 + Compiling libc v0.2.189 + Checking polyxml v0.34.6 (/home/bailey/github/polyxml-default-literals/crates/polyxml-core) + Checking cfg-if v1.0.4 + Checking utf8parse v0.2.2 + Checking anstyle-parse v1.0.0 + Checking anstyle v1.0.14 + Checking is_terminal_polyfill v1.70.2 + Checking colorchoice v1.0.5 + Checking anstyle-query v1.1.5 + Checking anstream v1.0.0 + Checking clap_lex v1.1.0 + Checking bitflags v2.13.2 + Checking strsim v0.11.1 + Checking clap_builder v4.6.7 + Compiling clap_derive v4.6.7 + Checking clap v4.6.7 + Compiling rustix v1.1.5 + Compiling zerocopy v0.8.57 + Compiling getrandom v0.4.3 + Compiling zerocopy-derive v0.8.57 + Compiling find-msvc-tools v0.1.12 + Checking linux-raw-sys v0.12.1 + Compiling shlex v2.0.1 + Compiling cc v1.4.5 + Compiling autocfg v1.5.1 + Compiling num-traits v0.2.19 + Checking tempfile v3.27.0 + Checking half v2.7.1 + Compiling alloca v0.4.0 + Checking ciborium-io v0.2.2 + Checking either v1.18.0 + Checking itertools v0.13.0 + Checking ciborium-ll v0.2.2 + Checking cast v0.3.0 + Checking same-file v1.0.6 + Checking walkdir v2.5.0 + Checking criterion-plot v0.8.2 + Checking ciborium v0.2.2 + Compiling phf_macros v0.14.0 + Checking page_size v0.6.0 + Checking tinytemplate v1.2.1 + Checking yansi v1.0.1 + Checking diff v0.1.13 + Checking anes v0.1.6 + Checking oorandom v11.1.5 + Checking criterion v0.8.2 + Checking pretty_assertions v1.4.1 + Checking phf v0.14.0 + Compiling target-lexicon v0.13.5 + Compiling wasm-bindgen-shared v0.2.129 + Compiling pyo3-build-config v0.29.2 + Compiling rustversion v1.0.23 + Checking winnow v1.0.4 + Checking toml_parser v1.1.3+spec-1.1.0 + Compiling pyo3-ffi v0.29.2 + Checking serde_spanned v1.1.1 + Checking toml_datetime v1.1.1+spec-1.1.0 + Checking toml_writer v1.1.2+spec-1.1.0 + Checking toml v1.1.6+spec-1.1.0 + Checking glob v0.3.4 + Compiling bumpalo v3.20.3 + Compiling unicode-segmentation v1.13.3 + Compiling convert_case v0.6.0 + Compiling wasm-bindgen-macro-support v0.2.129 + Compiling wasm-bindgen v0.2.129 + Compiling pyo3 v0.29.2 + Compiling pyo3-macros-backend v0.29.2 + Compiling napi-build v2.5.0 + Compiling semver v1.0.28 + Compiling napi-derive-backend v1.0.75 + Compiling polyxml-js v0.34.6 (/home/bailey/github/polyxml-default-literals/crates/polyxml-js) + Compiling pyo3-macros v0.29.2 + Compiling wasm-bindgen-macro v0.2.129 + Checking polyxml-cli v0.34.6 (/home/bailey/github/polyxml-default-literals/crates/polyxml-cli) + Compiling ctor v0.2.9 + Checking napi-sys v2.4.0 + Checking napi v2.16.17 + Compiling napi-derive v2.16.13 + Checking polyxml-wasm v0.34.6 (/home/bailey/github/polyxml-default-literals/crates/polyxml-wasm) + Checking polyxml-python v0.34.6 (/home/bailey/github/polyxml-default-literals/crates/polyxml-python) + Checking polyxml-c v0.34.6 (/home/bailey/github/polyxml-default-literals/crates/polyxml-c) + Finished `dev` profile [unoptimized + debuginfo] target(s) in 47.51s +==> [3/6] Running Rust workspace tests (cargo test)... + Compiling unicode-ident v1.0.24 + Compiling proc-macro2 v1.0.107 + Compiling quote v1.0.47 + Compiling syn v3.0.5 + Compiling serde_core v1.0.229 + Compiling siphasher v1.0.3 + Compiling memchr v2.8.3 + Compiling regex-syntax v0.8.11 + Compiling serde_derive v1.0.229 + Compiling heck v0.5.0 + Compiling serde v1.0.229 + Compiling lexical-util v1.0.7 + Compiling syn v2.0.119 + Compiling zmij v1.0.23 + Compiling aho-corasick v1.1.5 + Compiling phf_shared v0.14.0 + Compiling cfg-if v1.0.4 + Compiling itoa v1.0.18 + Compiling fastrand v2.5.0 + Compiling serde_json v1.0.151 + Compiling regex-automata v0.4.18 + Compiling lexical-write-integer v1.0.6 + Compiling lexical-parse-integer v1.0.6 + Compiling once_cell v1.21.4 + Compiling lexical-parse-float v1.0.6 + Compiling lexical-write-float v1.0.6 + Compiling regex v1.13.1 + Compiling phf_generator v0.14.0 + Compiling thiserror-impl v2.0.21 + Compiling memo-map v0.3.4 + Compiling minijinja v2.24.0 + Compiling thiserror v2.0.21 + Compiling phf_codegen v0.14.0 + Compiling lexical-core v1.0.6 + Compiling quick-xml v0.42.0 + Compiling smallvec v1.16.2 + Compiling libc v0.2.189 + Compiling polyxml v0.34.6 (/home/bailey/github/polyxml-default-literals/crates/polyxml-core) + Compiling utf8parse v0.2.2 + Compiling anstyle-parse v1.0.0 + Compiling is_terminal_polyfill v1.70.2 + Compiling colorchoice v1.0.5 + Compiling anstyle-query v1.1.5 + Compiling anstyle v1.0.14 + Compiling anstream v1.0.0 + Compiling strsim v0.11.1 + Compiling clap_lex v1.1.0 + Compiling clap_builder v4.6.7 + Compiling clap_derive v4.6.7 + Compiling bitflags v2.13.2 + Compiling clap v4.6.7 + Compiling linux-raw-sys v0.12.1 + Compiling rustix v1.1.5 + Compiling getrandom v0.4.3 + Compiling zerocopy-derive v0.8.57 + Compiling zerocopy v0.8.57 + Compiling tempfile v3.27.0 + Compiling half v2.7.1 + Compiling ciborium-io v0.2.2 + Compiling either v1.18.0 + Compiling itertools v0.13.0 + Compiling ciborium-ll v0.2.2 + Compiling cast v0.3.0 + Compiling same-file v1.0.6 + Compiling walkdir v2.5.0 + Compiling criterion-plot v0.8.2 + Compiling num-traits v0.2.19 + Compiling alloca v0.4.0 + Compiling ciborium v0.2.2 + Compiling phf_macros v0.14.0 + Compiling page_size v0.6.0 + Compiling tinytemplate v1.2.1 + Compiling oorandom v11.1.5 + Compiling yansi v1.0.1 + Compiling anes v0.1.6 + Compiling diff v0.1.13 + Compiling pretty_assertions v1.4.1 + Compiling criterion v0.8.2 + Compiling phf v0.14.0 + Compiling winnow v1.0.4 + Compiling toml_parser v1.1.3+spec-1.1.0 + Compiling serde_spanned v1.1.1 + Compiling toml_datetime v1.1.1+spec-1.1.0 + Compiling toml_writer v1.1.2+spec-1.1.0 + Compiling toml v1.1.6+spec-1.1.0 + Compiling wasm-bindgen-shared v0.2.129 + Compiling glob v0.3.4 + Compiling wasm-bindgen-macro-support v0.2.129 + Compiling wasm-bindgen-macro v0.2.129 + Compiling polyxml-cli v0.34.6 (/home/bailey/github/polyxml-default-literals/crates/polyxml-cli) + Compiling wasm-bindgen v0.2.129 + Compiling pyo3-macros-backend v0.29.2 + Compiling polyxml-js v0.34.6 (/home/bailey/github/polyxml-default-literals/crates/polyxml-js) + Compiling napi-derive-backend v1.0.75 + Compiling pyo3-macros v0.29.2 + Compiling pyo3-ffi v0.29.2 + Compiling ctor v0.2.9 + Compiling napi-sys v2.4.0 + Compiling napi v2.16.17 + Compiling pyo3 v0.29.2 + Compiling napi-derive v2.16.13 + Compiling polyxml-wasm v0.34.6 (/home/bailey/github/polyxml-default-literals/crates/polyxml-wasm) + Compiling polyxml-python v0.34.6 (/home/bailey/github/polyxml-default-literals/crates/polyxml-python) + Compiling polyxml-c v0.34.6 (/home/bailey/github/polyxml-default-literals/crates/polyxml-c) + Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 20s + Running unittests src/lib.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/polyxml-675b717e531d04ed) + +running 16 tests +test integer::tests::comparison_uses_sign_and_magnitude ... ok +test ir::root_selection_tests::inherited_base_does_not_select_sibling_types ... ok +test ir::chunker::tests::test_topological_scc_chunking_dag_invariants ... ok +test ir::root_selection_tests::keeps_references_descendants_and_substitutions ... ok +test ir::root_selection_tests::rejects_missing_and_ambiguous_roots ... ok +test json::tests::test_json_deserialization_accepts_python_field_names ... ok +test json::tests::test_json_roundtrip_primitives ... ok +test tests::test_deserialization_does_not_confuse_xmlns_with_attributes ... ok +test tests::test_namespaced_serialization ... ok +test tests::test_roundtrip_serialization_deserialization ... ok +test ir::root_selection_tests::field_reference_keeps_substitution_group_members ... ok +test tests::test_streaming_xml_item_stream ... ok +test tests::test_nested_elements_and_lists ... ok +test pattern::tests::bounded_cache_evicts_and_retains_invalid_results ... ok +test pattern::tests::cache_matches_uncached_regex_under_churn_and_concurrency ... ok +test pattern::tests::cyclic_working_set_above_capacity_keeps_reusing_entries ... ok + +test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s + + Running tests/test_adversarial_identifiers.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_adversarial_identifiers-34056256ccaa17cb) + +running 7 tests +test test_rust_adversarial_compilation ... ok +test test_python_adversarial_compilation ... ok +test test_go_adversarial_compilation ... ok +test test_cpp_adversarial_compilation ... ok +test test_java_adversarial_compilation ... ok +test test_typescript_adversarial_compilation ... ok +test test_csharp_adversarial_compilation ... ok + +test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.36s + + Running tests/test_any_attribute.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_any_attribute-d5795d9c5e0fdefd) + +running 1 test +test test_any_attribute_schema_parser_and_runtime_roundtrip ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/test_any_element.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_any_element-1fb225d6616938e8) + +running 2 tests +test test_any_element_schema_parser_and_runtime_roundtrip ... ok +test test_any_element_go_codegen ... ok + +test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/test_conformance.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_conformance-0b37810d65fedfce) + +running 4 tests +test test_soap_envelope_conformance ... ok +test test_ubl_invoice_conformance ... ok +test test_atom_feed_conformance ... ok +test test_streaming_catalog_conformance ... ok + +test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s + + Running tests/test_core.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_core-f4cc1079f88df2bc) + +running 9 tests +test integer_mappings_keep_fixed_width_builtins ... ok +test test_gregorian_partial_date_lexical_validation ... ok +test test_malformed_xml_syntax_error ... ok +test test_error_handling_invalid_scalars ... ok +test test_all_scalar_types ... ok +test test_xsi_nil_handling ... ok +test test_roundtrip_serialization_with_indentation ... ok +test unbounded_integers_round_trip_and_compare_exact_bounds ... ok +test test_xsd_gregorian_fields_round_trip_and_reject_invalid_dates ... ok + +test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/test_cpp_codegen.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_cpp_codegen-a4cd5571504c64d5) + +running 14 tests +test test_cpp_cmake_modules_file_set ... ok +test test_cpp_cmake_and_meson_generation ... ok +test simple_aliases_follow_their_base_types ... ok +test test_cpp_glaze_backend_meta_generation ... ok +test test_cpp_mode_and_backend_from_str_loose ... ok +test test_cpp_sanitization ... ok +test mixed_content_self_cycle_compiles ... ok +test mixed_content_mutual_cycle_compiles ... ok +Inheritance test passed. +test test_cpp_inheritance_codegen ... ok +Recursive tree unique_ptr passed. +test test_cpp_recursive_cycle_unique_ptr ... ok +Choice pattern matching passed. +test test_cpp_choice_variant_compilation ... ok +All C++20 tests passed successfully. +test test_cpp_struct_and_enum_codegen_compilation ... ok +test test_cpp_modules_compilation ... ok +ISO 20022 pacs.008 C++20 test passed. +test test_cpp_from_xsd_schema ... ok + +test result: ok. 14 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.86s + + Running tests/test_csharp_codegen.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_csharp_codegen-cf32febf6e7f0777) + +running 20 tests +test choice_variants_avoid_record_member_names ... ok +test emits_unrestricted_simple_types_and_validates_empty_records ... ok +test test_csharp_any_attribute_codegen ... ok +test test_csharp_date_or_datetime_lexical_union ... ok +test test_csharp_record_kind_from_str_loose ... ok +test test_csharp_sanitization ... ok +test test_csharp_sequence_nested_inside_choice_codegen ... ok +test test_csharp_source_gen_context ... ok + Determining projects to restore... + Restored /tmp/.tmpX3tt8X/PaymentsApp.csproj (in 197 ms). + PaymentsApp -> /tmp/.tmpX3tt8X/bin/Debug/net8.0/PaymentsApp.dll + +Build succeeded. + 0 Warning(s) + 0 Error(s) + +Time Elapsed 00:00:01.25 +Choice pattern matching and XML serialization passed! +test test_csharp_choice_polymorphic_hierarchy ... ok +test unbounded_integer_xml_preserves_digits ... ok +test test_csharp_mutable_inheritance_roundtrip ... ok + Determining projects to restore... + Restored /tmp/.tmpGRg3NP/TreeApp.csproj (in 170 ms). + TreeApp -> /tmp/.tmpGRg3NP/bin/Debug/net8.0/TreeApp.dll + +Build succeeded. + 0 Warning(s) + 0 Error(s) + +Time Elapsed 00:00:01.03 +Recursive tree C# tests passed cleanly! +test test_csharp_recursive_cycle ... ok + Determining projects to restore... + Restored /tmp/.tmpJhLSyK/CrmApp.csproj (in 168 ms). + CrmApp -> /tmp/.tmpJhLSyK/bin/Debug/net8.0/CrmApp.dll + +Build succeeded. + 0 Warning(s) + 0 Error(s) + +Time Elapsed 00:00:01.04 +Customer C# tests passed cleanly! +test test_csharp_records_and_enums_generation ... ok +test test_csharp_mutable_wrappers_and_choices_without_validation ... ok +test test_csharp_simple_content_class_validator_and_unsealed_records ... ok +test lexical_union_attributes_round_trip ... ok +test element_defaults_preserve_absence_and_empty_presence ... ok +test fixed_values_are_enforced_on_read_and_write ... ok +test nillable_enum_collection_round_trips ... ok +test particle_wire_structure_round_trips ... ok + +test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 51.04s + + Running tests/test_default_literal_codegen.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_default_literal_codegen-4c3562e7020c30db) + +running 1 test +test generated_string_defaults_and_fixed_values_preserve_xml_characters ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.96s + + Running tests/test_enum_literal_codegen.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_enum_literal_codegen-0c92c71c8d4587d6) + +running 1 test +test enum_literals_compile_and_preserve_values_in_all_seven_languages ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 27.06s + + Running tests/test_go_codegen.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_go_codegen-005c45ed4341be87) + +running 25 tests +test root_alias_names_are_unique_after_go_normalization ... ok +test referenced_element_uses_declared_type_after_includes ... ok +test test_go_any_attribute_codegen ... ok +test test_go_backend_from_str_loose ... ok +go: creating new go.mod: module payments +go: to add module requirements and sums: + go mod tidy +test imported_ordered_types_do_not_add_unused_bytes_import ... ok +test test_go_date_or_datetime_lexical_union ... ok +test test_go_easyjson_backend ... ok +test test_go_enum_only_schema_omits_unused_xml_import ... ok +test repeated_choice_branch_rejects_mixed_and_empty_selections ... ok +go: creating new go.mod: module tree +go: to add module requirements and sums: + go mod tidy +test nested_lexical_unions_compile_and_round_trip_in_go ... ok +test test_go_sanitization ... ok +test test_go_sonic_backend ... ok +go: creating new go.mod: module crm +go: to add module requirements and sums: + go mod tidy +test abstract_substitution_heads_are_rejected ... ok +test test_go_abstract_xsi_type_dispatch ... ok +test roots_and_union_attributes_round_trip ... ok +test separate_choices_enforce_each_group ... ok +=== RUN TestChoiceMutualExclusivity + payments_test.go:44: Correctly rejected concurrent choice branches: choice ContactChoice mutual exclusivity violation: multiple branches populated (2) +--- PASS: TestChoiceMutualExclusivity (0.00s) +PASS +ok payments 0.004s +test duplicate_choice_names_reject_invalid_branch_shapes ... ok +test test_go_choice_mutual_exclusivity ... ok +test temporal_scalars_preserve_xsd_lexical_values ... ok +test repeated_sequence_groups_enforce_bounds_and_order ... ok +test test_go_namespaced_element_ref_matching ... ok +=== RUN TestRecursiveTree +--- PASS: TestRecursiveTree (0.00s) +PASS +ok tree 0.002s +test test_go_recursive_cycle_pointers ... ok +=== RUN TestCustomerRoundtrip +--- PASS: TestCustomerRoundtrip (0.00s) +PASS +ok crm 0.002s +test test_go_struct_and_enum_generation ... ok +test unbounded_integer_xml_preserves_digits ... ok +test ordered_particles_and_choice_branches_round_trip ... ok + +test result: ok. 25 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.03s + + Running tests/test_java_codegen.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_java_codegen-a6078e165fc64681) + +running 17 tests +test test_java_jackson_backend_enum_annotations ... ok +test test_java_identifier_sanitization ... ok +test test_java_jackson_backend_from_str_loose ... ok +test test_java_jackson_backend_simple_type_annotations ... ok +test test_direct_codec_rejects_wildcards_and_name_collisions ... ok +test test_java_jackson_backend_struct_annotations ... ok +test test_java_jackson_backend_union_annotations ... ok +test test_java_bean_validation_annotations_are_opt_in ... ok +test test_java_plain_record_inlines_base_fields ... ok +test jackson3_preserves_core_annotations_and_maps_record_text ... ok +test test_java_sealed_interface_choice ... ok +test test_java_module_container_class ... ok +test test_java_records_and_enums_generation ... ok +test test_java_plain_record_extension_javac_execute ... ok +test test_java_record_builder_and_nested_codec_execute ... ok +test test_java_mutable_builders_and_direct_codecs_execute ... ok +test test_java_direct_nil_lists_choices_and_namespaces ... ok + +test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.46s + + Running tests/test_json.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_json-74440efee0e911e7) + +running 4 tests +test test_json_scalar_coercion ... ok +test test_json_nested_objects_and_lists ... ok +test test_json_primitives_and_alias_modes ... ok +test test_polyvalue_direct_json_methods ... ok + +test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/test_lexical_lists.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_lexical_lists-0f6750d9c4bf9a3c) + +running 2 tests +test named_list_items_enforce_facets_and_enumerations ... ok +test typed_lexical_lists_round_trip_across_codecs ... ok + +test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.31s + + Running tests/test_lexical_union_codegen.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_lexical_union_codegen-3c208893561d2732) + +running 2 tests +test lexical_union_xml_selects_first_valid_member_and_round_trips ... ok +test lexical_unions_are_typed_in_all_targets ... ok + +test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/test_mixed_content.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_mixed_content-1a697ad935ae2797) + +running 5 tests +test mixed_items_field_avoids_existing_attribute_name ... ok +test parser_builds_ordered_mixed_content_union ... ok +test mixed_content_preserves_nested_child_order ... ok +test mixed_content_preserves_text_and_child_order ... ok +test generated_models_keep_typed_content_items_in_all_targets ... ok + +test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/test_pattern_codegen.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_pattern_codegen-5eee5f9fe2ed3d1a) + +running 9 tests +test generated_typescript_pattern_validation_all_backends ... ok +test pattern_restrictions_preserve_or_groups_and_inherited_and_steps ... ok +test gregorian_primitives_emit_validated_types_across_targets ... ok +test generated_python_pattern_validation ... ok +test generated_go_pattern_validation_and_xml_roundtrip ... ok +test generated_java_pattern_validation_and_direct_codecs ... ok +test generated_cpp_pattern_validation ... ok +test generated_csharp_pattern_validation ... ok +test generated_rust_pattern_validation_and_xml_roundtrip ... ok + +test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 24.63s + + Running tests/test_python_codegen.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_python_codegen-cc734e908fb39fb6) + +running 16 tests +test test_identifier_sanitization ... ok +test multiline_xsd_documentation_stays_inside_python_comments ... ok +test test_python_any_attribute_codegen ... ok +test test_python_abstract_meta_emission ... ok +test test_python_any_element_codegen ... ok +test test_python_codecs_generation ... ok +test test_python_choice_union_codegen ... ok +test test_python_aot_codegen ... ok +test test_python_dataclass_codegen ... ok +test test_python_generated_tag_and_custom_header ... ok +test test_python_pydantic_codegen_with_facets ... ok +test test_python_recursive_type_codegen ... ok +test test_python_derived_meta_inheritance ... ok +test test_python_simplecontent_default_factory ... ok +test test_python_sequence_nested_inside_choice_codegen ... ok +test quoted_docstrings_preserve_text_and_remain_valid_python ... ok + +test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s + + Running tests/test_qualified_attributes.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_qualified_attributes-f8397a31cf1ecf15) + +running 5 tests +test global_attribute_references_round_trip_by_namespace ... ok +test imported_inline_global_attribute_enum_round_trips ... ok +test derived_validators_preserve_base_constraints ... ok +test inherited_attribute_and_distinct_element_keep_separate_property_names ... ok +test lexical_dependencies_compile_and_round_trip_without_implicit_imports ... ok + +test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.31s + + Running tests/test_runtime_fast_paths.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_runtime_fast_paths-7bf9091b7252b7db) + +running 6 tests +test repeated_lexical_lists_keep_whitespace_validation ... ok +test lexical_list_formatting_preserves_escaping_empty_lists_and_long_numbers ... ok +test repeated_nested_records_validate_their_own_lexical_lists ... ok +test indexed_scalar_state_preserves_enum_pattern_and_split_text ... ok +test cached_patterns_keep_raw_restriction_and_trimmed_pattern_semantics ... ok +test unified_scalar_state_keeps_mixed_branch_order_nil_and_nested_frames ... ok + +test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/test_rust_codecs.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_rust_codecs-9692e165bd5e14bf) + +running 4 tests +test test_facet_validation_min_max_length ... ok +test test_empty_element_codec ... ok +test test_recursive_boxing_roundtrip ... ok +test test_order_choice_roundtrip ... ok + +test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/test_rust_codegen.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_rust_codegen-8bce8b4b67c7eca3) + +running 26 tests +test test_rust_attribute_codec_loop_syntax ... ok +test multiline_docs_and_raw_field_names_are_valid_source ... ok +test test_rust_enum_and_methods ... ok +test test_rust_digit_prefixed_module_sanitization ... ok +test test_rust_choice_union_codegen ... ok +test test_rust_identifier_sanitization ... ok +test test_rust_codecs_codegen ... ok +test test_rust_extension_base_cycle_cut ... ok +test test_rust_phf_dispatch_uniquifies_like_field_metas ... ok +test test_rust_phf_dispatch_union_groups_branch_tags ... ok +test test_rust_extension_inlines_base_fields ... ok +test test_rust_owned_codegen ... ok +test test_rust_extension_codecs_decode_and_encode_base_fields ... ok +test test_rust_recursive_cycle_boxing ... ok +test test_rust_rkyv_derives ... ok +test test_rust_simple_type_cycle_resilience ... ok +test test_rust_topological_scc_chunking ... ok +test test_rust_zero_copy_codegen ... ok +test test_rust_phf_dispatch_emission ... ok +test test_rust_simple_content_extension_shadow_rule ... ok +test test_rust_simple_content_text_codec ... ok +test test_rust_read_element_text_accumulates_refs_and_cdata ... ok +test duplicate_wire_names_keep_distinct_json_values ... ok +test binary_lexical_values_compile_and_round_trip_in_owned_and_borrowed_modes ... ok +test empty_modules_compile_without_unused_reexports ... ok +test named_choice_wrappers_round_trip_without_unreachable_dispatch ... ok + +test result: ok. 26 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 59.80s + + Running tests/test_schema_attribute_entities.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_schema_attribute_entities-ce76904e09cb1816) + +running 4 tests +test malformed_attributes_and_undefined_entities_are_errors_even_in_skipped_content ... ok +test literal_attribute_whitespace_is_normalized_but_character_references_survive ... ok +test namespace_and_qname_attributes_are_normalized_consistently ... ok +test attribute_entities_reach_enum_facets_and_defaults_in_value_space ... ok + +test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/test_schema_audit.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_schema_audit-24992dfb5b4a626c) + +running 13 tests +test derived_simple_type_inherits_base_patterns ... ok +test distinct_values_with_colliding_variant_names_stay_unique ... ok +test duplicate_enumeration_values_are_deduped ... ok +test all_languages_disambiguate_flat_collision ... ok +test quick_xml_serde_skips_unknown_elements ... ok +test generated_rust_has_no_deny_unknown_fields ... ok +test named_group_reference_fields_are_parsed ... ok +test chameleon_include_adopts_including_namespace_per_includer ... ok +test restricted_simple_types_emit_named_aliases ... ok +test nested_inline_complex_type_is_extracted_not_leaked ... ok +test rust_flat_output_has_no_colliding_type_names ... ok +test simple_content_extension_emits_value_field ... ok +test diamond_includes_do_not_duplicate_upa_source_documents ... ok + +test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s + + Running tests/test_schema_ir.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_schema_ir-f793c1b9895343c7) + +running 20 tests +test global_attribute_reference_uses_declared_type ... ok +test consumed_particles_do_not_swallow_following_declarations ... ok +test test_language_context_adapter ... ok +test inline_list_item_types_preserve_enum_and_union_declarations ... ok +test test_list_fields_do_not_trigger_spurious_cycles ... ok +test derived_complex_type_keeps_base_and_bounded_choice ... ok +test schema_errors_preserve_forward_imports_and_annotation_payloads ... ok +test missing_included_schema_is_an_error ... ok +test consumed_child_subtrees_do_not_swallow_following_types ... ok +test test_tarjan_mutual_recursive_cycle_detection_and_boxing ... ok +test test_tarjan_self_recursive_cycle_detection_and_boxing ... ok +test test_parse_lexical_union_member_types_and_inline_members ... ok +test test_substitution_groups ... ok +test schema_for_schemas_declared_types_are_not_unknown_builtins ... ok +test test_minijinja_template_engine_and_filters ... ok +test xml_prefix_is_available_without_explicit_declaration ... ok +test test_parse_complex_type_and_facets ... ok +test imported_inline_global_attribute_types_are_resolved ... ok +test test_sequence_nested_inside_choice_preserved_in_ir ... ok +test test_parse_choice_as_union ... ok + +test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/test_security.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_security-c3afa670f1d6c619) + +running 6 tests +test test_cdata_section_handling ... ok +test test_malformed_unclosed_cdata_rejection ... ok +test test_xml_entity_roundtrip_escaping ... ok +test test_numeric_character_references ... ok +test unsupported_general_entities_are_rejected ... ok +test test_max_depth_recursion_limit ... ok + +test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/test_temporal_union.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_temporal_union-e25d1f9b83e2fdc4) + +running 2 tests +test go_temporal_union_preserves_branches_and_lexicals ... ok +test csharp_temporal_union_preserves_branches_and_lexicals ... ok + +test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.07s + + Running tests/test_transcoder.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_transcoder-6854114408316a2e) + +running 6 tests +test test_schemaless_pretty_transcoding ... ok +test test_schemaless_preserves_refs_cdata_and_attr_entities ... ok +test test_transcoder_errors ... ok +test test_schemaless_xml_to_json_and_back ... ok +test test_schema_directed_transcoding ... ok +test test_schema_from_ir_transcoding ... ok + +test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/test_ts_codegen.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_ts_codegen-4e67290c9758f4d9) + +running 9 tests +test test_ts_backend_from_str_loose ... ok +test test_ts_identifier_sanitization ... ok +test test_ts_recursive_cycle_zod_lazy ... ok +test test_ts_discriminated_union_choice ... ok +test test_ts_interface_and_enum_codegen ... ok +test test_ts_typebox_schema_generation ... ok +test test_ts_valibot_schema_generation ... ok +test test_ts_zod_schema_generation ... ok +test mixed_content_inheritance_compiles_with_widened_items ... ok + +test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.31s + + Running tests/test_ubl_csharp.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_ubl_csharp-b04bc8d2d5f891c2) + +running 2 tests +test unprefixed_xsd_builtin_simple_content_base_uses_default_namespace ... ok +test multi_namespace_roots_and_inherited_simple_content_compile_and_round_trip ... ok + +test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.07s + + Running tests/test_unbounded_choice.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_unbounded_choice-7672e62aa5ecca1a) + +running 1 test +go: creating new go.mod: module testmod +go: to add module requirements and sums: + go mod tidy +=== RUN TestUnboundedChoiceOrder +--- PASS: TestUnboundedChoiceOrder (0.00s) +PASS +ok testmod 0.002s +test test_unbounded_choice_ir_and_all_targets ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s + + Running tests/test_upa.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_upa-a20019d257c7eac5) + +running 6 tests +test local_form_and_in_scope_qnames_distinguish_namespaces ... ok +test model_groups_derivation_and_substitution_members_are_checked ... ok +test imported_groups_and_chameleon_wildcards_keep_source_namespaces ... ok +test all_groups_and_wildcard_namespaces_are_checked ... ok +test optional_siblings_and_choice_lookahead_violate_upa ... ok +test occurrence_ranges_keep_particle_identity_and_count_boundaries ... ok + +test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/test_value_constraints.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_value_constraints-73eb81a96de588c1) + +running 2 tests +test fixed_constraints_cover_input_and_output_in_value_space ... ok +test repeated_particle_cardinality_belongs_to_the_group ... ok + +test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/test_xsi_type.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_xsi_type-2c07a0776bd0ec60) + +running 11 tests +test abstract_type_without_derivations_errors ... ok +test plain_type_attribute_is_not_mistaken_for_dispatch ... ok +test abstract_type_requires_concrete_selector ... ok +test from_ir_flattens_base_fields_and_registers_variants ... ok +test nil_abstract_complex_type_skips_concrete_dispatch ... ok +test iterparse_dispatches_each_streamed_item ... ok +test xsi_type_resolves_namespace_inherited_from_parent ... ok +test unknown_xsi_type_on_abstract_type_errors ... ok +test root_xsi_type_dispatch_including_empty_element ... ok +test nested_xsi_type_dispatch_and_round_trip ... ok +test variant_serialization_requires_namespaces ... ok + +test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/lib.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/polyxml-4ccc220bbd6a27a0) + +running 2 tests +test tests::test_c_abi_nested_list_batch_roundtrip ... ok +test tests::test_c_abi_namespaced_roundtrip ... ok + +test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/lib.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/polyxml_cli-dabf613ae4318f1b) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/main.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/polyxml-cec02944de7101b9) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/test_cli.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_cli-714ccf0c30d96734) + +running 47 tests +test fish_completion_filters_values_when_available ... ok +Loading manifest: /tmp/.tmpoNUbH1/polyxml.toml +Compiling schema: /tmp/.tmpoNUbH1/model.xsd +test manifest_generation_does_not_ignore_cli_overrides ... ok + Namespace: urn:app + Types: 1 total (1 structs, 0 enums, 0 unions, 0 simple restrictions) + Root elements: 0 +Emitting target [csharp] into /tmp/.tmpoNUbH1/cs +Parsing schema: /tmp/.tmpiAx8Ek/customer.xsd +Emitting target [ts] into /tmp/.tmpoNUbH1/ts +Emitting target [go] into /tmp/.tmpoNUbH1/go +Emitting target [rust] into /tmp/.tmpoNUbH1/rs +Build finished successfully. + Namespace: urn:crm + Types: 1 total (1 structs, 0 enums, 0 unions, 0 simple restrictions) + Root elements: 0 +Code generation complete. +test test_cli_build_polyxml_manifest_with_new_features ... ok +test test_cli_csharp_source_gen_and_record_struct ... ok +test test_cli_cpp_modules_and_glaze ... ok +test test_cli_generate_dry_run ... ok +test test_cli_generate_custom_header_and_generated_tags ... ok +test jackson3_cli_and_manifest_emit_equivalent_models ... ok +test python_features_respect_manifest_false_values_and_backend ... ok +test test_cli_generate_multi_lang ... ok +test imported_substitution_helpers_do_not_require_spurious_module_owners ... ok +test test_cli_generate_help ... ok +Parsing schema: /tmp/.tmpSaODqQ/service.xsd + Namespace: urn:service + Types: 1 total (1 structs, 0 enums, 0 unions, 0 simple restrictions) + Root elements: 0 +Code generation complete. +Parsing schema: /tmp/.tmpSaODqQ/service.xsd +test test_cli_generate_python_backends ... ok + Namespace: urn:service + Types: 1 total (1 structs, 0 enums, 0 unions, 0 simple restrictions) + Root elements: 0 +Code generation complete. +test test_cli_help ... ok +test test_cli_go_easyjson_and_sonic_backend ... ok +Loading manifest: /tmp/.tmpKarvgd/polyxml.toml +Compiling schema: /tmp/.tmpKarvgd/schema.xsd + Types: 1 total (1 structs, 0 enums, 0 unions, 0 simple restrictions) + Root elements: 0 +Emitting target [rust] into /tmp/.tmpKarvgd/rs +test test_cli_generate_rust_zero_copy_and_owned ... ok +Emitting target [go] into /tmp/.tmpKarvgd/go +Emitting target [csharp] into /tmp/.tmpKarvgd/cs +Build finished successfully. +test retained_imported_ordered_helpers_belong_to_the_unique_namespace_module ... ok +test test_cli_manifest_custom_header_workspace_and_target_override ... ok +test test_cli_python_aot_generation ... ok +Parsing schema: /tmp/.tmp7RSljQ/event.xsd + Namespace: urn:events + Types: 1 total (1 structs, 0 enums, 0 unions, 0 simple restrictions) + Root elements: 0 +Code generation complete. +test test_cli_rust_phf_feature ... ok +go: creating new go.mod: module crm +test completion_candidates_follow_target_validation ... ok +test test_cli_python_aot_rejects_dataclass_style_and_slots ... ok +go: to add module requirements and sums: + go mod tidy +test test_cli_multiple_root_element_selection ... ok +Parsing schema: /tmp/.tmpadBDgK/event.xsd +test invalid_schema_grammar_and_types_fail_before_generation ... ok + Namespace: urn:events + Types: 1 total (1 structs, 0 enums, 0 unions, 0 simple restrictions) + Root elements: 0 +Code generation complete. +test test_cli_rust_rkyv_feature ... ok +Parsing schema: /tmp/.tmppbNjuC/item.xsd +test test_cli_transcode_bidirectional ... ok + Namespace: urn:store + Types: 1 total (1 structs, 0 enums, 0 unions, 0 simple restrictions) + Root elements: 0 +Code generation complete. +Parsing schema: /tmp/.tmppbNjuC/item.xsd + Namespace: urn:store + Types: 1 total (1 structs, 0 enums, 0 unions, 0 simple restrictions) + Root elements: 0 +Code generation complete. +test test_cli_typescript_valibot_and_typebox_backend ... ok +test test_cli_validate_valid_and_invalid ... ok +test test_polyxml_toml_manifest_build ... ok +test bash_completion_filters_values_in_the_shell ... ok +test unified_help_shows_generation_options ... ok +test test_cli_root_element_selection ... ok +test test_root_selection_keeps_imported_module_types ... ok +test test_java_csharp_model_style_options_and_manifest ... ok +test validate_and_generate_reject_upa_violations ... ok +test zsh_completion_filters_values_when_available ... ok +test unified_manifest_forms_generate_identical_output_and_validate_early ... ok +test unsupported_xsd_alternatives_fail_explicitly ... ok +test unified_options_fail_before_schema_io_including_dry_run ... ok +test unified_supported_backends_and_styles_validate ... ok +=== RUN TestAccountE2E +--- PASS: TestAccountE2E (0.00s) +PASS +ok crm 0.004s +test test_cli_go_generation ... ok +E2E C++20 driver passed! +test test_cli_cpp_generation ... ok +test test_cli_java_generation ... ok +test test_cli_shared_modules_deduplication ... ok + Determining projects to restore... + Restored /tmp/.tmppl9ein/cli_csharp_app/CrmCliApp.csproj (in 224 ms). +test test_cli_typescript_generation ... ok + CrmCliApp -> /tmp/.tmppl9ein/cli_csharp_app/bin/Debug/net8.0/CrmCliApp.dll + +Build succeeded. + 0 Warning(s) + 0 Error(s) + +Time Elapsed 00:00:01.49 +E2E C# CLI test passed successfully! +test test_cli_csharp_generation ... ok +test test_cli_rust_split_units_and_chunking ... ok + +test result: ok. 47 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 9.62s + + Running unittests src/lib.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/polyxml_js-878a75d7b7901cc9) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/lib.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/_polyxml-a668b0910babaf29) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/lib.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/polyxml_wasm-d510c7f48918b595) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests polyxml + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests polyxml_cli + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests polyxml_wasm + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + +==> [4/6] Compiling Python PyO3 extension (maturin develop)... +๐Ÿน Building a mixed python/rust project +๐Ÿ Found CPython 3.14 at /home/bailey/github/polyxml-default-literals/.venv/bin/python +๐Ÿ”— Found pyo3 bindings with abi3-py3.12 support +๐Ÿ“ก Using build options features from pyproject.toml +Using Python 3.14.4 environment at: /home/bailey/github/polyxml-default-literals/.venv +Checked 6 packages in 34ms + Compiling syn v3.0.5 + Compiling serde_core v1.0.229 + Compiling serde_derive v1.0.229 + Compiling serde v1.0.229 + Compiling pyo3-ffi v0.29.2 + Compiling syn v2.0.119 + Compiling fastrand v2.5.0 + Compiling phf_generator v0.14.0 + Compiling pyo3-macros-backend v0.29.2 + Compiling thiserror-impl v2.0.21 + Compiling minijinja v2.24.0 + Compiling serde_json v1.0.151 + Compiling thiserror v2.0.21 + Compiling pyo3 v0.29.2 + Compiling pyo3-macros v0.29.2 + Compiling phf_codegen v0.14.0 + Compiling quick-xml v0.42.0 + Compiling polyxml v0.34.6 (/home/bailey/github/polyxml-default-literals/crates/polyxml-core) + Compiling polyxml-python v0.34.6 (/home/bailey/github/polyxml-default-literals/crates/polyxml-python) + Finished `dev` profile [unoptimized + debuginfo] target(s) in 24.55s +๐Ÿ“ฆ Built wheel for abi3 Python โ‰ฅ 3.12 to /tmp/.tmpp6ZXi1/polyxml-0.34.6-cp312-abi3-linux_x86_64.whl +โœ๏ธ Setting installed package as editable +๐Ÿ›  Installed polyxml-0.34.6 +==> [5/6] Running Python Ruff checks... +All checks passed! +10 files already formatted +==> [6/6] Running Python tests with 100% statement & branch coverage... +....FFFFFFFFFFFFFEEEEEFFFFFFFFFFFFFFFFFFFFFFF........................... [ 64%] +........................................ [100%] +==================================== ERRORS ==================================== +____________ ERROR at setup of test_declared_root_models[dataclass] ____________ + + @pytest.fixture(scope="module") + def generated_models(): +  """Generates both Dataclass and Pydantic models from SAMPLE_XSD using polyxml CLI, +  verifying ruff and pyright compliance.""" +> polyxml_bin = _get_polyxml_bin() + ^^^^^^^^^^^^^^^^^^ + +tests/test_generated_models.py:295: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +____________ ERROR at setup of test_declared_root_models[pydantic] _____________ + + @pytest.fixture(scope="module") + def generated_models(): +  """Generates both Dataclass and Pydantic models from SAMPLE_XSD using polyxml CLI, +  verifying ruff and pyright compliance.""" +> polyxml_bin = _get_polyxml_bin() + ^^^^^^^^^^^^^^^^^^ + +tests/test_generated_models.py:295: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +_ ERROR at setup of test_generated_dataclass_deserialization_and_serialization _ + + @pytest.fixture(scope="module") + def generated_models(): +  """Generates both Dataclass and Pydantic models from SAMPLE_XSD using polyxml CLI, +  verifying ruff and pyright compliance.""" +> polyxml_bin = _get_polyxml_bin() + ^^^^^^^^^^^^^^^^^^ + +tests/test_generated_models.py:295: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +_ ERROR at setup of test_generated_pydantic_deserialization_and_serialization __ + + @pytest.fixture(scope="module") + def generated_models(): +  """Generates both Dataclass and Pydantic models from SAMPLE_XSD using polyxml CLI, +  verifying ruff and pyright compliance.""" +> polyxml_bin = _get_polyxml_bin() + ^^^^^^^^^^^^^^^^^^ + +tests/test_generated_models.py:295: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +______________ ERROR at setup of test_generated_dataclass_codecs _______________ + + @pytest.fixture(scope="module") + def generated_models(): +  """Generates both Dataclass and Pydantic models from SAMPLE_XSD using polyxml CLI, +  verifying ruff and pyright compliance.""" +> polyxml_bin = _get_polyxml_bin() + ^^^^^^^^^^^^^^^^^^ + +tests/test_generated_models.py:295: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +=================================== FAILURES =================================== +______ test_generated_abstract_root_preserves_derived_payload[dataclass] _______ + +tmp_path = PosixPath('/tmp/pytest-of-bailey/pytest-14/test_generated_abstract_root_p0') +backend = 'dataclass' + + @pytest.mark.parametrize("backend", ["dataclass", "pydantic"]) + def test_generated_abstract_root_preserves_derived_payload(tmp_path, backend): + schema = ( + pathlib.Path(__file__).resolve().parents[3] + / "research/fixtures/wave6/abstract_derived_xsi.xsd" + ) + subprocess.run( + [ +> str(_get_polyxml_bin()), + ^^^^^^^^^^^^^^^^^^ + "generate", + str(schema), + "--lang", + "python", + "--backend", + backend, + "--out", + str(tmp_path), + ], + check=True, + capture_output=True, + ) + +tests/test_generated_models.py:23: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +_______ test_generated_abstract_root_preserves_derived_payload[pydantic] _______ + +tmp_path = PosixPath('/tmp/pytest-of-bailey/pytest-14/test_generated_abstract_root_p1') +backend = 'pydantic' + + @pytest.mark.parametrize("backend", ["dataclass", "pydantic"]) + def test_generated_abstract_root_preserves_derived_payload(tmp_path, backend): + schema = ( + pathlib.Path(__file__).resolve().parents[3] + / "research/fixtures/wave6/abstract_derived_xsi.xsd" + ) + subprocess.run( + [ +> str(_get_polyxml_bin()), + ^^^^^^^^^^^^^^^^^^ + "generate", + str(schema), + "--lang", + "python", + "--backend", + backend, + "--out", + str(tmp_path), + ], + check=True, + capture_output=True, + ) + +tests/test_generated_models.py:23: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +__________ test_roots_with_the_same_local_name_in_distinct_namespaces __________ + +tmp_path = PosixPath('/tmp/pytest-of-bailey/pytest-14/test_roots_with_the_same_local0') + + def test_roots_with_the_same_local_name_in_distinct_namespaces(tmp_path): + base = tmp_path / "base.xsd" + base.write_text( + '' + ) + main = tmp_path / "main.xsd" + main.write_text( + '' + ) + out = tmp_path / "models" + subprocess.run( +> [str(_get_polyxml_bin()), "generate", str(main), "--lang", "python", "--out", str(out)], + ^^^^^^^^^^^^^^^^^^ + check=True, + capture_output=True, + ) + +tests/test_generated_models.py:64: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +_ test_particle_codec_regressions[nested_sequence_choice.xsd-Root-documents0-dataclass] _ + +tmp_path = PosixPath('/tmp/pytest-of-bailey/pytest-14/test_particle_codec_regression0') +backend = 'dataclass', fixture = 'nested_sequence_choice.xsd' +root_name = 'Root' +documents = ['AB', 'C'] + + @pytest.mark.parametrize("backend", ["dataclass", "pydantic"]) + @pytest.mark.parametrize( + ("fixture", "root_name", "documents"), + [ + ( + "nested_sequence_choice.xsd", + "Root", + [ + "AB", + "C", + ], + ), + ( + "repeated_sequence.xsd", + "Root", + [ + "A1B1A2B2", + "", + ], + ), + ( + "substitution_group.xsd", + "Portfolio", + [ + "A1B1A2" + ], + ), + ( + "choice_branch_cardinality.xsd", + "Root", + [ + "A1A2", + "B", + ], + ), + ( + "wave6/duplicate_choice_branch_name.xsd", + "Person", + [ + "1825", + "25", + "", + ], + ), + ], + ) + def test_particle_codec_regressions(tmp_path, backend, fixture, root_name, documents): + schema = pathlib.Path(__file__).resolve().parents[3] / "research" / "fixtures" / fixture + subprocess.run( + [ +> str(_get_polyxml_bin()), + ^^^^^^^^^^^^^^^^^^ + "generate", + str(schema), + "--lang", + "python", + "--backend", + backend, + "--out", + str(tmp_path), + ], + check=True, + capture_output=True, + ) + +tests/test_generated_models.py:126: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +_ test_particle_codec_regressions[nested_sequence_choice.xsd-Root-documents0-pydantic] _ + +tmp_path = PosixPath('/tmp/pytest-of-bailey/pytest-14/test_particle_codec_regression1') +backend = 'pydantic', fixture = 'nested_sequence_choice.xsd', root_name = 'Root' +documents = ['AB', 'C'] + + @pytest.mark.parametrize("backend", ["dataclass", "pydantic"]) + @pytest.mark.parametrize( + ("fixture", "root_name", "documents"), + [ + ( + "nested_sequence_choice.xsd", + "Root", + [ + "AB", + "C", + ], + ), + ( + "repeated_sequence.xsd", + "Root", + [ + "A1B1A2B2", + "", + ], + ), + ( + "substitution_group.xsd", + "Portfolio", + [ + "A1B1A2" + ], + ), + ( + "choice_branch_cardinality.xsd", + "Root", + [ + "A1A2", + "B", + ], + ), + ( + "wave6/duplicate_choice_branch_name.xsd", + "Person", + [ + "1825", + "25", + "", + ], + ), + ], + ) + def test_particle_codec_regressions(tmp_path, backend, fixture, root_name, documents): + schema = pathlib.Path(__file__).resolve().parents[3] / "research" / "fixtures" / fixture + subprocess.run( + [ +> str(_get_polyxml_bin()), + ^^^^^^^^^^^^^^^^^^ + "generate", + str(schema), + "--lang", + "python", + "--backend", + backend, + "--out", + str(tmp_path), + ], + check=True, + capture_output=True, + ) + +tests/test_generated_models.py:126: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +_ test_particle_codec_regressions[repeated_sequence.xsd-Root-documents1-dataclass] _ + +tmp_path = PosixPath('/tmp/pytest-of-bailey/pytest-14/test_particle_codec_regression2') +backend = 'dataclass', fixture = 'repeated_sequence.xsd', root_name = 'Root' +documents = ['A1B1A2B2', ''] + + @pytest.mark.parametrize("backend", ["dataclass", "pydantic"]) + @pytest.mark.parametrize( + ("fixture", "root_name", "documents"), + [ + ( + "nested_sequence_choice.xsd", + "Root", + [ + "AB", + "C", + ], + ), + ( + "repeated_sequence.xsd", + "Root", + [ + "A1B1A2B2", + "", + ], + ), + ( + "substitution_group.xsd", + "Portfolio", + [ + "A1B1A2" + ], + ), + ( + "choice_branch_cardinality.xsd", + "Root", + [ + "A1A2", + "B", + ], + ), + ( + "wave6/duplicate_choice_branch_name.xsd", + "Person", + [ + "1825", + "25", + "", + ], + ), + ], + ) + def test_particle_codec_regressions(tmp_path, backend, fixture, root_name, documents): + schema = pathlib.Path(__file__).resolve().parents[3] / "research" / "fixtures" / fixture + subprocess.run( + [ +> str(_get_polyxml_bin()), + ^^^^^^^^^^^^^^^^^^ + "generate", + str(schema), + "--lang", + "python", + "--backend", + backend, + "--out", + str(tmp_path), + ], + check=True, + capture_output=True, + ) + +tests/test_generated_models.py:126: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +_ test_particle_codec_regressions[repeated_sequence.xsd-Root-documents1-pydantic] _ + +tmp_path = PosixPath('/tmp/pytest-of-bailey/pytest-14/test_particle_codec_regression3') +backend = 'pydantic', fixture = 'repeated_sequence.xsd', root_name = 'Root' +documents = ['A1B1A2B2', ''] + + @pytest.mark.parametrize("backend", ["dataclass", "pydantic"]) + @pytest.mark.parametrize( + ("fixture", "root_name", "documents"), + [ + ( + "nested_sequence_choice.xsd", + "Root", + [ + "AB", + "C", + ], + ), + ( + "repeated_sequence.xsd", + "Root", + [ + "A1B1A2B2", + "", + ], + ), + ( + "substitution_group.xsd", + "Portfolio", + [ + "A1B1A2" + ], + ), + ( + "choice_branch_cardinality.xsd", + "Root", + [ + "A1A2", + "B", + ], + ), + ( + "wave6/duplicate_choice_branch_name.xsd", + "Person", + [ + "1825", + "25", + "", + ], + ), + ], + ) + def test_particle_codec_regressions(tmp_path, backend, fixture, root_name, documents): + schema = pathlib.Path(__file__).resolve().parents[3] / "research" / "fixtures" / fixture + subprocess.run( + [ +> str(_get_polyxml_bin()), + ^^^^^^^^^^^^^^^^^^ + "generate", + str(schema), + "--lang", + "python", + "--backend", + backend, + "--out", + str(tmp_path), + ], + check=True, + capture_output=True, + ) + +tests/test_generated_models.py:126: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +_ test_particle_codec_regressions[substitution_group.xsd-Portfolio-documents2-dataclass] _ + +tmp_path = PosixPath('/tmp/pytest-of-bailey/pytest-14/test_particle_codec_regression4') +backend = 'dataclass', fixture = 'substitution_group.xsd' +root_name = 'Portfolio' +documents = ["A1B1A2"] + + @pytest.mark.parametrize("backend", ["dataclass", "pydantic"]) + @pytest.mark.parametrize( + ("fixture", "root_name", "documents"), + [ + ( + "nested_sequence_choice.xsd", + "Root", + [ + "AB", + "C", + ], + ), + ( + "repeated_sequence.xsd", + "Root", + [ + "A1B1A2B2", + "", + ], + ), + ( + "substitution_group.xsd", + "Portfolio", + [ + "A1B1A2" + ], + ), + ( + "choice_branch_cardinality.xsd", + "Root", + [ + "A1A2", + "B", + ], + ), + ( + "wave6/duplicate_choice_branch_name.xsd", + "Person", + [ + "1825", + "25", + "", + ], + ), + ], + ) + def test_particle_codec_regressions(tmp_path, backend, fixture, root_name, documents): + schema = pathlib.Path(__file__).resolve().parents[3] / "research" / "fixtures" / fixture + subprocess.run( + [ +> str(_get_polyxml_bin()), + ^^^^^^^^^^^^^^^^^^ + "generate", + str(schema), + "--lang", + "python", + "--backend", + backend, + "--out", + str(tmp_path), + ], + check=True, + capture_output=True, + ) + +tests/test_generated_models.py:126: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +_ test_particle_codec_regressions[substitution_group.xsd-Portfolio-documents2-pydantic] _ + +tmp_path = PosixPath('/tmp/pytest-of-bailey/pytest-14/test_particle_codec_regression5') +backend = 'pydantic', fixture = 'substitution_group.xsd' +root_name = 'Portfolio' +documents = ["A1B1A2"] + + @pytest.mark.parametrize("backend", ["dataclass", "pydantic"]) + @pytest.mark.parametrize( + ("fixture", "root_name", "documents"), + [ + ( + "nested_sequence_choice.xsd", + "Root", + [ + "AB", + "C", + ], + ), + ( + "repeated_sequence.xsd", + "Root", + [ + "A1B1A2B2", + "", + ], + ), + ( + "substitution_group.xsd", + "Portfolio", + [ + "A1B1A2" + ], + ), + ( + "choice_branch_cardinality.xsd", + "Root", + [ + "A1A2", + "B", + ], + ), + ( + "wave6/duplicate_choice_branch_name.xsd", + "Person", + [ + "1825", + "25", + "", + ], + ), + ], + ) + def test_particle_codec_regressions(tmp_path, backend, fixture, root_name, documents): + schema = pathlib.Path(__file__).resolve().parents[3] / "research" / "fixtures" / fixture + subprocess.run( + [ +> str(_get_polyxml_bin()), + ^^^^^^^^^^^^^^^^^^ + "generate", + str(schema), + "--lang", + "python", + "--backend", + backend, + "--out", + str(tmp_path), + ], + check=True, + capture_output=True, + ) + +tests/test_generated_models.py:126: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +_ test_particle_codec_regressions[choice_branch_cardinality.xsd-Root-documents3-dataclass] _ + +tmp_path = PosixPath('/tmp/pytest-of-bailey/pytest-14/test_particle_codec_regression6') +backend = 'dataclass', fixture = 'choice_branch_cardinality.xsd' +root_name = 'Root' +documents = ['A1A2', 'B'] + + @pytest.mark.parametrize("backend", ["dataclass", "pydantic"]) + @pytest.mark.parametrize( + ("fixture", "root_name", "documents"), + [ + ( + "nested_sequence_choice.xsd", + "Root", + [ + "AB", + "C", + ], + ), + ( + "repeated_sequence.xsd", + "Root", + [ + "A1B1A2B2", + "", + ], + ), + ( + "substitution_group.xsd", + "Portfolio", + [ + "A1B1A2" + ], + ), + ( + "choice_branch_cardinality.xsd", + "Root", + [ + "A1A2", + "B", + ], + ), + ( + "wave6/duplicate_choice_branch_name.xsd", + "Person", + [ + "1825", + "25", + "", + ], + ), + ], + ) + def test_particle_codec_regressions(tmp_path, backend, fixture, root_name, documents): + schema = pathlib.Path(__file__).resolve().parents[3] / "research" / "fixtures" / fixture + subprocess.run( + [ +> str(_get_polyxml_bin()), + ^^^^^^^^^^^^^^^^^^ + "generate", + str(schema), + "--lang", + "python", + "--backend", + backend, + "--out", + str(tmp_path), + ], + check=True, + capture_output=True, + ) + +tests/test_generated_models.py:126: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +_ test_particle_codec_regressions[choice_branch_cardinality.xsd-Root-documents3-pydantic] _ + +tmp_path = PosixPath('/tmp/pytest-of-bailey/pytest-14/test_particle_codec_regression7') +backend = 'pydantic', fixture = 'choice_branch_cardinality.xsd' +root_name = 'Root' +documents = ['A1A2', 'B'] + + @pytest.mark.parametrize("backend", ["dataclass", "pydantic"]) + @pytest.mark.parametrize( + ("fixture", "root_name", "documents"), + [ + ( + "nested_sequence_choice.xsd", + "Root", + [ + "AB", + "C", + ], + ), + ( + "repeated_sequence.xsd", + "Root", + [ + "A1B1A2B2", + "", + ], + ), + ( + "substitution_group.xsd", + "Portfolio", + [ + "A1B1A2" + ], + ), + ( + "choice_branch_cardinality.xsd", + "Root", + [ + "A1A2", + "B", + ], + ), + ( + "wave6/duplicate_choice_branch_name.xsd", + "Person", + [ + "1825", + "25", + "", + ], + ), + ], + ) + def test_particle_codec_regressions(tmp_path, backend, fixture, root_name, documents): + schema = pathlib.Path(__file__).resolve().parents[3] / "research" / "fixtures" / fixture + subprocess.run( + [ +> str(_get_polyxml_bin()), + ^^^^^^^^^^^^^^^^^^ + "generate", + str(schema), + "--lang", + "python", + "--backend", + backend, + "--out", + str(tmp_path), + ], + check=True, + capture_output=True, + ) + +tests/test_generated_models.py:126: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +_ test_particle_codec_regressions[wave6/duplicate_choice_branch_name.xsd-Person-documents4-dataclass] _ + +tmp_path = PosixPath('/tmp/pytest-of-bailey/pytest-14/test_particle_codec_regression8') +backend = 'dataclass', fixture = 'wave6/duplicate_choice_branch_name.xsd' +root_name = 'Person' +documents = ['1825', '25', ''] + + @pytest.mark.parametrize("backend", ["dataclass", "pydantic"]) + @pytest.mark.parametrize( + ("fixture", "root_name", "documents"), + [ + ( + "nested_sequence_choice.xsd", + "Root", + [ + "AB", + "C", + ], + ), + ( + "repeated_sequence.xsd", + "Root", + [ + "A1B1A2B2", + "", + ], + ), + ( + "substitution_group.xsd", + "Portfolio", + [ + "A1B1A2" + ], + ), + ( + "choice_branch_cardinality.xsd", + "Root", + [ + "A1A2", + "B", + ], + ), + ( + "wave6/duplicate_choice_branch_name.xsd", + "Person", + [ + "1825", + "25", + "", + ], + ), + ], + ) + def test_particle_codec_regressions(tmp_path, backend, fixture, root_name, documents): + schema = pathlib.Path(__file__).resolve().parents[3] / "research" / "fixtures" / fixture + subprocess.run( + [ +> str(_get_polyxml_bin()), + ^^^^^^^^^^^^^^^^^^ + "generate", + str(schema), + "--lang", + "python", + "--backend", + backend, + "--out", + str(tmp_path), + ], + check=True, + capture_output=True, + ) + +tests/test_generated_models.py:126: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +_ test_particle_codec_regressions[wave6/duplicate_choice_branch_name.xsd-Person-documents4-pydantic] _ + +tmp_path = PosixPath('/tmp/pytest-of-bailey/pytest-14/test_particle_codec_regression9') +backend = 'pydantic', fixture = 'wave6/duplicate_choice_branch_name.xsd' +root_name = 'Person' +documents = ['1825', '25', ''] + + @pytest.mark.parametrize("backend", ["dataclass", "pydantic"]) + @pytest.mark.parametrize( + ("fixture", "root_name", "documents"), + [ + ( + "nested_sequence_choice.xsd", + "Root", + [ + "AB", + "C", + ], + ), + ( + "repeated_sequence.xsd", + "Root", + [ + "A1B1A2B2", + "", + ], + ), + ( + "substitution_group.xsd", + "Portfolio", + [ + "A1B1A2" + ], + ), + ( + "choice_branch_cardinality.xsd", + "Root", + [ + "A1A2", + "B", + ], + ), + ( + "wave6/duplicate_choice_branch_name.xsd", + "Person", + [ + "1825", + "25", + "", + ], + ), + ], + ) + def test_particle_codec_regressions(tmp_path, backend, fixture, root_name, documents): + schema = pathlib.Path(__file__).resolve().parents[3] / "research" / "fixtures" / fixture + subprocess.run( + [ +> str(_get_polyxml_bin()), + ^^^^^^^^^^^^^^^^^^ + "generate", + str(schema), + "--lang", + "python", + "--backend", + backend, + "--out", + str(tmp_path), + ], + check=True, + capture_output=True, + ) + +tests/test_generated_models.py:126: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +__________________________ test_codecs_flag_disabled ___________________________ + + def test_codecs_flag_disabled(): +> polyxml_bin = _get_polyxml_bin() + ^^^^^^^^^^^^^^^^^^ + +tests/test_generated_models.py:506: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +___________ test_generated_models_reject_general_entities[dataclass] ___________ + +tmp_path = PosixPath('/tmp/pytest-of-bailey/pytest-14/test_generated_models_reject_g0') +backend = 'dataclass' + + @pytest.mark.parametrize("backend", ["dataclass", "pydantic"]) + def test_generated_models_reject_general_entities(tmp_path, backend): + schema = pathlib.Path(__file__).resolve().parents[3] / "research/fixtures/wave7/xxe_text.xsd" + subprocess.run( + [ +> str(_get_polyxml_bin()), + ^^^^^^^^^^^^^^^^^^ + "generate", + str(schema), + "--lang", + "python", + "--backend", + backend, + "--out", + str(tmp_path), + ], + check=True, + capture_output=True, + ) + +tests/test_generated_models.py:541: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +___________ test_generated_models_reject_general_entities[pydantic] ____________ + +tmp_path = PosixPath('/tmp/pytest-of-bailey/pytest-14/test_generated_models_reject_g1') +backend = 'pydantic' + + @pytest.mark.parametrize("backend", ["dataclass", "pydantic"]) + def test_generated_models_reject_general_entities(tmp_path, backend): + schema = pathlib.Path(__file__).resolve().parents[3] / "research/fixtures/wave7/xxe_text.xsd" + subprocess.run( + [ +> str(_get_polyxml_bin()), + ^^^^^^^^^^^^^^^^^^ + "generate", + str(schema), + "--lang", + "python", + "--backend", + backend, + "--out", + str(tmp_path), + ], + check=True, + capture_output=True, + ) + +tests/test_generated_models.py:541: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +______________ test_element_defaults_preserve_absence[dataclass] _______________ + +tmp_path = PosixPath('/tmp/pytest-of-bailey/pytest-14/test_element_defaults_preserve0') +backend = 'dataclass' + + @pytest.mark.parametrize("backend", ["dataclass", "pydantic"]) + def test_element_defaults_preserve_absence(tmp_path, backend): + schema = pathlib.Path(__file__).resolve().parents[3] / "research/fixtures/element_defaults.xsd" + subprocess.run( + [ +> str(_get_polyxml_bin()), + ^^^^^^^^^^^^^^^^^^ + "generate", + str(schema), + "--lang", + "python", + "--backend", + backend, + "--out", + str(tmp_path), + ], + check=True, + capture_output=True, + ) + +tests/test_generated_models.py:575: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +_______________ test_element_defaults_preserve_absence[pydantic] _______________ + +tmp_path = PosixPath('/tmp/pytest-of-bailey/pytest-14/test_element_defaults_preserve1') +backend = 'pydantic' + + @pytest.mark.parametrize("backend", ["dataclass", "pydantic"]) + def test_element_defaults_preserve_absence(tmp_path, backend): + schema = pathlib.Path(__file__).resolve().parents[3] / "research/fixtures/element_defaults.xsd" + subprocess.run( + [ +> str(_get_polyxml_bin()), + ^^^^^^^^^^^^^^^^^^ + "generate", + str(schema), + "--lang", + "python", + "--backend", + backend, + "--out", + str(tmp_path), + ], + check=True, + capture_output=True, + ) + +tests/test_generated_models.py:575: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +____________ test_fixed_values_validate_input_and_output[dataclass] ____________ + +tmp_path = PosixPath('/tmp/pytest-of-bailey/pytest-14/test_fixed_values_validate_inp0') +backend = 'dataclass' + + @pytest.mark.parametrize("backend", ["dataclass", "pydantic"]) + def test_fixed_values_validate_input_and_output(tmp_path, backend): + schema = pathlib.Path(__file__).resolve().parents[3] / "research/fixtures/fixed_values.xsd" + subprocess.run( + [ +> str(_get_polyxml_bin()), + ^^^^^^^^^^^^^^^^^^ + "generate", + str(schema), + "--lang", + "python", + "--backend", + backend, + "--out", + str(tmp_path), + ], + check=True, + capture_output=True, + ) + +tests/test_generated_models.py:608: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +____________ test_fixed_values_validate_input_and_output[pydantic] _____________ + +tmp_path = PosixPath('/tmp/pytest-of-bailey/pytest-14/test_fixed_values_validate_inp1') +backend = 'pydantic' + + @pytest.mark.parametrize("backend", ["dataclass", "pydantic"]) + def test_fixed_values_validate_input_and_output(tmp_path, backend): + schema = pathlib.Path(__file__).resolve().parents[3] / "research/fixtures/fixed_values.xsd" + subprocess.run( + [ +> str(_get_polyxml_bin()), + ^^^^^^^^^^^^^^^^^^ + "generate", + str(schema), + "--lang", + "python", + "--backend", + backend, + "--out", + str(tmp_path), + ], + check=True, + capture_output=True, + ) + +tests/test_generated_models.py:608: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +__________ test_separate_choice_groups_enforce_constraints[dataclass] __________ + +tmp_path = PosixPath('/tmp/pytest-of-bailey/pytest-14/test_separate_choice_groups_en0') +backend = 'dataclass' + + @pytest.mark.parametrize("backend", ["dataclass", "pydantic"]) + def test_separate_choice_groups_enforce_constraints(tmp_path, backend): + schema = ( + pathlib.Path(__file__).resolve().parents[3] + / "research/fixtures/wave6/two_choice_groups.xsd" + ) + subprocess.run( + [ +> str(_get_polyxml_bin()), + ^^^^^^^^^^^^^^^^^^ + "generate", + str(schema), + "--lang", + "python", + "--backend", + backend, + "--out", + str(tmp_path), + ], + check=True, + capture_output=True, + ) + +tests/test_generated_models.py:647: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +__________ test_separate_choice_groups_enforce_constraints[pydantic] ___________ + +tmp_path = PosixPath('/tmp/pytest-of-bailey/pytest-14/test_separate_choice_groups_en1') +backend = 'pydantic' + + @pytest.mark.parametrize("backend", ["dataclass", "pydantic"]) + def test_separate_choice_groups_enforce_constraints(tmp_path, backend): + schema = ( + pathlib.Path(__file__).resolve().parents[3] + / "research/fixtures/wave6/two_choice_groups.xsd" + ) + subprocess.run( + [ +> str(_get_polyxml_bin()), + ^^^^^^^^^^^^^^^^^^ + "generate", + str(schema), + "--lang", + "python", + "--backend", + backend, + "--out", + str(tmp_path), + ], + check=True, + capture_output=True, + ) + +tests/test_generated_models.py:647: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +________________ test_repeated_sequence_constraints[dataclass] _________________ + +tmp_path = PosixPath('/tmp/pytest-of-bailey/pytest-14/test_repeated_sequence_constra0') +backend = 'dataclass' + + @pytest.mark.parametrize("backend", ["dataclass", "pydantic"]) + def test_repeated_sequence_constraints(tmp_path, backend): + schema = pathlib.Path(__file__).resolve().parents[3] / "research/fixtures/repeated_sequence.xsd" + subprocess.run( + [ +> str(_get_polyxml_bin()), + ^^^^^^^^^^^^^^^^^^ + "generate", + str(schema), + "--lang", + "python", + "--backend", + backend, + "--out", + str(tmp_path), + ], + check=True, + capture_output=True, + ) + +tests/test_generated_models.py:686: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +_________________ test_repeated_sequence_constraints[pydantic] _________________ + +tmp_path = PosixPath('/tmp/pytest-of-bailey/pytest-14/test_repeated_sequence_constra1') +backend = 'pydantic' + + @pytest.mark.parametrize("backend", ["dataclass", "pydantic"]) + def test_repeated_sequence_constraints(tmp_path, backend): + schema = pathlib.Path(__file__).resolve().parents[3] / "research/fixtures/repeated_sequence.xsd" + subprocess.run( + [ +> str(_get_polyxml_bin()), + ^^^^^^^^^^^^^^^^^^ + "generate", + str(schema), + "--lang", + "python", + "--backend", + backend, + "--out", + str(tmp_path), + ], + check=True, + capture_output=True, + ) + +tests/test_generated_models.py:686: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +_____________________ test_typed_lexical_lists[dataclass] ______________________ + +tmp_path = PosixPath('/tmp/pytest-of-bailey/pytest-14/test_typed_lexical_lists_datac0') +backend = 'dataclass' + + @pytest.mark.parametrize("backend", ["dataclass", "pydantic"]) + def test_typed_lexical_lists(tmp_path, backend): + schema = pathlib.Path(__file__).resolve().parents[3] / "research/fixtures/list_simple_types.xsd" + subprocess.run( + [ +> str(_get_polyxml_bin()), + ^^^^^^^^^^^^^^^^^^ + "generate", + str(schema), + "--lang", + "python", + "--backend", + backend, + "--out", + str(tmp_path), + ], + check=True, + capture_output=True, + ) + +tests/test_generated_models.py:723: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +______________________ test_typed_lexical_lists[pydantic] ______________________ + +tmp_path = PosixPath('/tmp/pytest-of-bailey/pytest-14/test_typed_lexical_lists_pydan0') +backend = 'pydantic' + + @pytest.mark.parametrize("backend", ["dataclass", "pydantic"]) + def test_typed_lexical_lists(tmp_path, backend): + schema = pathlib.Path(__file__).resolve().parents[3] / "research/fixtures/list_simple_types.xsd" + subprocess.run( + [ +> str(_get_polyxml_bin()), + ^^^^^^^^^^^^^^^^^^ + "generate", + str(schema), + "--lang", + "python", + "--backend", + backend, + "--out", + str(tmp_path), + ], + check=True, + capture_output=True, + ) + +tests/test_generated_models.py:723: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +_____________ test_named_lexical_list_item_constraints[dataclass] ______________ + +tmp_path = PosixPath('/tmp/pytest-of-bailey/pytest-14/test_named_lexical_list_item_c0') +backend = 'dataclass' + + @pytest.mark.parametrize("backend", ["dataclass", "pydantic"]) + def test_named_lexical_list_item_constraints(tmp_path, backend): + schema = ( + pathlib.Path(__file__).resolve().parents[3] / "research/fixtures/restricted_list_items.xsd" + ) + subprocess.run( + [ +> str(_get_polyxml_bin()), + ^^^^^^^^^^^^^^^^^^ + "generate", + str(schema), + "--lang", + "python", + "--backend", + backend, + "--out", + str(tmp_path), + ], + check=True, + capture_output=True, + ) + +tests/test_generated_models.py:758: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +______________ test_named_lexical_list_item_constraints[pydantic] ______________ + +tmp_path = PosixPath('/tmp/pytest-of-bailey/pytest-14/test_named_lexical_list_item_c1') +backend = 'pydantic' + + @pytest.mark.parametrize("backend", ["dataclass", "pydantic"]) + def test_named_lexical_list_item_constraints(tmp_path, backend): + schema = ( + pathlib.Path(__file__).resolve().parents[3] / "research/fixtures/restricted_list_items.xsd" + ) + subprocess.run( + [ +> str(_get_polyxml_bin()), + ^^^^^^^^^^^^^^^^^^ + "generate", + str(schema), + "--lang", + "python", + "--backend", + backend, + "--out", + str(tmp_path), + ], + check=True, + capture_output=True, + ) + +tests/test_generated_models.py:758: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +______________ test_repeated_choice_branch_boundaries[dataclass] _______________ + +tmp_path = PosixPath('/tmp/pytest-of-bailey/pytest-14/test_repeated_choice_branch_bo0') +backend = 'dataclass' + + @pytest.mark.parametrize("backend", ["dataclass", "pydantic"]) + def test_repeated_choice_branch_boundaries(tmp_path, backend): + schema = ( + pathlib.Path(__file__).resolve().parents[3] + / "research/fixtures/choice_branch_cardinality.xsd" + ) + subprocess.run( + [ +> str(_get_polyxml_bin()), + ^^^^^^^^^^^^^^^^^^ + "generate", + str(schema), + "--lang", + "python", + "--backend", + backend, + "--out", + str(tmp_path), + ], + check=True, + capture_output=True, + ) + +tests/test_generated_models.py:796: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +_______________ test_repeated_choice_branch_boundaries[pydantic] _______________ + +tmp_path = PosixPath('/tmp/pytest-of-bailey/pytest-14/test_repeated_choice_branch_bo1') +backend = 'pydantic' + + @pytest.mark.parametrize("backend", ["dataclass", "pydantic"]) + def test_repeated_choice_branch_boundaries(tmp_path, backend): + schema = ( + pathlib.Path(__file__).resolve().parents[3] + / "research/fixtures/choice_branch_cardinality.xsd" + ) + subprocess.run( + [ +> str(_get_polyxml_bin()), + ^^^^^^^^^^^^^^^^^^ + "generate", + str(schema), + "--lang", + "python", + "--backend", + backend, + "--out", + str(tmp_path), + ], + check=True, + capture_output=True, + ) + +tests/test_generated_models.py:796: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +________ test_duplicate_choice_names_validate_branch_shapes[dataclass] _________ + +tmp_path = PosixPath('/tmp/pytest-of-bailey/pytest-14/test_duplicate_choice_names_va0') +backend = 'dataclass' + + @pytest.mark.parametrize("backend", ["dataclass", "pydantic"]) + def test_duplicate_choice_names_validate_branch_shapes(tmp_path, backend): + schema = ( + pathlib.Path(__file__).resolve().parents[3] + / "research/fixtures/wave6/duplicate_choice_branch_name.xsd" + ) + subprocess.run( + [ +> str(_get_polyxml_bin()), + ^^^^^^^^^^^^^^^^^^ + "generate", + str(schema), + "--lang", + "python", + "--backend", + backend, + "--out", + str(tmp_path), + ], + check=True, + capture_output=True, + ) + +tests/test_generated_models.py:842: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +_________ test_duplicate_choice_names_validate_branch_shapes[pydantic] _________ + +tmp_path = PosixPath('/tmp/pytest-of-bailey/pytest-14/test_duplicate_choice_names_va1') +backend = 'pydantic' + + @pytest.mark.parametrize("backend", ["dataclass", "pydantic"]) + def test_duplicate_choice_names_validate_branch_shapes(tmp_path, backend): + schema = ( + pathlib.Path(__file__).resolve().parents[3] + / "research/fixtures/wave6/duplicate_choice_branch_name.xsd" + ) + subprocess.run( + [ +> str(_get_polyxml_bin()), + ^^^^^^^^^^^^^^^^^^ + "generate", + str(schema), + "--lang", + "python", + "--backend", + backend, + "--out", + str(tmp_path), + ], + check=True, + capture_output=True, + ) + +tests/test_generated_models.py:842: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +____________ test_abstract_substitution_head_is_rejected[dataclass] ____________ + +tmp_path = PosixPath('/tmp/pytest-of-bailey/pytest-14/test_abstract_substitution_hea0') +backend = 'dataclass' + + @pytest.mark.parametrize("backend", ["dataclass", "pydantic"]) + def test_abstract_substitution_head_is_rejected(tmp_path, backend): + schema = ( + pathlib.Path(__file__).resolve().parents[3] / "research/fixtures/substitution_group.xsd" + ) + subprocess.run( + [ +> str(_get_polyxml_bin()), + ^^^^^^^^^^^^^^^^^^ + "generate", + str(schema), + "--lang", + "python", + "--backend", + backend, + "--out", + str(tmp_path), + ], + check=True, + capture_output=True, + ) + +tests/test_generated_models.py:877: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +____________ test_abstract_substitution_head_is_rejected[pydantic] _____________ + +tmp_path = PosixPath('/tmp/pytest-of-bailey/pytest-14/test_abstract_substitution_hea1') +backend = 'pydantic' + + @pytest.mark.parametrize("backend", ["dataclass", "pydantic"]) + def test_abstract_substitution_head_is_rejected(tmp_path, backend): + schema = ( + pathlib.Path(__file__).resolve().parents[3] / "research/fixtures/substitution_group.xsd" + ) + subprocess.run( + [ +> str(_get_polyxml_bin()), + ^^^^^^^^^^^^^^^^^^ + "generate", + str(schema), + "--lang", + "python", + "--backend", + backend, + "--out", + str(tmp_path), + ], + check=True, + capture_output=True, + ) + +tests/test_generated_models.py:877: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +_________________ test_unbounded_integer_round_trip[dataclass] _________________ + +tmp_path = PosixPath('/tmp/pytest-of-bailey/pytest-14/test_unbounded_integer_round_t0') +backend = 'dataclass' + + @pytest.mark.parametrize("backend", ["dataclass", "pydantic"]) + def test_unbounded_integer_round_trip(tmp_path, backend): + schema = ( + pathlib.Path(__file__).resolve().parents[3] + / "research/fixtures/wave5/unbounded_integer.xsd" + ) + subprocess.run( + [ +> str(_get_polyxml_bin()), + ^^^^^^^^^^^^^^^^^^ + "generate", + str(schema), + "--lang", + "python", + "--backend", + backend, + "--out", + str(tmp_path), + ], + check=True, + capture_output=True, + ) + +tests/test_generated_models.py:915: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +_________________ test_unbounded_integer_round_trip[pydantic] __________________ + +tmp_path = PosixPath('/tmp/pytest-of-bailey/pytest-14/test_unbounded_integer_round_t1') +backend = 'pydantic' + + @pytest.mark.parametrize("backend", ["dataclass", "pydantic"]) + def test_unbounded_integer_round_trip(tmp_path, backend): + schema = ( + pathlib.Path(__file__).resolve().parents[3] + / "research/fixtures/wave5/unbounded_integer.xsd" + ) + subprocess.run( + [ +> str(_get_polyxml_bin()), + ^^^^^^^^^^^^^^^^^^ + "generate", + str(schema), + "--lang", + "python", + "--backend", + backend, + "--out", + str(tmp_path), + ], + check=True, + capture_output=True, + ) + +tests/test_generated_models.py:915: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + + def _get_polyxml_bin() -> pathlib.Path: + repo_root = pathlib.Path(__file__).parent.parent.parent.parent + exe_name = "polyxml.exe" if sys.platform == "win32" else "polyxml" + candidates = [ + repo_root / "target" / "debug" / exe_name, + repo_root / "target" / "release" / exe_name, + ] + for c in candidates: + if c.exists(): + return c +  + which_path = shutil.which(exe_name) or shutil.which("polyxml") + if which_path: + return pathlib.Path(which_path) +  + # Attempt on-the-fly compilation via cargo if not found + subprocess.run( + ["cargo", "build", "-p", "polyxml-cli"], + cwd=repo_root, + check=True, + capture_output=True, + ) + for c in candidates: + if c.exists(): + return c +  +> raise FileNotFoundError(f"polyxml CLI binary could not be found or built at {candidates}") +E FileNotFoundError: polyxml CLI binary could not be found or built at [PosixPath('/home/bailey/github/polyxml-default-literals/target/debug/polyxml'), PosixPath('/home/bailey/github/polyxml-default-literals/target/release/polyxml')] + +tests/test_generated_models.py:288: FileNotFoundError +================================ tests coverage ================================ +_______________ coverage: platform linux, python 3.14.4-final-0 ________________ + +Name Stmts Miss Branch BrPart Cover Missing +--------------------------------------------------- +TOTAL 181 0 58 0 100% + +3 files skipped due to complete coverage. +Required test coverage of 100% reached. Total coverage: 100.00% +=========================== short test summary info ============================ +FAILED tests/test_generated_models.py::test_generated_abstract_root_preserves_derived_payload[dataclass] - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +FAILED tests/test_generated_models.py::test_generated_abstract_root_preserves_derived_payload[pydantic] - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +FAILED tests/test_generated_models.py::test_roots_with_the_same_local_name_in_distinct_namespaces - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +FAILED tests/test_generated_models.py::test_particle_codec_regressions[nested_sequence_choice.xsd-Root-documents0-dataclass] - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +FAILED tests/test_generated_models.py::test_particle_codec_regressions[nested_sequence_choice.xsd-Root-documents0-pydantic] - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +FAILED tests/test_generated_models.py::test_particle_codec_regressions[repeated_sequence.xsd-Root-documents1-dataclass] - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +FAILED tests/test_generated_models.py::test_particle_codec_regressions[repeated_sequence.xsd-Root-documents1-pydantic] - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +FAILED tests/test_generated_models.py::test_particle_codec_regressions[substitution_group.xsd-Portfolio-documents2-dataclass] - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +FAILED tests/test_generated_models.py::test_particle_codec_regressions[substitution_group.xsd-Portfolio-documents2-pydantic] - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +FAILED tests/test_generated_models.py::test_particle_codec_regressions[choice_branch_cardinality.xsd-Root-documents3-dataclass] - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +FAILED tests/test_generated_models.py::test_particle_codec_regressions[choice_branch_cardinality.xsd-Root-documents3-pydantic] - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +FAILED tests/test_generated_models.py::test_particle_codec_regressions[wave6/duplicate_choice_branch_name.xsd-Person-documents4-dataclass] - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +FAILED tests/test_generated_models.py::test_particle_codec_regressions[wave6/duplicate_choice_branch_name.xsd-Person-documents4-pydantic] - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +FAILED tests/test_generated_models.py::test_codecs_flag_disabled - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +FAILED tests/test_generated_models.py::test_generated_models_reject_general_entities[dataclass] - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +FAILED tests/test_generated_models.py::test_generated_models_reject_general_entities[pydantic] - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +FAILED tests/test_generated_models.py::test_element_defaults_preserve_absence[dataclass] - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +FAILED tests/test_generated_models.py::test_element_defaults_preserve_absence[pydantic] - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +FAILED tests/test_generated_models.py::test_fixed_values_validate_input_and_output[dataclass] - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +FAILED tests/test_generated_models.py::test_fixed_values_validate_input_and_output[pydantic] - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +FAILED tests/test_generated_models.py::test_separate_choice_groups_enforce_constraints[dataclass] - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +FAILED tests/test_generated_models.py::test_separate_choice_groups_enforce_constraints[pydantic] - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +FAILED tests/test_generated_models.py::test_repeated_sequence_constraints[dataclass] - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +FAILED tests/test_generated_models.py::test_repeated_sequence_constraints[pydantic] - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +FAILED tests/test_generated_models.py::test_typed_lexical_lists[dataclass] - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +FAILED tests/test_generated_models.py::test_typed_lexical_lists[pydantic] - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +FAILED tests/test_generated_models.py::test_named_lexical_list_item_constraints[dataclass] - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +FAILED tests/test_generated_models.py::test_named_lexical_list_item_constraints[pydantic] - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +FAILED tests/test_generated_models.py::test_repeated_choice_branch_boundaries[dataclass] - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +FAILED tests/test_generated_models.py::test_repeated_choice_branch_boundaries[pydantic] - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +FAILED tests/test_generated_models.py::test_duplicate_choice_names_validate_branch_shapes[dataclass] - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +FAILED tests/test_generated_models.py::test_duplicate_choice_names_validate_branch_shapes[pydantic] - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +FAILED tests/test_generated_models.py::test_abstract_substitution_head_is_rejected[dataclass] - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +FAILED tests/test_generated_models.py::test_abstract_substitution_head_is_rejected[pydantic] - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +FAILED tests/test_generated_models.py::test_unbounded_integer_round_trip[dataclass] - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +FAILED tests/test_generated_models.py::test_unbounded_integer_round_trip[pydantic] - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +ERROR tests/test_generated_models.py::test_declared_root_models[dataclass] - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +ERROR tests/test_generated_models.py::test_declared_root_models[pydantic] - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +ERROR tests/test_generated_models.py::test_generated_dataclass_deserialization_and_serialization - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +ERROR tests/test_generated_models.py::test_generated_pydantic_deserialization_and_serialization - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +ERROR tests/test_generated_models.py::test_generated_dataclass_codecs - FileNotFoundError: polyxml CLI binary could not be found or built at [Posix... +36 failed, 71 passed, 5 errors in 21.41s diff --git a/research/data/runtime-followups-2026-10-03/default-literals/quality-gate.txt b/research/data/runtime-followups-2026-10-03/default-literals/quality-gate.txt new file mode 100644 index 0000000..a3ebf79 --- /dev/null +++ b/research/data/runtime-followups-2026-10-03/default-literals/quality-gate.txt @@ -0,0 +1,769 @@ +memcap: <=7790 MiB (60% of 12984 MiB available) [systemd MemoryMax, swap off] +==> [1/6] Running Rust format check (cargo fmt)... +==> [2/6] Running Rust Clippy (cargo clippy -D warnings)... + Compiling pyo3-ffi v0.29.2 + Compiling pyo3 v0.29.2 + Checking polyxml-python v0.34.6 (/home/bailey/github/polyxml-default-literals/crates/polyxml-python) + Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.92s +==> [3/6] Running Rust workspace tests (cargo test)... + Compiling pyo3-ffi v0.29.2 + Compiling pyo3 v0.29.2 + Compiling polyxml-python v0.34.6 (/home/bailey/github/polyxml-default-literals/crates/polyxml-python) + Finished `test` profile [unoptimized + debuginfo] target(s) in 2.65s + Running unittests src/lib.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/polyxml-675b717e531d04ed) + +running 16 tests +test integer::tests::comparison_uses_sign_and_magnitude ... ok +test ir::root_selection_tests::inherited_base_does_not_select_sibling_types ... ok +test ir::root_selection_tests::rejects_missing_and_ambiguous_roots ... ok +test ir::root_selection_tests::keeps_references_descendants_and_substitutions ... ok +test ir::chunker::tests::test_topological_scc_chunking_dag_invariants ... ok +test json::tests::test_json_deserialization_accepts_python_field_names ... ok +test json::tests::test_json_roundtrip_primitives ... ok +test tests::test_deserialization_does_not_confuse_xmlns_with_attributes ... ok +test tests::test_nested_elements_and_lists ... ok +test tests::test_namespaced_serialization ... ok +test ir::root_selection_tests::field_reference_keeps_substitution_group_members ... ok +test tests::test_roundtrip_serialization_deserialization ... ok +test tests::test_streaming_xml_item_stream ... ok +test pattern::tests::bounded_cache_evicts_and_retains_invalid_results ... ok +test pattern::tests::cache_matches_uncached_regex_under_churn_and_concurrency ... ok +test pattern::tests::cyclic_working_set_above_capacity_keeps_reusing_entries ... ok + +test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s + + Running tests/test_adversarial_identifiers.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_adversarial_identifiers-34056256ccaa17cb) + +running 7 tests +test test_rust_adversarial_compilation ... ok +test test_python_adversarial_compilation ... ok +test test_go_adversarial_compilation ... ok +test test_cpp_adversarial_compilation ... ok +test test_java_adversarial_compilation ... ok +test test_typescript_adversarial_compilation ... ok +test test_csharp_adversarial_compilation ... ok + +test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.25s + + Running tests/test_any_attribute.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_any_attribute-d5795d9c5e0fdefd) + +running 1 test +test test_any_attribute_schema_parser_and_runtime_roundtrip ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/test_any_element.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_any_element-1fb225d6616938e8) + +running 2 tests +test test_any_element_go_codegen ... ok +test test_any_element_schema_parser_and_runtime_roundtrip ... ok + +test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/test_conformance.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_conformance-0b37810d65fedfce) + +running 4 tests +test test_soap_envelope_conformance ... ok +test test_ubl_invoice_conformance ... ok +test test_atom_feed_conformance ... ok +test test_streaming_catalog_conformance ... ok + +test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s + + Running tests/test_core.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_core-f4cc1079f88df2bc) + +running 9 tests +test integer_mappings_keep_fixed_width_builtins ... ok +test test_gregorian_partial_date_lexical_validation ... ok +test test_error_handling_invalid_scalars ... ok +test test_all_scalar_types ... ok +test test_roundtrip_serialization_with_indentation ... ok +test test_malformed_xml_syntax_error ... ok +test test_xsi_nil_handling ... ok +test unbounded_integers_round_trip_and_compare_exact_bounds ... ok +test test_xsd_gregorian_fields_round_trip_and_reject_invalid_dates ... ok + +test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/test_cpp_codegen.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_cpp_codegen-a4cd5571504c64d5) + +running 14 tests +test simple_aliases_follow_their_base_types ... ok +test test_cpp_cmake_modules_file_set ... ok +test test_cpp_cmake_and_meson_generation ... ok +test test_cpp_mode_and_backend_from_str_loose ... ok +test test_cpp_glaze_backend_meta_generation ... ok +test test_cpp_sanitization ... ok +test mixed_content_mutual_cycle_compiles ... ok +test mixed_content_self_cycle_compiles ... ok +Inheritance test passed. +test test_cpp_inheritance_codegen ... ok +Recursive tree unique_ptr passed. +test test_cpp_recursive_cycle_unique_ptr ... ok +All C++20 tests passed successfully. +test test_cpp_struct_and_enum_codegen_compilation ... ok +Choice pattern matching passed. +test test_cpp_choice_variant_compilation ... ok +test test_cpp_modules_compilation ... ok +ISO 20022 pacs.008 C++20 test passed. +test test_cpp_from_xsd_schema ... ok + +test result: ok. 14 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.86s + + Running tests/test_csharp_codegen.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_csharp_codegen-cf32febf6e7f0777) + +running 20 tests +test choice_variants_avoid_record_member_names ... ok +test test_csharp_record_kind_from_str_loose ... ok +test test_csharp_any_attribute_codegen ... ok +test emits_unrestricted_simple_types_and_validates_empty_records ... ok +test test_csharp_sanitization ... ok +test test_csharp_date_or_datetime_lexical_union ... ok +test test_csharp_sequence_nested_inside_choice_codegen ... ok +test test_csharp_source_gen_context ... ok + Determining projects to restore... + Restored /tmp/.tmp51oDF2/PaymentsApp.csproj (in 222 ms). + PaymentsApp -> /tmp/.tmp51oDF2/bin/Debug/net8.0/PaymentsApp.dll + +Build succeeded. + 0 Warning(s) + 0 Error(s) + +Time Elapsed 00:00:01.31 +Choice pattern matching and XML serialization passed! +test test_csharp_choice_polymorphic_hierarchy ... ok +test unbounded_integer_xml_preserves_digits ... ok + Determining projects to restore... + Restored /tmp/.tmp6wrcLy/CrmApp.csproj (in 169 ms). + CrmApp -> /tmp/.tmp6wrcLy/bin/Debug/net8.0/CrmApp.dll + +Build succeeded. + 0 Warning(s) + 0 Error(s) + +Time Elapsed 00:00:01.04 +Customer C# tests passed cleanly! +test test_csharp_records_and_enums_generation ... ok + Determining projects to restore... + Restored /tmp/.tmpKT1yLL/TreeApp.csproj (in 166 ms). + TreeApp -> /tmp/.tmpKT1yLL/bin/Debug/net8.0/TreeApp.dll + +Build succeeded. + 0 Warning(s) + 0 Error(s) + +Time Elapsed 00:00:01.02 +Recursive tree C# tests passed cleanly! +test test_csharp_recursive_cycle ... ok +test test_csharp_mutable_inheritance_roundtrip ... ok +test test_csharp_mutable_wrappers_and_choices_without_validation ... ok +test test_csharp_simple_content_class_validator_and_unsealed_records ... ok +test fixed_values_are_enforced_on_read_and_write ... ok +test element_defaults_preserve_absence_and_empty_presence ... ok +test lexical_union_attributes_round_trip ... ok +test nillable_enum_collection_round_trips ... ok +test particle_wire_structure_round_trips ... ok + +test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 50.88s + + Running tests/test_default_literal_codegen.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_default_literal_codegen-4c3562e7020c30db) + +running 1 test +test generated_string_defaults_and_fixed_values_preserve_xml_characters ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.01s + + Running tests/test_enum_literal_codegen.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_enum_literal_codegen-0c92c71c8d4587d6) + +running 1 test +test enum_literals_compile_and_preserve_values_in_all_seven_languages ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.40s + + Running tests/test_go_codegen.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_go_codegen-005c45ed4341be87) + +running 25 tests +test referenced_element_uses_declared_type_after_includes ... ok +test root_alias_names_are_unique_after_go_normalization ... ok +test test_go_any_attribute_codegen ... ok +test test_go_backend_from_str_loose ... ok +go: creating new go.mod: module payments +go: to add module requirements and sums: + go mod tidy +test imported_ordered_types_do_not_add_unused_bytes_import ... ok +test test_go_date_or_datetime_lexical_union ... ok +test test_go_easyjson_backend ... ok +test test_go_enum_only_schema_omits_unused_xml_import ... ok +test separate_choices_enforce_each_group ... ok +go: creating new go.mod: module tree +go: to add module requirements and sums: + go mod tidy +test roots_and_union_attributes_round_trip ... ok +test test_go_sanitization ... ok +test test_go_sonic_backend ... ok +go: creating new go.mod: module crm +go: to add module requirements and sums: + go mod tidy +test abstract_substitution_heads_are_rejected ... ok +=== RUN TestChoiceMutualExclusivity + payments_test.go:44: Correctly rejected concurrent choice branches: choice ContactChoice mutual exclusivity violation: multiple branches populated (2) +--- PASS: TestChoiceMutualExclusivity (0.00s) +PASS +ok payments 0.004s +test test_go_choice_mutual_exclusivity ... ok +test duplicate_choice_names_reject_invalid_branch_shapes ... ok +test test_go_abstract_xsi_type_dispatch ... ok +test nested_lexical_unions_compile_and_round_trip_in_go ... ok +test repeated_choice_branch_rejects_mixed_and_empty_selections ... ok +test repeated_sequence_groups_enforce_bounds_and_order ... ok +test temporal_scalars_preserve_xsd_lexical_values ... ok +test test_go_namespaced_element_ref_matching ... ok +=== RUN TestRecursiveTree +--- PASS: TestRecursiveTree (0.00s) +PASS +ok tree 0.002s +test test_go_recursive_cycle_pointers ... ok +=== RUN TestCustomerRoundtrip +--- PASS: TestCustomerRoundtrip (0.00s) +PASS +ok crm 0.002s +test test_go_struct_and_enum_generation ... ok +test unbounded_integer_xml_preserves_digits ... ok +test ordered_particles_and_choice_branches_round_trip ... ok + +test result: ok. 25 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.03s + + Running tests/test_java_codegen.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_java_codegen-a6078e165fc64681) + +running 17 tests +test test_java_jackson_backend_enum_annotations ... ok +test test_java_identifier_sanitization ... ok +test test_java_jackson_backend_from_str_loose ... ok +test test_direct_codec_rejects_wildcards_and_name_collisions ... ok +test test_java_bean_validation_annotations_are_opt_in ... ok +test test_java_jackson_backend_struct_annotations ... ok +test test_java_jackson_backend_simple_type_annotations ... ok +test test_java_jackson_backend_union_annotations ... ok +test test_java_plain_record_inlines_base_fields ... ok +test jackson3_preserves_core_annotations_and_maps_record_text ... ok +test test_java_sealed_interface_choice ... ok +test test_java_module_container_class ... ok +test test_java_records_and_enums_generation ... ok +test test_java_plain_record_extension_javac_execute ... ok +test test_java_record_builder_and_nested_codec_execute ... ok +test test_java_mutable_builders_and_direct_codecs_execute ... ok +test test_java_direct_nil_lists_choices_and_namespaces ... ok + +test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.43s + + Running tests/test_json.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_json-74440efee0e911e7) + +running 4 tests +test test_polyvalue_direct_json_methods ... ok +test test_json_nested_objects_and_lists ... ok +test test_json_primitives_and_alias_modes ... ok +test test_json_scalar_coercion ... ok + +test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/test_lexical_lists.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_lexical_lists-0f6750d9c4bf9a3c) + +running 2 tests +test named_list_items_enforce_facets_and_enumerations ... ok +test typed_lexical_lists_round_trip_across_codecs ... ok + +test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.31s + + Running tests/test_lexical_union_codegen.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_lexical_union_codegen-3c208893561d2732) + +running 2 tests +test lexical_union_xml_selects_first_valid_member_and_round_trips ... ok +test lexical_unions_are_typed_in_all_targets ... ok + +test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/test_mixed_content.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_mixed_content-1a697ad935ae2797) + +running 5 tests +test mixed_items_field_avoids_existing_attribute_name ... ok +test mixed_content_preserves_nested_child_order ... ok +test mixed_content_preserves_text_and_child_order ... ok +test parser_builds_ordered_mixed_content_union ... ok +test generated_models_keep_typed_content_items_in_all_targets ... ok + +test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/test_pattern_codegen.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_pattern_codegen-5eee5f9fe2ed3d1a) + +running 9 tests +test generated_typescript_pattern_validation_all_backends ... ok +test pattern_restrictions_preserve_or_groups_and_inherited_and_steps ... ok +test gregorian_primitives_emit_validated_types_across_targets ... ok +test generated_python_pattern_validation ... ok +test generated_go_pattern_validation_and_xml_roundtrip ... ok +test generated_rust_pattern_validation_and_xml_roundtrip ... ok +test generated_java_pattern_validation_and_direct_codecs ... ok +test generated_cpp_pattern_validation ... ok +test generated_csharp_pattern_validation ... ok + +test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.05s + + Running tests/test_python_codegen.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_python_codegen-cc734e908fb39fb6) + +running 16 tests +test test_identifier_sanitization ... ok +test multiline_xsd_documentation_stays_inside_python_comments ... ok +test test_python_abstract_meta_emission ... ok +test test_python_any_attribute_codegen ... ok +test test_python_codecs_generation ... ok +test test_python_choice_union_codegen ... ok +test test_python_dataclass_codegen ... ok +test test_python_any_element_codegen ... ok +test test_python_generated_tag_and_custom_header ... ok +test test_python_pydantic_codegen_with_facets ... ok +test test_python_recursive_type_codegen ... ok +test test_python_aot_codegen ... ok +test test_python_derived_meta_inheritance ... ok +test test_python_simplecontent_default_factory ... ok +test test_python_sequence_nested_inside_choice_codegen ... ok +test quoted_docstrings_preserve_text_and_remain_valid_python ... ok + +test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s + + Running tests/test_qualified_attributes.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_qualified_attributes-f8397a31cf1ecf15) + +running 5 tests +test global_attribute_references_round_trip_by_namespace ... ok +test imported_inline_global_attribute_enum_round_trips ... ok +test derived_validators_preserve_base_constraints ... ok +test inherited_attribute_and_distinct_element_keep_separate_property_names ... ok +test lexical_dependencies_compile_and_round_trip_without_implicit_imports ... ok + +test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.28s + + Running tests/test_runtime_fast_paths.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_runtime_fast_paths-7bf9091b7252b7db) + +running 6 tests +test repeated_nested_records_validate_their_own_lexical_lists ... ok +test repeated_lexical_lists_keep_whitespace_validation ... ok +test lexical_list_formatting_preserves_escaping_empty_lists_and_long_numbers ... ok +test indexed_scalar_state_preserves_enum_pattern_and_split_text ... ok +test cached_patterns_keep_raw_restriction_and_trimmed_pattern_semantics ... ok +test unified_scalar_state_keeps_mixed_branch_order_nil_and_nested_frames ... ok + +test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/test_rust_codecs.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_rust_codecs-9692e165bd5e14bf) + +running 4 tests +test test_facet_validation_min_max_length ... ok +test test_order_choice_roundtrip ... ok +test test_empty_element_codec ... ok +test test_recursive_boxing_roundtrip ... ok + +test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/test_rust_codegen.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_rust_codegen-8bce8b4b67c7eca3) + +running 26 tests +test test_rust_attribute_codec_loop_syntax ... ok +test multiline_docs_and_raw_field_names_are_valid_source ... ok +test test_rust_choice_union_codegen ... ok +test test_rust_digit_prefixed_module_sanitization ... ok +test test_rust_codecs_codegen ... ok +test test_rust_enum_and_methods ... ok +test test_rust_extension_base_cycle_cut ... ok +test test_rust_identifier_sanitization ... ok +test test_rust_phf_dispatch_uniquifies_like_field_metas ... ok +test test_rust_owned_codegen ... ok +test test_rust_phf_dispatch_union_groups_branch_tags ... ok +test test_rust_recursive_cycle_boxing ... ok +test test_rust_extension_codecs_decode_and_encode_base_fields ... ok +test test_rust_extension_inlines_base_fields ... ok +test test_rust_rkyv_derives ... ok +test test_rust_zero_copy_codegen ... ok +test test_rust_topological_scc_chunking ... ok +test test_rust_simple_type_cycle_resilience ... ok +test test_rust_simple_content_extension_shadow_rule ... ok +test test_rust_simple_content_text_codec ... ok +test test_rust_read_element_text_accumulates_refs_and_cdata ... ok +test test_rust_phf_dispatch_emission ... ok +test duplicate_wire_names_keep_distinct_json_values ... ok +test binary_lexical_values_compile_and_round_trip_in_owned_and_borrowed_modes ... ok +test empty_modules_compile_without_unused_reexports ... ok +test named_choice_wrappers_round_trip_without_unreachable_dispatch ... ok + +test result: ok. 26 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.07s + + Running tests/test_schema_attribute_entities.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_schema_attribute_entities-ce76904e09cb1816) + +running 4 tests +test malformed_attributes_and_undefined_entities_are_errors_even_in_skipped_content ... ok +test literal_attribute_whitespace_is_normalized_but_character_references_survive ... ok +test namespace_and_qname_attributes_are_normalized_consistently ... ok +test attribute_entities_reach_enum_facets_and_defaults_in_value_space ... ok + +test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/test_schema_audit.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_schema_audit-24992dfb5b4a626c) + +running 13 tests +test derived_simple_type_inherits_base_patterns ... ok +test duplicate_enumeration_values_are_deduped ... ok +test distinct_values_with_colliding_variant_names_stay_unique ... ok +test quick_xml_serde_skips_unknown_elements ... ok +test all_languages_disambiguate_flat_collision ... ok +test generated_rust_has_no_deny_unknown_fields ... ok +test named_group_reference_fields_are_parsed ... ok +test nested_inline_complex_type_is_extracted_not_leaked ... ok +test rust_flat_output_has_no_colliding_type_names ... ok +test simple_content_extension_emits_value_field ... ok +test chameleon_include_adopts_including_namespace_per_includer ... ok +test restricted_simple_types_emit_named_aliases ... ok +test diamond_includes_do_not_duplicate_upa_source_documents ... ok + +test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s + + Running tests/test_schema_ir.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_schema_ir-f793c1b9895343c7) + +running 20 tests +test global_attribute_reference_uses_declared_type ... ok +test consumed_particles_do_not_swallow_following_declarations ... ok +test schema_errors_preserve_forward_imports_and_annotation_payloads ... ok +test consumed_child_subtrees_do_not_swallow_following_types ... ok +test test_language_context_adapter ... ok +test inline_list_item_types_preserve_enum_and_union_declarations ... ok +test test_list_fields_do_not_trigger_spurious_cycles ... ok +test missing_included_schema_is_an_error ... ok +test schema_for_schemas_declared_types_are_not_unknown_builtins ... ok +test derived_complex_type_keeps_base_and_bounded_choice ... ok +test test_tarjan_self_recursive_cycle_detection_and_boxing ... ok +test test_tarjan_mutual_recursive_cycle_detection_and_boxing ... ok +test test_parse_lexical_union_member_types_and_inline_members ... ok +test test_substitution_groups ... ok +test test_minijinja_template_engine_and_filters ... ok +test test_parse_complex_type_and_facets ... ok +test imported_inline_global_attribute_types_are_resolved ... ok +test xml_prefix_is_available_without_explicit_declaration ... ok +test test_parse_choice_as_union ... ok +test test_sequence_nested_inside_choice_preserved_in_ir ... ok + +test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/test_security.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_security-c3afa670f1d6c619) + +running 6 tests +test test_malformed_unclosed_cdata_rejection ... ok +test test_numeric_character_references ... ok +test test_cdata_section_handling ... ok +test unsupported_general_entities_are_rejected ... ok +test test_xml_entity_roundtrip_escaping ... ok +test test_max_depth_recursion_limit ... ok + +test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/test_temporal_union.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_temporal_union-e25d1f9b83e2fdc4) + +running 2 tests +test go_temporal_union_preserves_branches_and_lexicals ... ok +test csharp_temporal_union_preserves_branches_and_lexicals ... ok + +test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.01s + + Running tests/test_transcoder.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_transcoder-6854114408316a2e) + +running 6 tests +test test_schemaless_pretty_transcoding ... ok +test test_transcoder_errors ... ok +test test_schemaless_xml_to_json_and_back ... ok +test test_schemaless_preserves_refs_cdata_and_attr_entities ... ok +test test_schema_from_ir_transcoding ... ok +test test_schema_directed_transcoding ... ok + +test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/test_ts_codegen.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_ts_codegen-4e67290c9758f4d9) + +running 9 tests +test test_ts_backend_from_str_loose ... ok +test test_ts_identifier_sanitization ... ok +test test_ts_recursive_cycle_zod_lazy ... ok +test test_ts_discriminated_union_choice ... ok +test test_ts_typebox_schema_generation ... ok +test test_ts_interface_and_enum_codegen ... ok +test test_ts_valibot_schema_generation ... ok +test test_ts_zod_schema_generation ... ok +test mixed_content_inheritance_compiles_with_widened_items ... ok + +test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.32s + + Running tests/test_ubl_csharp.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_ubl_csharp-b04bc8d2d5f891c2) + +running 2 tests +test unprefixed_xsd_builtin_simple_content_base_uses_default_namespace ... ok +test multi_namespace_roots_and_inherited_simple_content_compile_and_round_trip ... ok + +test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.01s + + Running tests/test_unbounded_choice.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_unbounded_choice-7672e62aa5ecca1a) + +running 1 test +go: creating new go.mod: module testmod +go: to add module requirements and sums: + go mod tidy +=== RUN TestUnboundedChoiceOrder +--- PASS: TestUnboundedChoiceOrder (0.00s) +PASS +ok testmod 0.002s +test test_unbounded_choice_ir_and_all_targets ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s + + Running tests/test_upa.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_upa-a20019d257c7eac5) + +running 6 tests +test local_form_and_in_scope_qnames_distinguish_namespaces ... ok +test model_groups_derivation_and_substitution_members_are_checked ... ok +test imported_groups_and_chameleon_wildcards_keep_source_namespaces ... ok +test optional_siblings_and_choice_lookahead_violate_upa ... ok +test all_groups_and_wildcard_namespaces_are_checked ... ok +test occurrence_ranges_keep_particle_identity_and_count_boundaries ... ok + +test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/test_value_constraints.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_value_constraints-73eb81a96de588c1) + +running 2 tests +test fixed_constraints_cover_input_and_output_in_value_space ... ok +test repeated_particle_cardinality_belongs_to_the_group ... ok + +test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/test_xsi_type.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_xsi_type-2c07a0776bd0ec60) + +running 11 tests +test abstract_type_without_derivations_errors ... ok +test plain_type_attribute_is_not_mistaken_for_dispatch ... ok +test abstract_type_requires_concrete_selector ... ok +test iterparse_dispatches_each_streamed_item ... ok +test from_ir_flattens_base_fields_and_registers_variants ... ok +test nested_xsi_type_dispatch_and_round_trip ... ok +test root_xsi_type_dispatch_including_empty_element ... ok +test nil_abstract_complex_type_skips_concrete_dispatch ... ok +test unknown_xsi_type_on_abstract_type_errors ... ok +test xsi_type_resolves_namespace_inherited_from_parent ... ok +test variant_serialization_requires_namespaces ... ok + +test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/lib.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/polyxml-4ccc220bbd6a27a0) + +running 2 tests +test tests::test_c_abi_namespaced_roundtrip ... ok +test tests::test_c_abi_nested_list_batch_roundtrip ... ok + +test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/lib.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/polyxml_cli-dabf613ae4318f1b) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/main.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/polyxml-cec02944de7101b9) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/test_cli.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/test_cli-714ccf0c30d96734) + +running 47 tests +test fish_completion_filters_values_when_available ... ok +test manifest_generation_does_not_ignore_cli_overrides ... ok +Loading manifest: /tmp/.tmpjIemUz/polyxml.toml +Compiling schema: /tmp/.tmpjIemUz/model.xsd + Namespace: urn:app + Types: 1 total (1 structs, 0 enums, 0 unions, 0 simple restrictions) + Root elements: 0 +Emitting target [csharp] into /tmp/.tmpjIemUz/cs +Emitting target [ts] into /tmp/.tmpjIemUz/ts +Emitting target [go] into /tmp/.tmpjIemUz/go +Emitting target [rust] into /tmp/.tmpjIemUz/rs +Build finished successfully. +Parsing schema: /tmp/.tmpWpQzZc/customer.xsd +test test_cli_build_polyxml_manifest_with_new_features ... ok + Namespace: urn:crm + Types: 1 total (1 structs, 0 enums, 0 unions, 0 simple restrictions) + Root elements: 0 +Code generation complete. +test test_cli_csharp_source_gen_and_record_struct ... ok +test test_cli_generate_custom_header_and_generated_tags ... ok +test test_cli_cpp_modules_and_glaze ... ok +test test_cli_generate_dry_run ... ok +test jackson3_cli_and_manifest_emit_equivalent_models ... ok +test test_cli_generate_help ... ok +test test_cli_generate_multi_lang ... ok +test python_features_respect_manifest_false_values_and_backend ... ok +test imported_substitution_helpers_do_not_require_spurious_module_owners ... ok +Parsing schema: /tmp/.tmpMChXrp/service.xsd +test test_cli_help ... ok + Namespace: urn:service + Types: 1 total (1 structs, 0 enums, 0 unions, 0 simple restrictions) + Root elements: 0 +Code generation complete. +test test_cli_generate_python_backends ... ok +test retained_imported_ordered_helpers_belong_to_the_unique_namespace_module ... ok +test test_cli_generate_rust_zero_copy_and_owned ... ok +Loading manifest: /tmp/.tmpkcpVMJ/polyxml.toml +Compiling schema: /tmp/.tmpkcpVMJ/schema.xsd +Parsing schema: /tmp/.tmpMChXrp/service.xsd + Types: 1 total (1 structs, 0 enums, 0 unions, 0 simple restrictions) + Root elements: 0 +Emitting target [rust] into /tmp/.tmpkcpVMJ/rs + Namespace: urn:service + Types: 1 total (1 structs, 0 enums, 0 unions, 0 simple restrictions) + Root elements: 0 +Code generation complete. +Emitting target [go] into /tmp/.tmpkcpVMJ/go +Emitting target [csharp] into /tmp/.tmpkcpVMJ/cs +Build finished successfully. +test test_cli_go_easyjson_and_sonic_backend ... ok +test test_cli_python_aot_generation ... ok +test test_cli_manifest_custom_header_workspace_and_target_override ... ok +test completion_candidates_follow_target_validation ... ok +test test_cli_python_aot_rejects_dataclass_style_and_slots ... ok +go: creating new go.mod: module crm +Parsing schema: /tmp/.tmp4LMj9p/event.xsd +go: to add module requirements and sums: + go mod tidy + Namespace: urn:events + Types: 1 total (1 structs, 0 enums, 0 unions, 0 simple restrictions) + Root elements: 0 +Code generation complete. +test test_cli_multiple_root_element_selection ... ok +test test_cli_rust_rkyv_feature ... ok +Parsing schema: /tmp/.tmpEAXA5F/event.xsd + Namespace: urn:events + Types: 1 total (1 structs, 0 enums, 0 unions, 0 simple restrictions) + Root elements: 0 +Code generation complete. +test test_cli_rust_phf_feature ... ok +test invalid_schema_grammar_and_types_fail_before_generation ... ok +test test_cli_validate_valid_and_invalid ... ok +test test_cli_transcode_bidirectional ... ok +test bash_completion_filters_values_in_the_shell ... ok +Parsing schema: /tmp/.tmp96Kaev/item.xsd + Namespace: urn:store + Types: 1 total (1 structs, 0 enums, 0 unions, 0 simple restrictions) + Root elements: 0 +Code generation complete. +test test_polyxml_toml_manifest_build ... ok +Parsing schema: /tmp/.tmp96Kaev/item.xsd + Namespace: urn:store + Types: 1 total (1 structs, 0 enums, 0 unions, 0 simple restrictions) + Root elements: 0 +Code generation complete. +test test_cli_typescript_valibot_and_typebox_backend ... ok +test unified_help_shows_generation_options ... ok +test test_cli_root_element_selection ... ok +test test_root_selection_keeps_imported_module_types ... ok +test test_java_csharp_model_style_options_and_manifest ... ok +test unified_manifest_forms_generate_identical_output_and_validate_early ... ok +test zsh_completion_filters_values_when_available ... ok +test unsupported_xsd_alternatives_fail_explicitly ... ok +test validate_and_generate_reject_upa_violations ... ok +test unified_options_fail_before_schema_io_including_dry_run ... ok +test unified_supported_backends_and_styles_validate ... ok +=== RUN TestAccountE2E +--- PASS: TestAccountE2E (0.00s) +PASS +ok crm 0.004s +test test_cli_go_generation ... ok +test test_cli_rust_split_units_and_chunking ... ok +E2E C++20 driver passed! +test test_cli_cpp_generation ... ok +test test_cli_java_generation ... ok +test test_cli_shared_modules_deduplication ... ok + Determining projects to restore... + Restored /tmp/.tmpDBAA8l/cli_csharp_app/CrmCliApp.csproj (in 195 ms). +test test_cli_typescript_generation ... ok + CrmCliApp -> /tmp/.tmpDBAA8l/cli_csharp_app/bin/Debug/net8.0/CrmCliApp.dll + +Build succeeded. + 0 Warning(s) + 0 Error(s) + +Time Elapsed 00:00:01.30 +E2E C# CLI test passed successfully! +test test_cli_csharp_generation ... ok + +test result: ok. 47 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.17s + + Running unittests src/lib.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/polyxml_js-878a75d7b7901cc9) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/lib.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/_polyxml-a668b0910babaf29) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/lib.rs (/home/bailey/github/PolyXML/target/followup-default-verification/debug/deps/polyxml_wasm-d510c7f48918b595) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests polyxml + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests polyxml_cli + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests polyxml_wasm + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + +==> [4/6] Compiling Python PyO3 extension (maturin develop)... +๐Ÿน Building a mixed python/rust project +๐Ÿ Found CPython 3.14 at /home/bailey/github/polyxml-default-literals/.venv/bin/python +๐Ÿ”— Found pyo3 bindings with abi3-py3.12 support +๐Ÿ“ก Using build options features from pyproject.toml +Using Python 3.14.4 environment at: /home/bailey/github/polyxml-default-literals/.venv +Checked 6 packages in 0.55ms + Compiling pyo3-ffi v0.29.2 + Compiling pyo3 v0.29.2 + Compiling polyxml-python v0.34.6 (/home/bailey/github/polyxml-default-literals/crates/polyxml-python) + Finished `dev` profile [unoptimized + debuginfo] target(s) in 2.54s +๐Ÿ“ฆ Built wheel for abi3 Python โ‰ฅ 3.12 to /tmp/.tmpJVA4UN/polyxml-0.34.6-cp312-abi3-linux_x86_64.whl +โœ๏ธ Setting installed package as editable +๐Ÿ›  Installed polyxml-0.34.6 +==> [5/6] Running Python Ruff checks... +All checks passed! +10 files already formatted +==> [6/6] Running Python tests with 100% statement & branch coverage... +........................................................................ [ 62%] +........................................... [100%] +================================ tests coverage ================================ +_______________ coverage: platform linux, python 3.14.4-final-0 ________________ + +Name Stmts Miss Branch BrPart Cover Missing +--------------------------------------------------- +TOTAL 181 0 58 0 100% + +3 files skipped due to complete coverage. +Required test coverage of 100% reached. Total coverage: 100.00% +115 passed in 0.54s +โœจ All PolyXML dual-language quality gates passed! diff --git a/research/data/runtime-followups-2026-10-03/default-literals/seven-backend-cli-smoke.txt b/research/data/runtime-followups-2026-10-03/default-literals/seven-backend-cli-smoke.txt new file mode 100644 index 0000000..437be78 --- /dev/null +++ b/research/data/runtime-followups-2026-10-03/default-literals/seven-backend-cli-smoke.txt @@ -0,0 +1,21 @@ +memcap: <=7775 MiB (60% of 12959 MiB available) [systemd MemoryMax, swap off] +==> Building polyxml CLI binary... +==> Testing code generation across all 7 target ecosystems... + โ€ข Rust (--feature zero-copy,rkyv,phf)... OK + โ€ข Python (dataclasses)... OK + โ€ข Python (pydantic-v2)... OK + โ€ข C++20 (headers + glaze)... OK + โ€ข C++20 (modules)... OK + โ€ข Java 22+ (standard records)... OK + โ€ข Java 22+ (jackson)... OK + โ€ข Java (POJO + builder + direct codec)... OK + โ€ข TypeScript (zod)... OK + โ€ข TypeScript (valibot)... OK + โ€ข TypeScript (typebox)... OK + โ€ข Go (standard)... OK + โ€ข Go (sonic)... OK + โ€ข Go (easyjson)... OK + โ€ข C# (record class)... OK + โ€ข C# (record struct + source-gen)... OK + โ€ข C# (mutable class + source-gen)... OK +โœจ Multi-target smoke verification passed completely across all 7 ecosystems! diff --git a/research/runtime-default-literals-2026-10-03.md b/research/runtime-default-literals-2026-10-03.md new file mode 100644 index 0000000..16fd422 --- /dev/null +++ b/research/runtime-default-literals-2026-10-03.md @@ -0,0 +1,63 @@ +# Generated default and fixed strings โ€” October 3, 2026 + +This branch extends the entity and enum fix in draft PR #138. The implementation +is `cb041c0`; stricter consumer tests and isolated-target test tooling are +`a7ed359`. Main is unchanged. + +## Reproduced failure and fix + +The pre-fix CLI successfully generates a model for +[the fixture](fixtures/default_literal_escaping.xsd), but Python rejects its +source as an unterminated string literal. The default formatter escaped quotes +without correctly escaping backslashes, referenced whitespace or source line +separators. Python default/fixed metadata additionally used Rust Debug Unicode +escapes. Similar gaps existed in C++ string initializers and C# default/fixed +proxy literals. + +Use the existing JSON-compatible literal encoder for Python and C# and the C++ +encoder for its string initializers. C# reparses these lexical values through an +internal XML element; encode carriage returns as ` ` after escaping markup +so XML line-ending normalization does not change referenced carriage returns. + +This fixes literal encoding at these sites. It does not implement missing +default semantics for other field kinds or backends, and it does not claim that +all generated pattern/default literal sites have been audited. + +## Executed consumers + +An independent UTF-8 expected file checks quotes, literal backslash-u text, +tabs, LF, CR, U+0085, U+2028, accented text and an emoji. Execute generated Python +dataclasses and Pydantic models, C++ with `-Wall -Wextra -Werror`, and C# with +`TreatWarningsAsErrors`. Check Python defaults and metadata, the C++ string +initializer, and C# attribute initialization, empty-element defaults, proxy +assignment and fixed-value rejection. The C# consumer targets .NET 8 but executes +on installed .NET 10 with roll-forward; this does not test the minimum runtime. +The actual CLI-generated Python model also matches the independent value. + +## Quality and bounded corpus results + +The complete gate passes 327 Rust tests, strict workspace formatting and Clippy, +Ruff, and 115 Python tests with 100% statement and branch coverage. All seven CLI +backends pass their emission smoke check; the enum test inherited from #138 +also compiles and executes all seven language consumers. + +The first full gate reached Python testing but could not find the CLI it built: +the helper ignored `CARGO_TARGET_DIR`. It now searches that target and avoids an +unrelated global CLI when the override is explicit. Three regressions exercise +absolute/relative targets and building the matching CLI. The smoke script also +honors the target override. The complete retry passes; both logs are retained. + +The companion runner uses the isolated CLI and freshly installed native binding, +whose paths and SHA-256 hashes are recorded. Its summary and failure tables are +byte-identical to the entity-fix comparison: + +| Sample | Schema expectations passed | Instance round trips passed | +| --- | ---: | ---: | +| CType (limit 50; 31 groups available) | 31/31 | 23/28 | +| AttrDecl (first 50 groups) | 50/50 | 50/50 | +| NISTXMLSchemaDatatypes (first 100 groups) | 100/100 | 447/452 | + +Existing failures remain; these bounded runs do not establish full conformance. +[Raw verification logs, source probes and hashes](data/runtime-followups-2026-10-03/default-literals/) +retain the failure preflight and successful retry. Heavy work was serial with +one Cargo worker under the repository memory cap. From 053c2a91f119fd6a968933f52e05d6eacfc0f549 Mon Sep 17 00:00:00 2001 From: Bailey Nguyen Date: Sat, 3 Oct 2026 19:28:40 -0500 Subject: [PATCH 4/4] research: store generated source probes as text artifacts --- .../{baseline-generated.py => baseline-generated.py.txt} | 0 .../{candidate-generated.py => candidate-generated.py.txt} | 0 .../default-literals/manifest.json | 4 ++-- 3 files changed, 2 insertions(+), 2 deletions(-) rename research/data/runtime-followups-2026-10-03/default-literals/{baseline-generated.py => baseline-generated.py.txt} (100%) rename research/data/runtime-followups-2026-10-03/default-literals/{candidate-generated.py => candidate-generated.py.txt} (100%) diff --git a/research/data/runtime-followups-2026-10-03/default-literals/baseline-generated.py b/research/data/runtime-followups-2026-10-03/default-literals/baseline-generated.py.txt similarity index 100% rename from research/data/runtime-followups-2026-10-03/default-literals/baseline-generated.py rename to research/data/runtime-followups-2026-10-03/default-literals/baseline-generated.py.txt diff --git a/research/data/runtime-followups-2026-10-03/default-literals/candidate-generated.py b/research/data/runtime-followups-2026-10-03/default-literals/candidate-generated.py.txt similarity index 100% rename from research/data/runtime-followups-2026-10-03/default-literals/candidate-generated.py rename to research/data/runtime-followups-2026-10-03/default-literals/candidate-generated.py.txt diff --git a/research/data/runtime-followups-2026-10-03/default-literals/manifest.json b/research/data/runtime-followups-2026-10-03/default-literals/manifest.json index c12a7d7..b70291a 100644 --- a/research/data/runtime-followups-2026-10-03/default-literals/manifest.json +++ b/research/data/runtime-followups-2026-10-03/default-literals/manifest.json @@ -11,7 +11,7 @@ "sha256": "ddf82c002fd4720aafe8d74fa0d49f09619193d2a92ec23183e5dbab2fa1a709", "bytes": 2994 }, - "baseline-generated.py": { + "baseline-generated.py.txt": { "sha256": "c66125c0928585c0bd40817717fb9fb268d3d879350dc677bcb814e2fda49fdd", "bytes": 2206 }, @@ -19,7 +19,7 @@ "sha256": "01223a5bcb064d6c146bacce42196f6aad63b98f5a3aafcf446dea4665c3118d", "bytes": 503 }, - "candidate-generated.py": { + "candidate-generated.py.txt": { "sha256": "94fe949fe13914d18a6fc1349ec08d139d6782fda534c637508c170f8d05fbaf", "bytes": 2224 },