From 6b2eef6dbc9583c1a70f48ce353ef1a9cac220e9 Mon Sep 17 00:00:00 2001 From: Kesara Rathnayake Date: Wed, 2 Aug 2023 14:07:43 +1200 Subject: [PATCH] fix: Avoid running v2v3 conversion and preptool on prepped documents Fixes #1013 --- Makefile | 5 +++-- tests/input/elements.xml | 1 - tests/input/rfc7911.xml | 2 -- xml2rfc/run.py | 27 +++++++++++++++------------ 4 files changed, 18 insertions(+), 17 deletions(-) diff --git a/Makefile b/Makefile index 439d1002f..3c80c2711 100644 --- a/Makefile +++ b/Makefile @@ -26,6 +26,7 @@ datetime_regex = [0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][T_ ][0-9][0-9]:[0-9] version_regex = [Vv]ersion [23N]\(\.[0-9N]\+\)\+\(\.dev\)\? date_regex = \([0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]\|\([0-9]\([0-9]\)\? \)\?[ADFJMOS][a-u]\* [12][0-9][0-9][0-9]\) legacydate_regex = [ADFJMOS][a-u]* [123]*[0-9], [12][0-9][0-9][0-9]$$ +expire_regex = This Internet-Draft will expire on.*$ generator_regex = name="generator" libversion_regex = \(pyflakes\|PyYAML\|requests\|setuptools\|six\|Weasyprint\) [0-9]\+\(\.[0-9]\+\)* @@ -130,10 +131,10 @@ tests/out/%.prepped.xml: tests/input/%.xml tests/out/%.v3.html tests/out/%.text @PS4=" " /bin/bash -cx "xml2rfc --skip-config --allow-local-file-access --cache \"$${IETF_TEST_CACHE_PATH}\" --no-network --out $@ --prep $<" @echo " Checking generation of .html from prepped .xml" @PS4=" " /bin/bash -cx "xml2rfc --skip-config --allow-local-file-access --cache \"$${IETF_TEST_CACHE_PATH}\" --no-network --out $(basename $@).html --html --external-css --external-js --legacy-date-format --no-inline-version $@" 2> /dev/null || { err=$$?; echo "Error output when generating .html from prepped .xml"; exit $$err; } - @diff -u -I '$(datetime_regex)' -I '$(version_regex)' -I '$(date_regex)' -I '$(generator_regex)' -I 'rel="alternate"' tests/out/$(notdir $(basename $(basename $@))).v3.html $(basename $@).html || { echo "Diff failed for $(basename $@).html output (2)"; exit 1; } + @diff -u -I '$(datetime_regex)' -I '$(version_regex)' -I '$(date_regex)' -I '$(legacydate_regex)' -I '$(expire_regex)' -I '$(generator_regex)' -I 'rel="alternate"' tests/out/$(notdir $(basename $(basename $@))).v3.html $(basename $@).html || { echo "Diff failed for $(basename $@).html output (2)"; exit 1; } @echo " Checking generation of .text from prepped .xml" @PS4=" " /bin/bash -cx "xml2rfc --skip-config --allow-local-file-access --cache \"$${IETF_TEST_CACHE_PATH}\" --no-network --out $(basename $@).text --text --no-pagination --external-css --external-js --legacy-date-format $@" 2> /dev/null || { err=$$?; echo "Error output when generating .text from prepped .xml"; exit $$err; } - @diff -u -I '$(datetime_regex)' -I '$(version_regex)' -I '$(date_regex)' -I '$(generator_regex)' -I 'rel="alternate"' tests/out/$(notdir $(basename $(basename $@))).text $(basename $@).text || { echo "Diff failed for $(basename $@).text output (3)"; exit 1; } + @diff -u -I '$(datetime_regex)' -I '$(version_regex)' -I '$(date_regex)' -I '$(legacydate_regex)' -I '$(expire_regex)' -I '$(generator_regex)' -I 'rel="alternate"' tests/out/$(notdir $(basename $(basename $@))).text $(basename $@).text || { echo "Diff failed for $(basename $@).text output (3)"; exit 1; } tests/out/docfile.xml: @PS4=" " /bin/bash -cx "xml2rfc --skip-config --allow-local-file-access --cache \"$${IETF_TEST_CACHE_PATH}\" --no-network --doc --out $@" diff --git a/tests/input/elements.xml b/tests/input/elements.xml index 549757194..c066b9de0 100644 --- a/tests/input/elements.xml +++ b/tests/input/elements.xml @@ -1270,7 +1270,6 @@ for opt, value in opts:
Wide artwork - 0 1 2 3 4 5 6 7 123456789012345678901234567890123456789012345678901234567890123456789012 diff --git a/tests/input/rfc7911.xml b/tests/input/rfc7911.xml index f80a25e5c..237d75ca7 100644 --- a/tests/input/rfc7911.xml +++ b/tests/input/rfc7911.xml @@ -7,8 +7,6 @@ - - Advertisement of Multiple Paths in BGP diff --git a/xml2rfc/run.py b/xml2rfc/run.py index 32f73d4b9..d8a60195d 100755 --- a/xml2rfc/run.py +++ b/xml2rfc/run.py @@ -720,10 +720,11 @@ def main(): if not filename: filename = basename + '.txt' options.output_filename = filename - v2v3 = xml2rfc.V2v3XmlWriter(xmlrfc, options=options, date=options.date) - xmlrfc.tree = v2v3.convert2to3() - prep = xml2rfc.PrepToolWriter(xmlrfc, options=options, date=options.date, liberal=True, keep_pis=[xml2rfc.V3_PI_TARGET]) - xmlrfc.tree = prep.prep() + if not xmlrfc.tree.getroot().get('prepTime'): + v2v3 = xml2rfc.V2v3XmlWriter(xmlrfc, options=options, date=options.date) + xmlrfc.tree = v2v3.convert2to3() + prep = xml2rfc.PrepToolWriter(xmlrfc, options=options, date=options.date, liberal=True, keep_pis=[xml2rfc.V3_PI_TARGET]) + xmlrfc.tree = prep.prep() if xmlrfc.tree: writer = xml2rfc.TextWriter(xmlrfc, options=options, date=options.date) writer.write(filename) @@ -735,10 +736,11 @@ def main(): if not filename: filename = basename + '.html' options.output_filename = filename - v2v3 = xml2rfc.V2v3XmlWriter(xmlrfc, options=options, date=options.date) - xmlrfc.tree = v2v3.convert2to3() - prep = xml2rfc.PrepToolWriter(xmlrfc, options=options, date=options.date, liberal=True, keep_pis=[xml2rfc.V3_PI_TARGET]) - xmlrfc.tree = prep.prep() + if not xmlrfc.tree.getroot().get('prepTime'): + v2v3 = xml2rfc.V2v3XmlWriter(xmlrfc, options=options, date=options.date) + xmlrfc.tree = v2v3.convert2to3() + prep = xml2rfc.PrepToolWriter(xmlrfc, options=options, date=options.date, liberal=True, keep_pis=[xml2rfc.V3_PI_TARGET]) + xmlrfc.tree = prep.prep() if xmlrfc.tree: writer = xml2rfc.HtmlWriter(xmlrfc, options=options, date=options.date) writer.write(filename) @@ -750,10 +752,11 @@ def main(): if not filename: filename = basename + '.pdf' options.output_filename = filename - v2v3 = xml2rfc.V2v3XmlWriter(xmlrfc, options=options, date=options.date) - xmlrfc.tree = v2v3.convert2to3() - prep = xml2rfc.PrepToolWriter(xmlrfc, options=options, date=options.date, liberal=True, keep_pis=[xml2rfc.V3_PI_TARGET]) - xmlrfc.tree = prep.prep() + if not xmlrfc.tree.getroot().get('prepTime'): + v2v3 = xml2rfc.V2v3XmlWriter(xmlrfc, options=options, date=options.date) + xmlrfc.tree = v2v3.convert2to3() + prep = xml2rfc.PrepToolWriter(xmlrfc, options=options, date=options.date, liberal=True, keep_pis=[xml2rfc.V3_PI_TARGET]) + xmlrfc.tree = prep.prep() if xmlrfc.tree: writer = xml2rfc.PdfWriter(xmlrfc, options=options, date=options.date) writer.write(filename)