From 57b95c2af866f900bd6bcd108ae270afc3419da0 Mon Sep 17 00:00:00 2001 From: Mathieu BISKUPSKI Date: Sat, 20 Jun 2026 14:36:14 +0200 Subject: [PATCH] Prepare 0.3.9: add CHANGELOG.md + regression tests for #56/#60 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CHANGELOG.md (new): itemises 0.3.9 — #56 (CDATA delimiter fix), #59 (next!/prev!), #60 (escape AbstractString), #64 (OrderedCollections v2 compat); notes the move to JuliaData. Changelog starts at 0.3.9 (earlier history via releases/tags). test/runtests.jl: regression tests for the two fixes that merged without their own coverage — prev() across a CDATA section (#56) and escape(::SubString) (#60). Co-Authored-By: Claude Opus 4.8 (1M context) --- CHANGELOG.md | 26 ++++++++++++++++++++++++++ test/runtests.jl | 8 ++++++++ 2 files changed, 34 insertions(+) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..b84da1b --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,26 @@ +# Changelog + +Itemised from v0.3.9 onward; for earlier releases see the +[GitHub releases](https://github.com/JuliaData/XML.jl/releases) and git tags. +Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). + +## [0.3.9] - 2026-06-20 + +First release since XML.jl moved to [JuliaData](https://github.com/JuliaData/XML.jl) (transferred from JuliaComputing). + +### Added +- `next!` and `prev!` for in-place, zero-allocation forward/backward traversal of `LazyNode` ([#59]). + +### Fixed +- CDATA sections are now read and written with the spec-correct `` delimiter. + The previous `", 1)) == "a&b<c>" # #60: SubString input (was a MethodError) n = Element("tag", Text(s)) @test XML.simple_value(n) == s @@ -202,6 +203,13 @@ end n=XML.prev(n) text_content = XML.write(n) @test text_content == "\n \n hello\n hello preserve \n \n \n" + # #56: prev must cross a CDATA section (the call itself threw before the delimiter fix) + cdoc = XML.parse(XML.LazyNode, "xy") + cb = XML.children(XML.children(cdoc)[1])[3] # the element + cp = XML.prev(cb) + @test cp isa XML.LazyNode # does not throw + @test XML.nodetype(cp) == XML.CData + @test XML.value(cp) == "hello" end @testset "depth and parent" begin