From 0849baef1e6844c85956e4e56db681d78af1b5cc Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Mon, 18 Dec 2023 12:06:59 -0800 Subject: Add custom validate-docx.sh script. This checks files other than document.xml in a docx container. Thanks to @edwintorok. --- Makefile | 2 +- tools/validate-docx.sh | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 tools/validate-docx.sh diff --git a/Makefile b/Makefile index 3d7de48aa..616390e33 100644 --- a/Makefile +++ b/Makefile @@ -239,7 +239,7 @@ validate-docx-golden-tests: ## validate docx golden tests against schema which xmllint || ("xmllint is required" && exit 1) test -d ./docx-validator || \ git clone https://github.com/devoidfury/docx-validator - cd docx-validator && for f in ../test/docx/golden/*.docx; do ./validate $$f || exit 1 ; done + sh ./tools/validate-docx.sh test/docx/golden/*.docx .PHONY: validate-docx-golden-tests validate-epub: ## generate an epub and validate it with epubcheck diff --git a/tools/validate-docx.sh b/tools/validate-docx.sh new file mode 100644 index 000000000..99874111b --- /dev/null +++ b/tools/validate-docx.sh @@ -0,0 +1,21 @@ +#!/bin/sh +# Modified by edwintorok from https://github.com/devoidfury/docx-validator +# to look at more files than just document.xml. +# Further modified by jgm for portability. +tmpdir=$(mktemp -d) +errors=0 +for file in "$@"; do + echo "*** Checking $file" + rm -rf "$tmpdir" + unzip -q -o -j "$file" -d "$tmpdir" + for i in comments document fontTable footnotes numbering settings styles theme1 webSettings; do + xmllint --format "$tmpdir/${i}.xml" > "$tmpdir/${i}-pretty.xml" + done + XSD="./docx-validator/schemas/microsoft/wml-2010.xsd" + for i in "$tmpdir"/*-pretty.xml; do + xmllint -noout -nonet \ + -schema "${XSD}" \ + "${i}" 2>&1 || errors=$((errors + 1)) + done +done +exit $errors -- cgit v1.2.3