From b96491cb652473b2137d837bdebe350a6e5f747e Mon Sep 17 00:00:00 2001 From: Maxim Ivanov Date: Tue, 26 Aug 2025 10:40:40 +0700 Subject: [PATCH 1/9] Bump version to 0.1.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index af0170d..01571fa 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = 'setuptools.build_meta' [project] name = 'xmlassert' -version = '0.1.0rc4' +version = '0.1.0' description = 'Human-readable XML comparison for testing with clean diff output' readme = 'README.md' requires-python = '>=3.8' From 2883b702b9ae258ecacb798cdfe063680d6735e6 Mon Sep 17 00:00:00 2001 From: Maxim Ivanov Date: Tue, 26 Aug 2025 10:23:36 +0700 Subject: [PATCH 2/9] Extend classifiers to Python 3.13 --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index 01571fa..34e17ea 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,6 +23,7 @@ classifiers = [ 'Programming Language :: Python :: 3.10', 'Programming Language :: Python :: 3.11', 'Programming Language :: Python :: 3.12', + 'Programming Language :: Python :: 3.13', 'Topic :: Software Development :: Testing', 'Topic :: Text Processing :: Markup :: XML', ] From e3eb1df778a4ffad98e9d4f9a8a6078271b856c7 Mon Sep 17 00:00:00 2001 From: Maxim Ivanov Date: Tue, 26 Aug 2025 10:24:02 +0700 Subject: [PATCH 3/9] Make installation section in README non-pending --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 14d161b..c9bb197 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ it ignores formatting differences and focuses on semantic equivalence. - **Secure parsing**: Uses secure XML parsing practices by default - **Test-friendly**: Perfect for `pytest`, `unittest`, and other testing frameworks -## Installation (IN PROGRESS) +## Installation ```bash pip install xmlassert From 3dc0393b597b9c877848afe9430243576d3d1c75 Mon Sep 17 00:00:00 2001 From: Maxim Ivanov Date: Tue, 26 Aug 2025 10:26:32 +0700 Subject: [PATCH 4/9] Add missing "to be" --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c9bb197..014ee64 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ pip install xmlassert ``` python from xmlassert import assert_xml_equal -# These will pass (formatting differences ignored) +# These will pass (formatting differences are ignored) assert_xml_equal("text", "\n text\n") # This will fail with a clean diff @@ -45,7 +45,7 @@ except AssertionError as e: ``` python from xmlassert import assert_xml_equal -# Passes - formatting differences ignored +# Passes - formatting differences are ignored xml1 = "value" xml2 = """ From 85639c3928bf8936c16bf7f975ececea20a0c651 Mon Sep 17 00:00:00 2001 From: Maxim Ivanov Date: Tue, 26 Aug 2025 10:46:04 +0700 Subject: [PATCH 5/9] Add Links section into README.md --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 014ee64..678b685 100644 --- a/README.md +++ b/README.md @@ -108,3 +108,10 @@ Instead of the unreadable: ``` AssertionError: XML mismatch: expected value != actual value ``` + +## Links + +- [PyPI Package](https://pypi.org/project/xmlassert/) +- [Source Code](https://github.com/ivanovmg/xmlassert) +- [Issue Tracker](https://github.com/ivanovmg/xmlassert/issues) +- [Changelog](CHANGELOG.md) From daa4bdfa2b49ab5836c968c9b5053d64f7d0d1bd Mon Sep 17 00:00:00 2001 From: Maxim Ivanov Date: Tue, 26 Aug 2025 10:47:28 +0700 Subject: [PATCH 6/9] Add "Why xmlassert?" section --- README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/README.md b/README.md index 678b685..4fce9ef 100644 --- a/README.md +++ b/README.md @@ -109,6 +109,21 @@ Instead of the unreadable: AssertionError: XML mismatch: expected value != actual value ``` +## Why xmlassert? + +Compared to other XML testing approaches: + +| Feature | xmlassert | `xml.etree` | `xmlunit` | string compare | +|---------|-----------|-------------|-----------|----------------| +| Human-readable diffs | [x] | [ ] | [~] | [ ] | +| Formatting-agnostic | [x] | [ ] | [x] | [ ] | +| Easy to use | [x] | [~] | [~] | [x] | +| Secure parsing | [x] | [~] | [x] | [ ] | + +- [x] = Fully supported +- [~] = Partial support +- [ ] = Not supported + ## Links - [PyPI Package](https://pypi.org/project/xmlassert/) From b619590a4d9a72bc380fe6c8b1182914948ff842 Mon Sep 17 00:00:00 2001 From: Maxim Ivanov Date: Tue, 26 Aug 2025 10:48:47 +0700 Subject: [PATCH 7/9] Add Troubleshooting section --- README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/README.md b/README.md index 4fce9ef..7cf1c4a 100644 --- a/README.md +++ b/README.md @@ -109,6 +109,20 @@ Instead of the unreadable: AssertionError: XML mismatch: expected value != actual value ``` +## Troubleshooting + +### Namespace Handling +XML namespaces are compared strictly. +Ensure your XML uses consistent namespace declarations. + +### Large XML Documents +For very large documents, consider using dedicated XML diff tools. +`xmlassert` is optimized for test-sized XML snippets. + +### Encoding Issues +Ensure both XML strings use the same encoding (UTF-8 recommended). + + ## Why xmlassert? Compared to other XML testing approaches: From 600f48c2ee932ed6a8bb20405d5dc09d5a758b88 Mon Sep 17 00:00:00 2001 From: Maxim Ivanov Date: Tue, 26 Aug 2025 10:59:25 +0700 Subject: [PATCH 8/9] FIX: rendering of checkmarks and x-marks in table --- README.md | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 7cf1c4a..b6f7a34 100644 --- a/README.md +++ b/README.md @@ -127,16 +127,13 @@ Ensure both XML strings use the same encoding (UTF-8 recommended). Compared to other XML testing approaches: -| Feature | xmlassert | `xml.etree` | `xmlunit` | string compare | +| Feature | `xmlassert` | `xml.etree` | `xmlunit` | string compare | |---------|-----------|-------------|-----------|----------------| -| Human-readable diffs | [x] | [ ] | [~] | [ ] | -| Formatting-agnostic | [x] | [ ] | [x] | [ ] | -| Easy to use | [x] | [~] | [~] | [x] | -| Secure parsing | [x] | [~] | [x] | [ ] | - -- [x] = Fully supported -- [~] = Partial support -- [ ] = Not supported +| Human-readable diffs | Yes | No | Partial | No | +| Formatting-agnostic | Yes | No | Yes | No | +| Easy to use | Yes | Partial | Partial | Yes | +| Secure parsing | Yes | Partial | Yes | No | + ## Links From a101506ae4a2bbc017093797ac31821b12991530 Mon Sep 17 00:00:00 2001 From: Maxim Ivanov Date: Tue, 26 Aug 2025 11:00:48 +0700 Subject: [PATCH 9/9] FIX: changelog release date --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 431180c..e407fa9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # CHANGELOG -## v0.1.0 (2025-08-25) +## v0.1.0 (2025-08-26) **Initial Release**