From 3590b5b7a1688dfc8b19c77dac6154ba772a224c Mon Sep 17 00:00:00 2001 From: Jason Fox Date: Tue, 29 Aug 2023 10:47:33 +0200 Subject: [PATCH] Revert "Release preparation" This reverts commit 256a9f2f7e9927941517067fe4edaf447917b4cf. --- .github/workflows/ci.yml | 43 +++ pom.xml | 101 +++++++ src/com/here/validate/markdown/Analysis.java | 26 ++ .../here/validate/markdown/Diagnostic.java | 73 +++++ src/com/here/validate/markdown/Header.java | 92 ++++++ src/com/here/validate/markdown/Role.java | 21 ++ src/com/here/validate/markdown/Xref.java | 24 ++ .../here/validate/tasks/LowerCaseTask.java | 71 +++++ .../validate/tasks/MarkdownAnalyseTask.java | 148 ++++++++++ .../here/validate/tasks/MarkdownFixTask.java | 125 ++++++++ .../validate/tasks/MarkdownValidateTask.java | 118 ++++++++ .../here/validate/tasks/ResultEchoTask.java | 63 ++++ .../resources/com/here/validate/antlib.xml | 277 ++++++++++++++++++ test/appendices-href-missing/build.xml | 11 + test/appendices-href-missing/document.ditamap | 9 + test/appendices-href-missing/expected.svrl | 9 + test/appendices-href-missing/topic.dita | 10 + test/blacklisted-word/build.xml | 11 + test/blacklisted-word/document.ditamap | 7 + test/blacklisted-word/expected.svrl | 4 + test/blacklisted-word/incorrect-spelling.dita | 24 ++ .../boolean-deprecated.dita | 25 ++ test/boolean-deprecated/build.xml | 11 + test/boolean-deprecated/document.ditamap | 7 + test/boolean-deprecated/expected.svrl | 9 + test/bootstrap.xml | 13 + test/chapter-href-missing/build.xml | 11 + test/chapter-href-missing/document.ditamap | 9 + test/chapter-href-missing/expected.svrl | 9 + test/chapter-href-missing/topic.dita | 10 + test/codeblock-outputclass-missing/build.xml | 11 + .../codeblock-outputclass-missing.dita | 23 ++ .../document.ditamap | 7 + .../expected.svrl | 9 + test/codeblock-scale-missing/build.xml | 11 + .../codeblock-scale-missing.dita | 23 ++ test/codeblock-scale-missing/document.ditamap | 7 + test/codeblock-scale-missing/expected.svrl | 9 + test/colsep-invalid/build.xml | 11 + test/colsep-invalid/colsep-invalid.dita | 37 +++ test/colsep-invalid/document.ditamap | 7 + test/colsep-invalid/expected.svrl | 9 + test/colspec-colnum-not-unique/build.xml | 11 + .../colspec-colnum-not-unique.dita | 47 +++ .../document.ditamap | 7 + test/colspec-colnum-not-unique/expected.svrl | 13 + test/comment-fixme/build.xml | 11 + test/comment-fixme/comment-fixme.dita | 20 ++ test/comment-fixme/document.ditamap | 7 + test/comment-fixme/expected.svrl | 11 + test/comment-todo/build.xml | 11 + test/comment-todo/comment-todo.dita | 20 ++ test/comment-todo/document.ditamap | 7 + test/comment-todo/expected.svrl | 11 + test/conref-external-file-exists/build.xml | 11 + .../conref-external-file-not-found.dita | 22 ++ .../document.ditamap | 7 + .../conref-external-file-exists/expected.svrl | 9 + test/conref-external-file-not-found/build.xml | 11 + .../conref-external-file-not-found-bad.dita | 19 ++ .../document.ditamap | 7 + .../expected.svrl | 13 + test/conref-external-id-exists/build.xml | 11 + .../conref-external-id-not-found.dita | 23 ++ .../document.ditamap | 7 + test/conref-external-id-exists/expected.svrl | 9 + test/conref-external-id-mismatch/build.xml | 11 + .../conref-external-id-mismatch-bad.dita | 20 ++ .../document.ditamap | 7 + .../conref-external-id-mismatch/expected.svrl | 13 + test/conref-external-id-not-found/build.xml | 11 + ...onref-external-id-not-found-no-exists.dita | 20 ++ .../document.ditamap | 7 + .../expected.svrl | 13 + .../conref-external-id-type-matches/build.xml | 11 + .../conref-external-id-mismatch.dita | 23 ++ .../document.ditamap | 7 + .../expected.svrl | 9 + test/conref-external-path-exists/build.xml | 11 + .../conref-external-path-not-found.dita | 27 ++ .../document.ditamap | 7 + .../conref-external-path-exists/expected.svrl | 9 + test/conref-external-path-mismatch/build.xml | 11 + .../conref-external-path-mismatch-bad.dita | 20 ++ .../document.ditamap | 7 + .../expected.svrl | 13 + test/conref-external-path-not-found/build.xml | 11 + .../conref-external-path-not-found-bad.dita | 24 ++ .../document.ditamap | 7 + .../expected.svrl | 13 + .../build.xml | 11 + .../conref-external-path-mismatch.dita | 23 ++ .../document.ditamap | 7 + .../expected.svrl | 9 + test/conref-internal-id-exists/build.xml | 11 + .../conref-internal-id-not-found.dita | 24 ++ .../document.ditamap | 7 + test/conref-internal-id-exists/expected.svrl | 4 + test/conref-internal-id-not-found/build.xml | 11 + ...onref-internal-id-not-found-no-exists.dita | 25 ++ .../document.ditamap | 7 + .../expected.svrl | 9 + test/conref-internal-path-exists/build.xml | 11 + .../conref-internal-path-not-found.dita | 27 ++ .../document.ditamap | 7 + .../conref-internal-path-exists/expected.svrl | 4 + test/conref-internal-path-not-found/build.xml | 11 + .../conref-internal-path-not-found-bad.dita | 26 ++ .../document.ditamap | 7 + .../expected.svrl | 13 + test/conref-not-lower-case/build.xml | 11 + .../conref-not-lower-case.dita | 20 ++ test/conref-not-lower-case/document.ditamap | 7 + test/conref-not-lower-case/expected.svrl | 17 ++ test/coverage.xml | 64 ++++ test/fig-id-invalid/build.xml | 11 + test/fig-id-invalid/document.ditamap | 7 + test/fig-id-invalid/expected.svrl | 9 + test/fig-id-invalid/fig-id-invalid.dita | 27 ++ .../graphics/something-after.png | Bin 0 -> 3288 bytes .../graphics/something-before.png | Bin 0 -> 2772 bytes test/fig-title-missing/build.xml | 11 + test/fig-title-missing/document.ditamap | 7 + test/fig-title-missing/expected.svrl | 9 + test/fig-title-missing/fig-title-missing.dita | 26 ++ .../graphics/something-after.png | Bin 0 -> 3288 bytes .../graphics/something-before.png | Bin 0 -> 2772 bytes .../FILE-NOT-LOWER-CASE.dita | 16 + test/file-not-lower-case/build.xml | 11 + test/file-not-lower-case/document.ditamap | 7 + test/file-not-lower-case/expected.svrl | 13 + test/href-not-lower-case-image/build.xml | 11 + .../document.ditamap | 7 + test/href-not-lower-case-image/expected.svrl | 17 ++ .../href-not-lower-case-image.dita | 18 ++ test/href-not-lower-case-xref/build.xml | 11 + .../href-not-lower-case-xref/document.ditamap | 7 + test/href-not-lower-case-xref/expected.svrl | 41 +++ .../href-not-lower-case-xref.dita | 22 ++ test/id-blacklisted/build.xml | 11 + test/id-blacklisted/document.ditamap | 7 + test/id-blacklisted/expected.svrl | 4 + test/id-blacklisted/id-blacklisted.dita | 25 ++ test/id-not-lower-case-dl/build.xml | 11 + test/id-not-lower-case-dl/document.ditamap | 7 + test/id-not-lower-case-dl/expected.svrl | 9 + .../id-not-lower-case-dl.dita | 37 +++ test/id-not-lower-case-ol/build.xml | 11 + test/id-not-lower-case-ol/document.ditamap | 7 + test/id-not-lower-case-ol/expected.svrl | 9 + .../id-not-lower-case-ol.dita | 34 +++ test/id-not-lower-case-paragraph/build.xml | 11 + .../document.ditamap | 7 + .../id-not-lower-case-paragraph/expected.svrl | 9 + .../id-not-lower-case-paragraph.dita | 22 ++ test/id-not-lower-case-row/build.xml | 11 + test/id-not-lower-case-row/document.ditamap | 7 + test/id-not-lower-case-row/expected.svrl | 9 + .../id-not-lower-case-row.dita | 37 +++ test/id-not-lower-case-section/build.xml | 11 + .../document.ditamap | 7 + test/id-not-lower-case-section/expected.svrl | 9 + .../id-not-lower-case-section.dita | 22 ++ test/id-not-lower-case-sl/build.xml | 11 + test/id-not-lower-case-sl/document.ditamap | 7 + test/id-not-lower-case-sl/expected.svrl | 9 + .../id-not-lower-case-sl.dita | 27 ++ test/id-not-lower-case-topic/build.xml | 11 + test/id-not-lower-case-topic/document.ditamap | 7 + test/id-not-lower-case-topic/expected.svrl | 9 + .../id-not-lower-case-topic.dita | 27 ++ test/id-not-lower-case-ul/build.xml | 11 + test/id-not-lower-case-ul/document.ditamap | 7 + test/id-not-lower-case-ul/expected.svrl | 9 + .../id-not-lower-case-ul.dita | 28 ++ test/id-not-unique-bad/build.xml | 11 + test/id-not-unique-bad/document.ditamap | 7 + test/id-not-unique-bad/expected.svrl | 9 + test/id-not-unique-bad/id-not-unique-bad.dita | 29 ++ test/id-not-unique/build.xml | 11 + test/id-not-unique/document.ditamap | 7 + test/id-not-unique/expected.svrl | 4 + test/id-not-unique/id-not-unique.dita | 26 ++ test/image-alt-deprecated/build.xml | 11 + test/image-alt-deprecated/document.ditamap | 7 + test/image-alt-deprecated/expected.svrl | 9 + .../graphics/SAMPLE-JPEG.jpg | Bin 0 -> 4032 bytes .../graphics/sample-gif.gif | Bin 0 -> 2287 bytes .../graphics/sample-jpeg.jpeg | Bin 0 -> 4032 bytes .../graphics/sample-jpg.jpg | Bin 0 -> 4032 bytes .../graphics/sample-svg.svg | 258 ++++++++++++++++ .../graphics/something-after.png | Bin 0 -> 3288 bytes .../graphics/something-before.png | Bin 0 -> 2772 bytes .../image-alt-deprecated.dita | 21 ++ test/image-file-not-found/build.xml | 11 + test/image-file-not-found/document.ditamap | 7 + test/image-file-not-found/expected.svrl | 13 + .../graphics/SAMPLE-JPEG.jpg | Bin 0 -> 4032 bytes .../graphics/sample-gif.gif | Bin 0 -> 2287 bytes .../graphics/sample-jpeg.jpeg | Bin 0 -> 4032 bytes .../graphics/sample-jpg.jpg | Bin 0 -> 4032 bytes .../graphics/sample-svg.svg | 258 ++++++++++++++++ .../graphics/something-after.png | Bin 0 -> 3288 bytes .../graphics/something-before.png | Bin 0 -> 2772 bytes .../image-file-not-found.dita | 18 ++ test/image-file-type-not-supported/build.xml | 11 + .../document.ditamap | 7 + .../expected.svrl | 13 + .../graphics/SAMPLE-JPEG.jpg | Bin 0 -> 4032 bytes .../graphics/sample-gif.gif | Bin 0 -> 2287 bytes .../graphics/sample-jpeg.jpeg | Bin 0 -> 4032 bytes .../graphics/sample-jpg.jpg | Bin 0 -> 4032 bytes .../graphics/sample-svg.svg | 258 ++++++++++++++++ .../graphics/something-after.png | Bin 0 -> 3288 bytes .../graphics/something-before.png | Bin 0 -> 2772 bytes .../image-file-type-not-supported.dita | 21 ++ test/image-longdescref-deprecated/build.xml | 11 + .../document.ditamap | 7 + .../expected.svrl | 9 + .../graphics/SAMPLE-JPEG.jpg | Bin 0 -> 4032 bytes .../graphics/sample-gif.gif | Bin 0 -> 2287 bytes .../graphics/sample-jpeg.jpeg | Bin 0 -> 4032 bytes .../graphics/sample-jpg.jpg | Bin 0 -> 4032 bytes .../graphics/sample-svg.svg | 258 ++++++++++++++++ .../graphics/something-after.png | Bin 0 -> 3288 bytes .../graphics/something-before.png | Bin 0 -> 2772 bytes .../image-longdescref-deprecated.dita | 20 ++ test/incorrect-capitalization/build.xml | 11 + .../incorrect-capitalization/document.ditamap | 7 + test/incorrect-capitalization/expected.svrl | 37 +++ .../incorrect-capitalization.dita | 31 ++ test/list-all-li-filtered/build.xml | 11 + test/list-all-li-filtered/document.ditamap | 7 + test/list-all-li-filtered/expected.svrl | 21 ++ .../list-all-li-filtered.dita | 41 +++ test/markdown-fix/build.xml | 14 + test/markdown-fix/document.ditamap | 12 + test/markdown-fix/expected.txt | 21 ++ test/markdown-fix/test.properties | 1 + test/markdown-fix/topic1.md | 11 + test/markdown-fix/topic1.txt | 16 + test/markdown-fix/topic2.md | 7 + test/markdown-fix/topic2.txt | 7 + test/markdown-fix/topic3.mdita | 7 + test/markdown-fix/topic3.txt | 7 + test/markdown-fix/topic4.mdita | 11 + test/markdown-fix/topic4.txt | 11 + test/markdown-validate/build.xml | 13 + test/markdown-validate/document.ditamap | 12 + test/markdown-validate/expected.svrl | 21 ++ test/markdown-validate/topic1.md | 16 + test/markdown-validate/topic2.md | 7 + test/markdown-validate/topic3.mdita | 7 + test/markdown-validate/topic4.mdita | 11 + test/notices-href-missing/build.xml | 11 + test/notices-href-missing/document.ditamap | 9 + test/notices-href-missing/expected.svrl | 9 + test/notices-href-missing/topic.dita | 10 + test/rowsep-invalid/build.xml | 11 + test/rowsep-invalid/document.ditamap | 7 + test/rowsep-invalid/expected.svrl | 9 + test/rowsep-invalid/rowsep-invalid.dita | 37 +++ test/running-text-fixme/build.xml | 11 + test/running-text-fixme/document.ditamap | 7 + test/running-text-fixme/expected.svrl | 12 + .../running-text-fixme.dita | 25 ++ test/running-text-lorem-ipsum/build.xml | 11 + .../running-text-lorem-ipsum/document.ditamap | 7 + test/running-text-lorem-ipsum/expected.svrl | 11 + .../running-text-lorem-ipsum.dita | 11 + test/running-text-todo/build.xml | 11 + test/running-text-todo/document.ditamap | 7 + test/running-text-todo/expected.svrl | 12 + test/running-text-todo/running-text-todo.dita | 25 ++ test/section-id-missing/build.xml | 11 + test/section-id-missing/document.ditamap | 7 + test/section-id-missing/expected.svrl | 9 + .../section-id-missing.dita | 23 ++ test/table-all-rows-filtered/build.xml | 11 + test/table-all-rows-filtered/document.ditamap | 7 + test/table-all-rows-filtered/expected.svrl | 13 + .../table-all-rows-filtered.dita | 59 ++++ test/table-id-invalid/build.xml | 11 + test/table-id-invalid/document.ditamap | 7 + test/table-id-invalid/expected.svrl | 9 + test/table-id-invalid/table-id-invalid.dita | 50 ++++ test/test.properties | 1 + test/tgroup-cols-colspec-mismatch/build.xml | 11 + .../document.ditamap | 7 + .../expected.svrl | 9 + .../tgroup-cols-colspec-mismatch.dita | 57 ++++ test/tgroup-cols-entry-mismatch-bad/build.xml | 11 + .../document.ditamap | 7 + .../expected.svrl | 9 + .../tgroup-cols-entry-mismatch-bad.dita | 57 ++++ test/tgroup-cols-entry-mismatch/build.xml | 11 + .../document.ditamap | 7 + test/tgroup-cols-entry-mismatch/expected.svrl | 4 + .../tgroup-cols-entry-mismatch.dita | 47 +++ test/topicref-href-missing/build.xml | 11 + test/topicref-href-missing/document.ditamap | 7 + test/topicref-href-missing/expected.svrl | 9 + test/xref-external-file-not-found/build.xml | 11 + .../document.ditamap | 7 + .../expected.svrl | 13 + .../xref-external-file-not-found.dita | 18 ++ test/xref-external-id-not-found/build.xml | 11 + .../document.ditamap | 7 + test/xref-external-id-not-found/expected.svrl | 13 + .../xref-external-id-not-found.dita | 18 ++ test/xref-external-path-not-found/build.xml | 11 + .../document.ditamap | 7 + .../expected.svrl | 13 + .../xref-external-path-not-found.dita | 18 ++ test/xref-internal-id-not-found/build.xml | 11 + .../document.ditamap | 7 + test/xref-internal-id-not-found/expected.svrl | 9 + .../xref-internal-id-not-found.dita | 18 ++ test/xref-internal-path-not-found/build.xml | 11 + .../document.ditamap | 7 + .../expected.svrl | 9 + .../xref-internal-path-not-found.dita | 18 ++ test/xref-no-format-internal/build.xml | 11 + test/xref-no-format-internal/document.ditamap | 7 + test/xref-no-format-internal/expected.svrl | 41 +++ .../xref-no-format-internal.dita | 22 ++ test/xref-no-format-other/build.xml | 11 + test/xref-no-format-other/document.ditamap | 7 + test/xref-no-format-other/expected.svrl | 13 + .../xref-no-format-other.dita | 20 ++ test/xref-no-format-www/build.xml | 11 + test/xref-no-format-www/document.ditamap | 7 + test/xref-no-format-www/expected.svrl | 13 + .../xref-no-format-www.dita | 20 ++ test/xref-www-format-invalid/build.xml | 11 + test/xref-www-format-invalid/document.ditamap | 7 + test/xref-www-format-invalid/expected.svrl | 17 ++ .../xref-www-format-invalid.dita | 23 ++ test/xref-www-scope-invalid/build.xml | 11 + test/xref-www-scope-invalid/document.ditamap | 7 + test/xref-www-scope-invalid/expected.svrl | 17 ++ .../xref-www-scope-invalid.dita | 23 ++ 342 files changed, 6311 insertions(+) create mode 100644 .github/workflows/ci.yml create mode 100644 pom.xml create mode 100644 src/com/here/validate/markdown/Analysis.java create mode 100644 src/com/here/validate/markdown/Diagnostic.java create mode 100644 src/com/here/validate/markdown/Header.java create mode 100644 src/com/here/validate/markdown/Role.java create mode 100644 src/com/here/validate/markdown/Xref.java create mode 100644 src/com/here/validate/tasks/LowerCaseTask.java create mode 100644 src/com/here/validate/tasks/MarkdownAnalyseTask.java create mode 100644 src/com/here/validate/tasks/MarkdownFixTask.java create mode 100644 src/com/here/validate/tasks/MarkdownValidateTask.java create mode 100644 src/com/here/validate/tasks/ResultEchoTask.java create mode 100644 src/main/resources/com/here/validate/antlib.xml create mode 100644 test/appendices-href-missing/build.xml create mode 100644 test/appendices-href-missing/document.ditamap create mode 100644 test/appendices-href-missing/expected.svrl create mode 100644 test/appendices-href-missing/topic.dita create mode 100644 test/blacklisted-word/build.xml create mode 100644 test/blacklisted-word/document.ditamap create mode 100644 test/blacklisted-word/expected.svrl create mode 100644 test/blacklisted-word/incorrect-spelling.dita create mode 100644 test/boolean-deprecated/boolean-deprecated.dita create mode 100644 test/boolean-deprecated/build.xml create mode 100644 test/boolean-deprecated/document.ditamap create mode 100644 test/boolean-deprecated/expected.svrl create mode 100644 test/bootstrap.xml create mode 100644 test/chapter-href-missing/build.xml create mode 100644 test/chapter-href-missing/document.ditamap create mode 100644 test/chapter-href-missing/expected.svrl create mode 100644 test/chapter-href-missing/topic.dita create mode 100644 test/codeblock-outputclass-missing/build.xml create mode 100644 test/codeblock-outputclass-missing/codeblock-outputclass-missing.dita create mode 100644 test/codeblock-outputclass-missing/document.ditamap create mode 100644 test/codeblock-outputclass-missing/expected.svrl create mode 100644 test/codeblock-scale-missing/build.xml create mode 100644 test/codeblock-scale-missing/codeblock-scale-missing.dita create mode 100644 test/codeblock-scale-missing/document.ditamap create mode 100644 test/codeblock-scale-missing/expected.svrl create mode 100644 test/colsep-invalid/build.xml create mode 100644 test/colsep-invalid/colsep-invalid.dita create mode 100644 test/colsep-invalid/document.ditamap create mode 100644 test/colsep-invalid/expected.svrl create mode 100644 test/colspec-colnum-not-unique/build.xml create mode 100644 test/colspec-colnum-not-unique/colspec-colnum-not-unique.dita create mode 100644 test/colspec-colnum-not-unique/document.ditamap create mode 100644 test/colspec-colnum-not-unique/expected.svrl create mode 100644 test/comment-fixme/build.xml create mode 100644 test/comment-fixme/comment-fixme.dita create mode 100644 test/comment-fixme/document.ditamap create mode 100644 test/comment-fixme/expected.svrl create mode 100644 test/comment-todo/build.xml create mode 100644 test/comment-todo/comment-todo.dita create mode 100644 test/comment-todo/document.ditamap create mode 100644 test/comment-todo/expected.svrl create mode 100644 test/conref-external-file-exists/build.xml create mode 100644 test/conref-external-file-exists/conref-external-file-not-found.dita create mode 100644 test/conref-external-file-exists/document.ditamap create mode 100644 test/conref-external-file-exists/expected.svrl create mode 100644 test/conref-external-file-not-found/build.xml create mode 100644 test/conref-external-file-not-found/conref-external-file-not-found-bad.dita create mode 100644 test/conref-external-file-not-found/document.ditamap create mode 100644 test/conref-external-file-not-found/expected.svrl create mode 100644 test/conref-external-id-exists/build.xml create mode 100644 test/conref-external-id-exists/conref-external-id-not-found.dita create mode 100644 test/conref-external-id-exists/document.ditamap create mode 100644 test/conref-external-id-exists/expected.svrl create mode 100644 test/conref-external-id-mismatch/build.xml create mode 100644 test/conref-external-id-mismatch/conref-external-id-mismatch-bad.dita create mode 100644 test/conref-external-id-mismatch/document.ditamap create mode 100644 test/conref-external-id-mismatch/expected.svrl create mode 100644 test/conref-external-id-not-found/build.xml create mode 100644 test/conref-external-id-not-found/conref-external-id-not-found-no-exists.dita create mode 100644 test/conref-external-id-not-found/document.ditamap create mode 100644 test/conref-external-id-not-found/expected.svrl create mode 100644 test/conref-external-id-type-matches/build.xml create mode 100644 test/conref-external-id-type-matches/conref-external-id-mismatch.dita create mode 100644 test/conref-external-id-type-matches/document.ditamap create mode 100644 test/conref-external-id-type-matches/expected.svrl create mode 100644 test/conref-external-path-exists/build.xml create mode 100644 test/conref-external-path-exists/conref-external-path-not-found.dita create mode 100644 test/conref-external-path-exists/document.ditamap create mode 100644 test/conref-external-path-exists/expected.svrl create mode 100644 test/conref-external-path-mismatch/build.xml create mode 100644 test/conref-external-path-mismatch/conref-external-path-mismatch-bad.dita create mode 100644 test/conref-external-path-mismatch/document.ditamap create mode 100644 test/conref-external-path-mismatch/expected.svrl create mode 100644 test/conref-external-path-not-found/build.xml create mode 100644 test/conref-external-path-not-found/conref-external-path-not-found-bad.dita create mode 100644 test/conref-external-path-not-found/document.ditamap create mode 100644 test/conref-external-path-not-found/expected.svrl create mode 100644 test/conref-external-path-type-matches/build.xml create mode 100644 test/conref-external-path-type-matches/conref-external-path-mismatch.dita create mode 100644 test/conref-external-path-type-matches/document.ditamap create mode 100644 test/conref-external-path-type-matches/expected.svrl create mode 100644 test/conref-internal-id-exists/build.xml create mode 100644 test/conref-internal-id-exists/conref-internal-id-not-found.dita create mode 100644 test/conref-internal-id-exists/document.ditamap create mode 100644 test/conref-internal-id-exists/expected.svrl create mode 100644 test/conref-internal-id-not-found/build.xml create mode 100644 test/conref-internal-id-not-found/conref-internal-id-not-found-no-exists.dita create mode 100644 test/conref-internal-id-not-found/document.ditamap create mode 100644 test/conref-internal-id-not-found/expected.svrl create mode 100644 test/conref-internal-path-exists/build.xml create mode 100644 test/conref-internal-path-exists/conref-internal-path-not-found.dita create mode 100644 test/conref-internal-path-exists/document.ditamap create mode 100644 test/conref-internal-path-exists/expected.svrl create mode 100644 test/conref-internal-path-not-found/build.xml create mode 100644 test/conref-internal-path-not-found/conref-internal-path-not-found-bad.dita create mode 100644 test/conref-internal-path-not-found/document.ditamap create mode 100644 test/conref-internal-path-not-found/expected.svrl create mode 100644 test/conref-not-lower-case/build.xml create mode 100644 test/conref-not-lower-case/conref-not-lower-case.dita create mode 100644 test/conref-not-lower-case/document.ditamap create mode 100644 test/conref-not-lower-case/expected.svrl create mode 100644 test/coverage.xml create mode 100644 test/fig-id-invalid/build.xml create mode 100644 test/fig-id-invalid/document.ditamap create mode 100644 test/fig-id-invalid/expected.svrl create mode 100644 test/fig-id-invalid/fig-id-invalid.dita create mode 100644 test/fig-id-invalid/graphics/something-after.png create mode 100644 test/fig-id-invalid/graphics/something-before.png create mode 100644 test/fig-title-missing/build.xml create mode 100644 test/fig-title-missing/document.ditamap create mode 100644 test/fig-title-missing/expected.svrl create mode 100644 test/fig-title-missing/fig-title-missing.dita create mode 100644 test/fig-title-missing/graphics/something-after.png create mode 100644 test/fig-title-missing/graphics/something-before.png create mode 100644 test/file-not-lower-case/FILE-NOT-LOWER-CASE.dita create mode 100644 test/file-not-lower-case/build.xml create mode 100644 test/file-not-lower-case/document.ditamap create mode 100644 test/file-not-lower-case/expected.svrl create mode 100644 test/href-not-lower-case-image/build.xml create mode 100644 test/href-not-lower-case-image/document.ditamap create mode 100644 test/href-not-lower-case-image/expected.svrl create mode 100644 test/href-not-lower-case-image/href-not-lower-case-image.dita create mode 100644 test/href-not-lower-case-xref/build.xml create mode 100644 test/href-not-lower-case-xref/document.ditamap create mode 100644 test/href-not-lower-case-xref/expected.svrl create mode 100644 test/href-not-lower-case-xref/href-not-lower-case-xref.dita create mode 100644 test/id-blacklisted/build.xml create mode 100644 test/id-blacklisted/document.ditamap create mode 100644 test/id-blacklisted/expected.svrl create mode 100644 test/id-blacklisted/id-blacklisted.dita create mode 100644 test/id-not-lower-case-dl/build.xml create mode 100644 test/id-not-lower-case-dl/document.ditamap create mode 100644 test/id-not-lower-case-dl/expected.svrl create mode 100644 test/id-not-lower-case-dl/id-not-lower-case-dl.dita create mode 100644 test/id-not-lower-case-ol/build.xml create mode 100644 test/id-not-lower-case-ol/document.ditamap create mode 100644 test/id-not-lower-case-ol/expected.svrl create mode 100644 test/id-not-lower-case-ol/id-not-lower-case-ol.dita create mode 100644 test/id-not-lower-case-paragraph/build.xml create mode 100644 test/id-not-lower-case-paragraph/document.ditamap create mode 100644 test/id-not-lower-case-paragraph/expected.svrl create mode 100644 test/id-not-lower-case-paragraph/id-not-lower-case-paragraph.dita create mode 100644 test/id-not-lower-case-row/build.xml create mode 100644 test/id-not-lower-case-row/document.ditamap create mode 100644 test/id-not-lower-case-row/expected.svrl create mode 100644 test/id-not-lower-case-row/id-not-lower-case-row.dita create mode 100644 test/id-not-lower-case-section/build.xml create mode 100644 test/id-not-lower-case-section/document.ditamap create mode 100644 test/id-not-lower-case-section/expected.svrl create mode 100644 test/id-not-lower-case-section/id-not-lower-case-section.dita create mode 100644 test/id-not-lower-case-sl/build.xml create mode 100644 test/id-not-lower-case-sl/document.ditamap create mode 100644 test/id-not-lower-case-sl/expected.svrl create mode 100644 test/id-not-lower-case-sl/id-not-lower-case-sl.dita create mode 100644 test/id-not-lower-case-topic/build.xml create mode 100644 test/id-not-lower-case-topic/document.ditamap create mode 100644 test/id-not-lower-case-topic/expected.svrl create mode 100644 test/id-not-lower-case-topic/id-not-lower-case-topic.dita create mode 100644 test/id-not-lower-case-ul/build.xml create mode 100644 test/id-not-lower-case-ul/document.ditamap create mode 100644 test/id-not-lower-case-ul/expected.svrl create mode 100644 test/id-not-lower-case-ul/id-not-lower-case-ul.dita create mode 100644 test/id-not-unique-bad/build.xml create mode 100644 test/id-not-unique-bad/document.ditamap create mode 100644 test/id-not-unique-bad/expected.svrl create mode 100644 test/id-not-unique-bad/id-not-unique-bad.dita create mode 100644 test/id-not-unique/build.xml create mode 100644 test/id-not-unique/document.ditamap create mode 100644 test/id-not-unique/expected.svrl create mode 100644 test/id-not-unique/id-not-unique.dita create mode 100644 test/image-alt-deprecated/build.xml create mode 100644 test/image-alt-deprecated/document.ditamap create mode 100644 test/image-alt-deprecated/expected.svrl create mode 100644 test/image-alt-deprecated/graphics/SAMPLE-JPEG.jpg create mode 100644 test/image-alt-deprecated/graphics/sample-gif.gif create mode 100644 test/image-alt-deprecated/graphics/sample-jpeg.jpeg create mode 100644 test/image-alt-deprecated/graphics/sample-jpg.jpg create mode 100644 test/image-alt-deprecated/graphics/sample-svg.svg create mode 100644 test/image-alt-deprecated/graphics/something-after.png create mode 100644 test/image-alt-deprecated/graphics/something-before.png create mode 100644 test/image-alt-deprecated/image-alt-deprecated.dita create mode 100644 test/image-file-not-found/build.xml create mode 100644 test/image-file-not-found/document.ditamap create mode 100644 test/image-file-not-found/expected.svrl create mode 100644 test/image-file-not-found/graphics/SAMPLE-JPEG.jpg create mode 100644 test/image-file-not-found/graphics/sample-gif.gif create mode 100644 test/image-file-not-found/graphics/sample-jpeg.jpeg create mode 100644 test/image-file-not-found/graphics/sample-jpg.jpg create mode 100644 test/image-file-not-found/graphics/sample-svg.svg create mode 100644 test/image-file-not-found/graphics/something-after.png create mode 100644 test/image-file-not-found/graphics/something-before.png create mode 100644 test/image-file-not-found/image-file-not-found.dita create mode 100644 test/image-file-type-not-supported/build.xml create mode 100644 test/image-file-type-not-supported/document.ditamap create mode 100644 test/image-file-type-not-supported/expected.svrl create mode 100644 test/image-file-type-not-supported/graphics/SAMPLE-JPEG.jpg create mode 100644 test/image-file-type-not-supported/graphics/sample-gif.gif create mode 100644 test/image-file-type-not-supported/graphics/sample-jpeg.jpeg create mode 100644 test/image-file-type-not-supported/graphics/sample-jpg.jpg create mode 100644 test/image-file-type-not-supported/graphics/sample-svg.svg create mode 100644 test/image-file-type-not-supported/graphics/something-after.png create mode 100644 test/image-file-type-not-supported/graphics/something-before.png create mode 100644 test/image-file-type-not-supported/image-file-type-not-supported.dita create mode 100644 test/image-longdescref-deprecated/build.xml create mode 100644 test/image-longdescref-deprecated/document.ditamap create mode 100644 test/image-longdescref-deprecated/expected.svrl create mode 100644 test/image-longdescref-deprecated/graphics/SAMPLE-JPEG.jpg create mode 100644 test/image-longdescref-deprecated/graphics/sample-gif.gif create mode 100644 test/image-longdescref-deprecated/graphics/sample-jpeg.jpeg create mode 100644 test/image-longdescref-deprecated/graphics/sample-jpg.jpg create mode 100644 test/image-longdescref-deprecated/graphics/sample-svg.svg create mode 100644 test/image-longdescref-deprecated/graphics/something-after.png create mode 100644 test/image-longdescref-deprecated/graphics/something-before.png create mode 100644 test/image-longdescref-deprecated/image-longdescref-deprecated.dita create mode 100644 test/incorrect-capitalization/build.xml create mode 100644 test/incorrect-capitalization/document.ditamap create mode 100644 test/incorrect-capitalization/expected.svrl create mode 100644 test/incorrect-capitalization/incorrect-capitalization.dita create mode 100644 test/list-all-li-filtered/build.xml create mode 100644 test/list-all-li-filtered/document.ditamap create mode 100644 test/list-all-li-filtered/expected.svrl create mode 100644 test/list-all-li-filtered/list-all-li-filtered.dita create mode 100644 test/markdown-fix/build.xml create mode 100644 test/markdown-fix/document.ditamap create mode 100644 test/markdown-fix/expected.txt create mode 100644 test/markdown-fix/test.properties create mode 100644 test/markdown-fix/topic1.md create mode 100644 test/markdown-fix/topic1.txt create mode 100644 test/markdown-fix/topic2.md create mode 100644 test/markdown-fix/topic2.txt create mode 100644 test/markdown-fix/topic3.mdita create mode 100644 test/markdown-fix/topic3.txt create mode 100644 test/markdown-fix/topic4.mdita create mode 100644 test/markdown-fix/topic4.txt create mode 100644 test/markdown-validate/build.xml create mode 100644 test/markdown-validate/document.ditamap create mode 100644 test/markdown-validate/expected.svrl create mode 100644 test/markdown-validate/topic1.md create mode 100644 test/markdown-validate/topic2.md create mode 100644 test/markdown-validate/topic3.mdita create mode 100644 test/markdown-validate/topic4.mdita create mode 100644 test/notices-href-missing/build.xml create mode 100644 test/notices-href-missing/document.ditamap create mode 100644 test/notices-href-missing/expected.svrl create mode 100644 test/notices-href-missing/topic.dita create mode 100644 test/rowsep-invalid/build.xml create mode 100644 test/rowsep-invalid/document.ditamap create mode 100644 test/rowsep-invalid/expected.svrl create mode 100644 test/rowsep-invalid/rowsep-invalid.dita create mode 100644 test/running-text-fixme/build.xml create mode 100644 test/running-text-fixme/document.ditamap create mode 100644 test/running-text-fixme/expected.svrl create mode 100644 test/running-text-fixme/running-text-fixme.dita create mode 100644 test/running-text-lorem-ipsum/build.xml create mode 100644 test/running-text-lorem-ipsum/document.ditamap create mode 100644 test/running-text-lorem-ipsum/expected.svrl create mode 100644 test/running-text-lorem-ipsum/running-text-lorem-ipsum.dita create mode 100644 test/running-text-todo/build.xml create mode 100644 test/running-text-todo/document.ditamap create mode 100644 test/running-text-todo/expected.svrl create mode 100644 test/running-text-todo/running-text-todo.dita create mode 100644 test/section-id-missing/build.xml create mode 100644 test/section-id-missing/document.ditamap create mode 100644 test/section-id-missing/expected.svrl create mode 100644 test/section-id-missing/section-id-missing.dita create mode 100644 test/table-all-rows-filtered/build.xml create mode 100644 test/table-all-rows-filtered/document.ditamap create mode 100644 test/table-all-rows-filtered/expected.svrl create mode 100644 test/table-all-rows-filtered/table-all-rows-filtered.dita create mode 100644 test/table-id-invalid/build.xml create mode 100644 test/table-id-invalid/document.ditamap create mode 100644 test/table-id-invalid/expected.svrl create mode 100644 test/table-id-invalid/table-id-invalid.dita create mode 100644 test/test.properties create mode 100644 test/tgroup-cols-colspec-mismatch/build.xml create mode 100644 test/tgroup-cols-colspec-mismatch/document.ditamap create mode 100644 test/tgroup-cols-colspec-mismatch/expected.svrl create mode 100644 test/tgroup-cols-colspec-mismatch/tgroup-cols-colspec-mismatch.dita create mode 100644 test/tgroup-cols-entry-mismatch-bad/build.xml create mode 100644 test/tgroup-cols-entry-mismatch-bad/document.ditamap create mode 100644 test/tgroup-cols-entry-mismatch-bad/expected.svrl create mode 100644 test/tgroup-cols-entry-mismatch-bad/tgroup-cols-entry-mismatch-bad.dita create mode 100644 test/tgroup-cols-entry-mismatch/build.xml create mode 100644 test/tgroup-cols-entry-mismatch/document.ditamap create mode 100644 test/tgroup-cols-entry-mismatch/expected.svrl create mode 100644 test/tgroup-cols-entry-mismatch/tgroup-cols-entry-mismatch.dita create mode 100644 test/topicref-href-missing/build.xml create mode 100644 test/topicref-href-missing/document.ditamap create mode 100644 test/topicref-href-missing/expected.svrl create mode 100644 test/xref-external-file-not-found/build.xml create mode 100644 test/xref-external-file-not-found/document.ditamap create mode 100644 test/xref-external-file-not-found/expected.svrl create mode 100644 test/xref-external-file-not-found/xref-external-file-not-found.dita create mode 100644 test/xref-external-id-not-found/build.xml create mode 100644 test/xref-external-id-not-found/document.ditamap create mode 100644 test/xref-external-id-not-found/expected.svrl create mode 100644 test/xref-external-id-not-found/xref-external-id-not-found.dita create mode 100644 test/xref-external-path-not-found/build.xml create mode 100644 test/xref-external-path-not-found/document.ditamap create mode 100644 test/xref-external-path-not-found/expected.svrl create mode 100644 test/xref-external-path-not-found/xref-external-path-not-found.dita create mode 100644 test/xref-internal-id-not-found/build.xml create mode 100644 test/xref-internal-id-not-found/document.ditamap create mode 100644 test/xref-internal-id-not-found/expected.svrl create mode 100644 test/xref-internal-id-not-found/xref-internal-id-not-found.dita create mode 100644 test/xref-internal-path-not-found/build.xml create mode 100644 test/xref-internal-path-not-found/document.ditamap create mode 100644 test/xref-internal-path-not-found/expected.svrl create mode 100644 test/xref-internal-path-not-found/xref-internal-path-not-found.dita create mode 100644 test/xref-no-format-internal/build.xml create mode 100644 test/xref-no-format-internal/document.ditamap create mode 100644 test/xref-no-format-internal/expected.svrl create mode 100644 test/xref-no-format-internal/xref-no-format-internal.dita create mode 100644 test/xref-no-format-other/build.xml create mode 100644 test/xref-no-format-other/document.ditamap create mode 100644 test/xref-no-format-other/expected.svrl create mode 100644 test/xref-no-format-other/xref-no-format-other.dita create mode 100644 test/xref-no-format-www/build.xml create mode 100644 test/xref-no-format-www/document.ditamap create mode 100644 test/xref-no-format-www/expected.svrl create mode 100644 test/xref-no-format-www/xref-no-format-www.dita create mode 100644 test/xref-www-format-invalid/build.xml create mode 100644 test/xref-www-format-invalid/document.ditamap create mode 100644 test/xref-www-format-invalid/expected.svrl create mode 100644 test/xref-www-format-invalid/xref-www-format-invalid.dita create mode 100644 test/xref-www-scope-invalid/build.xml create mode 100644 test/xref-www-scope-invalid/document.ditamap create mode 100644 test/xref-www-scope-invalid/expected.svrl create mode 100644 test/xref-www-scope-invalid/xref-www-scope-invalid.dita diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..50c4ca9 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,43 @@ +name: CI +'on': + push: + branches: + - master + pull_request: + branches: + - master + workflow_dispatch: null +jobs: + sonarcloud: + name: SonarCloud Scan + runs-on: ubuntu-latest + steps: + - name: Git checkout + uses: actions/checkout@v3 + - name: Use Java 17 + uses: actions/setup-java@v3 + with: + java-version: 17 + distribution: 'zulu' + - name: SonarCloud Scan + uses: jason-fox/sonarcloud-action@master + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SONAR_CLOUD_LOGIN: ${{ secrets.SONAR_CLOUD_LOGIN }} + + unit-test: + name: Unit Tests + runs-on: ubuntu-latest + steps: + - name: Git checkout + uses: actions/checkout@v3 + - name: Run DITA-OT Unit Test + uses: jason-fox/dita-unit-test-action@master + with: + dita-ot-version: '4.1.1' + plugin: 'com.here.validate.svrl' + - uses: actions/upload-artifact@v3 + if: always() + with: + name: test-results + path: test-results.html diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..569aee3 --- /dev/null +++ b/pom.xml @@ -0,0 +1,101 @@ + + 4.0.0 + com.here + validate + 1.1 + + + + org.apache.ant + ant + [1.10.9,) + + + + + com.here.validate.svrl + dita-ot-plugins + cfg,src,xsl,Customization + src + target/classes/com/here/validate/tasks,target/classes/com/here/validate/markdown + lib/ant-*.jar + test,sample + src/com/here/validate/tasks/**,src/com/here/validate/markdown + https://sonarcloud.io + coverage.xml + coverage.html,test-results.html,pom.xml,coverage.xml + + + + + src + + + maven-clean-plugin + 3.1.0 + + + + lib + + + + + + + + maven-dependency-plugin + 3.6.0 + + + generate-resources + + copy-dependencies + + + ${basedir}/lib + runtime + + + + + + + maven-compiler-plugin + 3.11.0 + + 1.8 + 1.8 + ${compilerArgument} + + + + + org.apache.maven.plugins + maven-jar-plugin + 3.3.0 + + ${basedir}/lib + + + + + org.sonarsource.scanner.maven + sonar-maven-plugin + 3.9.1.2184 + + + verify + + sonar + + + + + + + diff --git a/src/com/here/validate/markdown/Analysis.java b/src/com/here/validate/markdown/Analysis.java new file mode 100644 index 0000000..783ef2e --- /dev/null +++ b/src/com/here/validate/markdown/Analysis.java @@ -0,0 +1,26 @@ +/* + * This file is part of the DITA-OT Validation Plug-in project. + * See the accompanying LICENSE file for applicable licenses. + */ + +package com.here.validate.markdown; + +import java.util.List; + +public class Analysis { + private List
headers; + private List xrefs; + + public Analysis(List
headers, List xrefs) { + this.headers = headers; + this.xrefs = xrefs; + } + + public List
getHeaders() { + return this.headers; + } + + public List getXrefs() { + return this.xrefs; + } +} diff --git a/src/com/here/validate/markdown/Diagnostic.java b/src/com/here/validate/markdown/Diagnostic.java new file mode 100644 index 0000000..2a68699 --- /dev/null +++ b/src/com/here/validate/markdown/Diagnostic.java @@ -0,0 +1,73 @@ +/** + * This file is part of the DITA-OT Validation Plug-in project. + * See the accompanying LICENSE file for applicable licenses. + */ + +package com.here.validate.markdown; + +public enum Diagnostic { + TEXT_BEFORE_HEADER( + "text-before-header", + "Text was found before the first header", + Role.WARNING.getText() + ), + HEADERS_NOT_FOUND("headers-not-found", + "No Headers found in file", + Role.ERROR.getText()), + HEADER_DEPTH_INVALID( + "header-depth-invalid", + "Header depth invalid - expected %1 but was %2", + Role.ERROR.getText() + ), + HEADER_DEPTH_TOO_DEEP( + "header-depth-too-deep", + "Header depth too deep - level %1 is not allowed in MDITA", + Role.ERROR.getText() + ); + + private final String text; + private final String role; + private final String id; + + Diagnostic(String id, String text, String role) { + this.id = id; + this.text = text; + this.role = role; + } + + private String getErrorText(String arg1, String arg2) { + return this.text.replace("%1", arg1).replace("%2", arg2); + } + + public String failedAssert(Header header) { + return this.failedAssert( + header.getLine(), + "h" + String.valueOf(header.getDepth()), + String.valueOf(header.getExpectedDepth()), + String.valueOf(header.getDepth()) + ); + } + + public String failedAssert(int line, String element) { + return this.failedAssert(line, element, "", ""); + } + + private String failedAssert( + int line, + String element, + String arg1, + String arg2 + ) { + String failure = + "\t\n"; + failure = + failure + "\t\t"; + failure = + failure + "Line " + line + ": " + element + " - [" + this.id + "]\n"; + failure = failure + this.getErrorText(arg1, arg2); + failure = failure + "\t\t\n"; + failure = failure + "\t\n"; + + return failure; + } +} diff --git a/src/com/here/validate/markdown/Header.java b/src/com/here/validate/markdown/Header.java new file mode 100644 index 0000000..9f267d8 --- /dev/null +++ b/src/com/here/validate/markdown/Header.java @@ -0,0 +1,92 @@ +/* + * This file is part of the DITA-OT Validation Plug-in project. + * See the accompanying LICENSE file for applicable licenses. + */ + +package com.here.validate.markdown; + +public class Header { + private int line; + private String text; + private int depth; + private int expectedDepth; + private int parent; + + public Header( + int line, + String text, + int depth, + int expectedDepth, + int parent + ) { + this.line = line; + this.text = text; + this.depth = depth; + this.expectedDepth = expectedDepth; + this.parent = parent; + } + + public int getLine() { + return this.line; + } + + public String getText() { + return this.text; + } + + public int getDepth() { + return this.depth; + } + + public int getExpectedDepth() { + return this.expectedDepth; + } + + public int getParent() { + return this.parent; + } + + public void setLine(int line) { + this.line = line; + } + + public void setText(String text) { + this.text = text; + } + + public void setDepth(int depth) { + this.depth = depth; + } + + public void setExpectedDepth(int expectedDepth) { + this.expectedDepth = expectedDepth; + } + + public void setParent(int parent) { + this.parent = parent; + } + + public boolean isInvalid() { + return this.depth != this.expectedDepth; + } + + public boolean isTooDeep() { + return this.expectedDepth > 2; + } + + @Override + public String toString() { + return ( + " line: " + + line + + " text: " + + text + + " depth: " + + depth + + " expectedDepth: " + + expectedDepth + + " parent: " + + parent + ); + } +} diff --git a/src/com/here/validate/markdown/Role.java b/src/com/here/validate/markdown/Role.java new file mode 100644 index 0000000..3721da8 --- /dev/null +++ b/src/com/here/validate/markdown/Role.java @@ -0,0 +1,21 @@ +/** + * This file is part of the DITA-OT Validation Plug-in project. + * See the accompanying LICENSE file for applicable licenses. + */ + +package com.here.validate.markdown; + +public enum Role { + FATAL ("fatal"), + ERROR ("error"), + WARNING ("warning"); + Role(String text) { + this.text = text; + } + + private final String text; + + public String getText() { + return this.text; + } +} \ No newline at end of file diff --git a/src/com/here/validate/markdown/Xref.java b/src/com/here/validate/markdown/Xref.java new file mode 100644 index 0000000..4d6ec14 --- /dev/null +++ b/src/com/here/validate/markdown/Xref.java @@ -0,0 +1,24 @@ +/* + * This file is part of the DITA-OT Validation Plug-in project. + * See the accompanying LICENSE file for applicable licenses. + */ + +package com.here.validate.markdown; + +public class Xref { + private String href; + private boolean external; + + public Xref(String href, boolean external) { + this.href = href; + this.external = external; + } + + public String getHref() { + return this.href; + } + + public boolean isExternal() { + return this.external; + } +} diff --git a/src/com/here/validate/tasks/LowerCaseTask.java b/src/com/here/validate/tasks/LowerCaseTask.java new file mode 100644 index 0000000..122d4b9 --- /dev/null +++ b/src/com/here/validate/tasks/LowerCaseTask.java @@ -0,0 +1,71 @@ +/* + * This file is part of the DITA-OT Validation Plug-in project. + * See the accompanying LICENSE file for applicable licenses. + */ + +package com.here.validate.tasks; + +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.Task; + +// +// Copy existing file to avoid running a real text-speech service +// + +public class LowerCaseTask extends Task { + /** + * Field string. + */ + private String string; + + /** + * Field to. + */ + private String to; + + /** + * Creates a new LowerCaseTask instance. + */ + public LowerCaseTask() { + super(); + this.string = null; + this.to = null; + } + + /** + * Method setString. + * + * @param string String + */ + public void setString(String string) { + this.string = string; + } + + /** + * Method setTo. + * + * @param to String + */ + public void setTo(String to) { + this.to = to; + } + + /** + * Method execute. + * + * @throws BuildException if something goes wrong + */ + @Override + public void execute() { + // @param string - The value to convert + // @param to - The property to set + // + if (this.to == null) { + throw new BuildException("You must supply a property to set"); + } + if (this.string == null) { + throw new BuildException("You must supply a value to convert"); + } + getProject().setProperty(this.to, this.string.toLowerCase()); + } +} diff --git a/src/com/here/validate/tasks/MarkdownAnalyseTask.java b/src/com/here/validate/tasks/MarkdownAnalyseTask.java new file mode 100644 index 0000000..23fcff1 --- /dev/null +++ b/src/com/here/validate/tasks/MarkdownAnalyseTask.java @@ -0,0 +1,148 @@ +/* + * This file is part of the DITA-OT Validation Plug-in project. + * See the accompanying LICENSE file for applicable licenses. + */ + +package com.here.validate.tasks; + +import com.here.validate.markdown.Analysis; +import com.here.validate.markdown.Header; +import com.here.validate.markdown.Xref; +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Pattern; +import org.apache.tools.ant.Task; +import org.apache.tools.ant.types.FileSet; + +// +// Copy existing file to avoid running a real text-speech service +// + +public class MarkdownAnalyseTask extends Task { + protected Pattern regex; + /** + * Field files. + */ + protected List filesets; + /** + * Field dir. + */ + protected String dir; + /** + * Field dir. + */ + protected String toDir; + + /** + * Creates a new MarkdownAnalyseTask instance. + */ + public MarkdownAnalyseTask() { + super(); + this.filesets = new ArrayList<>(); + this.dir = null; + this.toDir = null; + this.regex = Pattern.compile("\\[.*\\]\\(.*\\)", Pattern.CASE_INSENSITIVE); + } + + private void addXref(String line, List xrefs) { + String[] x = line.split("]("); + for (int j = 1; j < x.length; j = j + 2) { + String href = x[j].split(")")[0]; + xrefs.add(new Xref(href, href.contains(":"))); + } + } + + private void setParentLevel(List
headers) { + int current = (headers.size() - 1); + for (int j = current; j > 0; j--) { + if (headers.get(j).getDepth() < headers.get(current).getDepth()) { + headers.get(current).setParent(j); + break; + } + } + } + + private void setExpectedLevel(List
headers) { + for (Header header : headers) { + if ( + header.getExpectedDepth() > + headers.get(header.getParent()).getExpectedDepth() + ) { + header.setExpectedDepth( + headers.get(header.getParent()).getExpectedDepth() + 1 + ); + } + } + } + + private int getHeaderLevel(String string) { + int level = 0; + while (level < string.length()) { + if (string.charAt(level) != 35) { + break; + } + level++; + } + return level; + } + + protected Analysis analyseMarkup(String markup) { + boolean codeblock = false; + List
headers = new ArrayList<>(); + List xrefs = new ArrayList<>(); + + int i = 0; + for (String line : markup.split("\n")) { + if (line.startsWith("```")) { + codeblock = !codeblock; + } else if (!codeblock) { + if (line.startsWith("#")) { + headers.add( + new Header( + i, + line, + getHeaderLevel(line), + i > 0 ? getHeaderLevel(line) : 1, + 0 + ) + ); + setParentLevel(headers); + } else if (this.regex.matcher(line).matches()) { + addXref(line, xrefs); + } + } + i++; + } + + setExpectedLevel(headers); + + return new Analysis(headers, xrefs); + } + + /** + * Method setFiles. + * + * @param set FileSet + */ + public void addFileset(FileSet set) { + this.filesets.add(set); + } + + /** + * Method setDir. + * + * @param dir String + */ + public void setDir(String dir) { + this.dir = dir; + } + + /** + * Method setToDir. + * + * @param toDir String + */ + public void setToDir(String toDir) { + this.toDir = toDir; + } +} diff --git a/src/com/here/validate/tasks/MarkdownFixTask.java b/src/com/here/validate/tasks/MarkdownFixTask.java new file mode 100644 index 0000000..d1cce6b --- /dev/null +++ b/src/com/here/validate/tasks/MarkdownFixTask.java @@ -0,0 +1,125 @@ +/* + * This file is part of the DITA-OT Validation Plug-in project(. + * See the accompanying LICENSE file for applicable licenses. + */ + +package com.here.validate.tasks; + +import com.here.validate.markdown.Analysis; +import com.here.validate.markdown.Header; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.DirectoryScanner; +import org.apache.tools.ant.taskdefs.Echo; +import org.apache.tools.ant.types.FileSet; +import org.apache.tools.ant.util.FileUtils; + +// Fix up Markdown and MDITA files so that they are processable by DITA-OT + +public class MarkdownFixTask extends MarkdownAnalyseTask { + + /** + * Creates a new MarkdownFixTask instance. + */ + public MarkdownFixTask() { + super(); + } + + private String correctMDITA(Header header) { + switch (header.getExpectedDepth()) { + case 1: + return "#" + header.getText().substring(header.getDepth()); + case 2: + return "##" + header.getText().substring(header.getDepth()); + default: + return ( + "**" + header.getText().substring(header.getDepth()).trim() + "**" + ); + } + } + + private String correctMarkdown(Header header) { + String prefix = null; + switch (header.getExpectedDepth()) { + case 1: + prefix = "#"; + break; + case 2: + prefix = "##"; + break; + case 3: + prefix = "###"; + break; + case 4: + prefix = "####"; + break; + case 5: + prefix = "#####"; + break; + default: + prefix = "######"; + } + return prefix + header.getText().substring(header.getDepth()); + } + + private String fixMarkup(String markup, List
headers, String type) { + int count = 0; + List output = new ArrayList<>(); + + for (String line : markup.split("\n")) { + if (count < headers.size() && line.equals(headers.get(count).getText())) { + if ("markdown".equals(type)) { + line = correctMarkdown(headers.get(count)); + } else if ("mdita".equals(type)) { + line = correctMDITA(headers.get(count)); + } + count++; + } + if (count > 0) { + output.add(line); + } + } + + return String.join("\n", output); + } + + /** + * Method execute. + * + * @throws BuildException if something goes wrong + */ + @Override + public void execute() { + // @param toDir - The output location of the files + // @param dir - The location of the files to process + // @param files - A set of files + if (this.dir == null) { + throw new BuildException("You must supply a source directory"); + } + if (this.toDir == null) { + throw new BuildException("You must supply a destination directory"); + } + + try { + for (FileSet fileset : this.filesets) { + DirectoryScanner scanner = fileset.getDirectoryScanner(getProject()); + scanner.scan(); + for (String file : scanner.getIncludedFiles()) { + String type = file.endsWith("md") ? "markdown" : "mdita"; + String text = FileUtils.readFully( + new java.io.FileReader(dir + "/" + file) + ); + Analysis analysis = analyseMarkup(text); + Echo task = (Echo) getProject().createTask("echo"); + task.setFile(new java.io.File(toDir + "/" + file)); + task.setMessage(fixMarkup(text, analysis.getHeaders(), type)); + task.perform(); + } + } + } catch (IOException e) { + throw new BuildException("Unable to read file", e); + } + } +} diff --git a/src/com/here/validate/tasks/MarkdownValidateTask.java b/src/com/here/validate/tasks/MarkdownValidateTask.java new file mode 100644 index 0000000..3c1c858 --- /dev/null +++ b/src/com/here/validate/tasks/MarkdownValidateTask.java @@ -0,0 +1,118 @@ +/* + * This file is part of the DITA-OT Validation Plug-in project(. + * See the accompanying LICENSE file for applicable licenses. + */ + +package com.here.validate.tasks; + +import com.here.validate.markdown.Diagnostic; +import com.here.validate.markdown.Header; +import java.io.IOException; +import java.util.List; +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.DirectoryScanner; +import org.apache.tools.ant.taskdefs.Echo; +import org.apache.tools.ant.types.FileSet; +import org.apache.tools.ant.util.FileUtils; + +// Validate Markdown and MDITA files to ensure that they are processable by DITA-OT + +public class MarkdownValidateTask extends MarkdownAnalyseTask { + + /** + * Creates a new MarkdownValidateTask instance. + */ + public MarkdownValidateTask() { + super(); + } + + private String validateMarkup( + String file, + List
headers, + String type + ) { + String svrl = + "\n" + + "\n" + + "\t\n" + + "\t\n"; + + if (headers.isEmpty()) { + svrl += Diagnostic.HEADERS_NOT_FOUND.failedAssert(1, "p"); + } else if (headers.get(0).getLine() > 0) { + svrl += Diagnostic.TEXT_BEFORE_HEADER.failedAssert(1, "p"); + } + + if ("markdown".equals(type)) { + for (Header header : headers) { + if (header.isInvalid()) { + svrl += Diagnostic.HEADER_DEPTH_INVALID.failedAssert(header); + } + } + } else if ("mdita".equals(type)) { + for (Header header : headers) { + if (header.isTooDeep()) { + svrl += Diagnostic.HEADER_DEPTH_TOO_DEEP.failedAssert(header); + } else if (header.isInvalid()) { + svrl += Diagnostic.HEADER_DEPTH_INVALID.failedAssert(header); + } + } + } + + svrl = svrl + "\n"; + return svrl; + } + + /** + * Method execute. + * + * @throws BuildException if something goes wrong + */ + @Override + public void execute() { + // @param toDir - The output location of the files + // @param dir - The location of the files to process + // @param files - A set of files + if (this.dir == null) { + throw new BuildException("You must supply a source directory"); + } + if (this.toDir == null) { + throw new BuildException("You must supply a destination directory"); + } + + try { + for (FileSet fileset : this.filesets) { + DirectoryScanner scanner = fileset.getDirectoryScanner(getProject()); + scanner.scan(); + for (String file : scanner.getIncludedFiles()) { + String type = file.endsWith("md") ? "markdown" : "mdita"; + String text = FileUtils.readFully( + new java.io.FileReader(dir + "/" + file) + ); + Echo task = (Echo) project.createTask("echo"); + task.setFile( + new java.io.File( + toDir + + "/" + + file.substring(0, file.lastIndexOf('.')) + + ".svrl.xml" + ) + ); + task.setMessage( + validateMarkup(file, analyseMarkup(text).getHeaders(), type) + ); + task.perform(); + } + } + } catch (IOException e) { + throw new BuildException("Unable to read file", e); + } catch (Exception e) { + getProject().log(e.toString(), 0); + throw e; + } + } +} diff --git a/src/com/here/validate/tasks/ResultEchoTask.java b/src/com/here/validate/tasks/ResultEchoTask.java new file mode 100644 index 0000000..254f155 --- /dev/null +++ b/src/com/here/validate/tasks/ResultEchoTask.java @@ -0,0 +1,63 @@ +/* + * This file is part of the DITA-OT Validation Plug-in project. + * See the accompanying LICENSE file for applicable licenses. + */ + +package com.here.validate.tasks; + +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.Task; + +// +// Add ansi color tags to output if requested. +// + +public class ResultEchoTask extends Task { + /** + * Field message. + */ + private String message; + + /** + * Creates a new ResultEchoTask instance. + */ + public ResultEchoTask() { + super(); + this.message = null; + } + + /** + * Method setmessage. + * + * @param message String + */ + public void setMessage(String message) { + String escapeCode = Character.toString((char) 27); + boolean colorize = "true".equals(getProject().getProperty("cli.color")); + + if (colorize) { + message = message.replace("[FATAL", escapeCode + "[31m[FATAL"); + message = message.replace("[ERROR", escapeCode + "[31m[ERROR"); + message = message.replace("[WARN", escapeCode + "[33m[WARN"); + message = message.replace("[INFO", escapeCode + "[34m[INFO"); + message = message.replace("\n", escapeCode + "[0m\n"); + } + this.message = message; + } + + /** + * Method execute. + * + * @throws BuildException if something goes wrong + */ + @Override + public void execute() { + // @param message - The string to colorize + if (message == null) { + throw new BuildException("You must supply a message to display"); + } + + getProject().log("", 1); + getProject().log(message, 1); + } +} diff --git a/src/main/resources/com/here/validate/antlib.xml b/src/main/resources/com/here/validate/antlib.xml new file mode 100644 index 0000000..17cff36 --- /dev/null +++ b/src/main/resources/com/here/validate/antlib.xml @@ -0,0 +1,277 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @{token} + @{value} + + + + + + + + + + + + + + + + + + + diff --git a/test/appendices-href-missing/build.xml b/test/appendices-href-missing/build.xml new file mode 100644 index 0000000..ba1f37c --- /dev/null +++ b/test/appendices-href-missing/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that an appendices element with no href attribute is a validation error + + + + + + diff --git a/test/appendices-href-missing/document.ditamap b/test/appendices-href-missing/document.ditamap new file mode 100644 index 0000000..d6446ee --- /dev/null +++ b/test/appendices-href-missing/document.ditamap @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/test/appendices-href-missing/expected.svrl b/test/appendices-href-missing/expected.svrl new file mode 100644 index 0000000..05c574b --- /dev/null +++ b/test/appendices-href-missing/expected.svrl @@ -0,0 +1,9 @@ + + + + + Line 5: appendices - [appendices-href-missing] +Always provide an href attribute in <appendices> elements. + + + diff --git a/test/appendices-href-missing/topic.dita b/test/appendices-href-missing/topic.dita new file mode 100644 index 0000000..18b1cea --- /dev/null +++ b/test/appendices-href-missing/topic.dita @@ -0,0 +1,10 @@ + + + + topic + +

+ Dummy Topic +

+ +
\ No newline at end of file diff --git a/test/blacklisted-word/build.xml b/test/blacklisted-word/build.xml new file mode 100644 index 0000000..7041115 --- /dev/null +++ b/test/blacklisted-word/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that an word spelt incorrectly is a validation error + + + + + + diff --git a/test/blacklisted-word/document.ditamap b/test/blacklisted-word/document.ditamap new file mode 100644 index 0000000..c06c93f --- /dev/null +++ b/test/blacklisted-word/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/blacklisted-word/expected.svrl b/test/blacklisted-word/expected.svrl new file mode 100644 index 0000000..4a131d6 --- /dev/null +++ b/test/blacklisted-word/expected.svrl @@ -0,0 +1,4 @@ + + + + diff --git a/test/blacklisted-word/incorrect-spelling.dita b/test/blacklisted-word/incorrect-spelling.dita new file mode 100644 index 0000000..94779c2 --- /dev/null +++ b/test/blacklisted-word/incorrect-spelling.dita @@ -0,0 +1,24 @@ + + + + incorrect-spelling + +

+ Mispelt and banned words found in the topic +

+
+ Good Spelling +

+ The acronym, JSON stands for "JavaScript Object Notation". + Files frequently use the suffix json +

+
+
+ Bad spelling +

+ The acronym, JSON stands for "JavaScript Object Notation". + Files frequently use the suffix json +

+
+ +
\ No newline at end of file diff --git a/test/boolean-deprecated/boolean-deprecated.dita b/test/boolean-deprecated/boolean-deprecated.dita new file mode 100644 index 0000000..1156f9b --- /dev/null +++ b/test/boolean-deprecated/boolean-deprecated.dita @@ -0,0 +1,25 @@ + + + + boolean-deprecated + +

+ The <boolean> element will no longer be supported in DITA 2.0. +

+
+ Good boolean + +

+ "She said when I asked her to marry me!" +

+ +
+
+ Bad boolean + +

+ She said "" when I asked her to marry me! +

+
+ +
\ No newline at end of file diff --git a/test/boolean-deprecated/build.xml b/test/boolean-deprecated/build.xml new file mode 100644 index 0000000..a6de04e --- /dev/null +++ b/test/boolean-deprecated/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that a boolean element a validation warning + + + + + + diff --git a/test/boolean-deprecated/document.ditamap b/test/boolean-deprecated/document.ditamap new file mode 100644 index 0000000..6a78fad --- /dev/null +++ b/test/boolean-deprecated/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/boolean-deprecated/expected.svrl b/test/boolean-deprecated/expected.svrl new file mode 100644 index 0000000..cc6d49b --- /dev/null +++ b/test/boolean-deprecated/expected.svrl @@ -0,0 +1,9 @@ + + + + + Line 21: boolean - [boolean-deprecated] +The <boolean> element will no longer be supported in DITA 2.0. Replace the <boolean> element with a <state> element. + + + diff --git a/test/bootstrap.xml b/test/bootstrap.xml new file mode 100644 index 0000000..544de8d --- /dev/null +++ b/test/bootstrap.xml @@ -0,0 +1,13 @@ + + + + + + + + diff --git a/test/chapter-href-missing/build.xml b/test/chapter-href-missing/build.xml new file mode 100644 index 0000000..e8b094e --- /dev/null +++ b/test/chapter-href-missing/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that a chapter element with no href attribute is a validation error + + + + + + diff --git a/test/chapter-href-missing/document.ditamap b/test/chapter-href-missing/document.ditamap new file mode 100644 index 0000000..376dac0 --- /dev/null +++ b/test/chapter-href-missing/document.ditamap @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/test/chapter-href-missing/expected.svrl b/test/chapter-href-missing/expected.svrl new file mode 100644 index 0000000..d918209 --- /dev/null +++ b/test/chapter-href-missing/expected.svrl @@ -0,0 +1,9 @@ + + + + + Line 5: chapter - [chapter-href-missing] +Always provide an href attribute in <chapter> elements. + + + diff --git a/test/chapter-href-missing/topic.dita b/test/chapter-href-missing/topic.dita new file mode 100644 index 0000000..12052e6 --- /dev/null +++ b/test/chapter-href-missing/topic.dita @@ -0,0 +1,10 @@ + + + + topic + +

+ Dummy Topic +

+ +
diff --git a/test/codeblock-outputclass-missing/build.xml b/test/codeblock-outputclass-missing/build.xml new file mode 100644 index 0000000..cabf832 --- /dev/null +++ b/test/codeblock-outputclass-missing/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that a codeblock without an outputclass is a validation warning + + + + + + diff --git a/test/codeblock-outputclass-missing/codeblock-outputclass-missing.dita b/test/codeblock-outputclass-missing/codeblock-outputclass-missing.dita new file mode 100644 index 0000000..d51db02 --- /dev/null +++ b/test/codeblock-outputclass-missing/codeblock-outputclass-missing.dita @@ -0,0 +1,23 @@ + + + + codeblock-outputclass-missing + +

+ <codeblock> must have an output class attribute +

+
+ Good codeblock + +Morbi nec aliquet libero, ac condimentum tortor. Ut ultrices orci placerat elit rutrum ullamcorper. Etiam vulputate ante eget turpis iaculis, vel fermentum diam porttitor. Morbi pretium tempor nisi, at convallis sem tincidunt ut. Maecenas vitae purus malesuada, elementum dolor ac, porta nisi. Fusce ut dolor in nunc imperdiet lobortis a quis purus. Aliquam nec nibh in ex gravida venenatis vitae in ex. Duis non dui at est aliquam pretium. Sed et egestas tellus. Cras quis condimentum est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi gravida vel dolor ac posuere. Nam vel posuere orci. Nunc eros velit, mattis a ligula nec, finibus aliquam enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. + + +
+
+ Bad codeblock + +Morbi nec aliquet libero, ac condimentum tortor. Ut ultrices orci placerat elit rutrum ullamcorper. Etiam vulputate ante eget turpis iaculis, vel fermentum diam porttitor. Morbi pretium tempor nisi, at convallis sem tincidunt ut. Maecenas vitae purus malesuada, elementum dolor ac, porta nisi. Fusce ut dolor in nunc imperdiet lobortis a quis purus. Aliquam nec nibh in ex gravida venenatis vitae in ex. Duis non dui at est aliquam pretium. Sed et egestas tellus. Cras quis condimentum est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi gravida vel dolor ac posuere. Nam vel posuere orci. Nunc eros velit, mattis a ligula nec, finibus aliquam enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. + +
+ +
\ No newline at end of file diff --git a/test/codeblock-outputclass-missing/document.ditamap b/test/codeblock-outputclass-missing/document.ditamap new file mode 100644 index 0000000..299aa09 --- /dev/null +++ b/test/codeblock-outputclass-missing/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/codeblock-outputclass-missing/expected.svrl b/test/codeblock-outputclass-missing/expected.svrl new file mode 100644 index 0000000..f9b61eb --- /dev/null +++ b/test/codeblock-outputclass-missing/expected.svrl @@ -0,0 +1,9 @@ + + + + + Line 18: codeblock - [codeblock-outputclass-missing] +Always provide an outputclass attribute in <codeblock> elements (for example, add outputclass="language-javascript"). + + + diff --git a/test/codeblock-scale-missing/build.xml b/test/codeblock-scale-missing/build.xml new file mode 100644 index 0000000..5377875 --- /dev/null +++ b/test/codeblock-scale-missing/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that a codeblock without a scale attribute is a validation warning + + + + + + diff --git a/test/codeblock-scale-missing/codeblock-scale-missing.dita b/test/codeblock-scale-missing/codeblock-scale-missing.dita new file mode 100644 index 0000000..09c314d --- /dev/null +++ b/test/codeblock-scale-missing/codeblock-scale-missing.dita @@ -0,0 +1,23 @@ + + + + codeblock-scale-missing + +

+ <codeblock> must have a scale attribute +

+
+ Good codeblcock + +Morbi nec aliquet libero, ac condimentum tortor. Ut ultrices orci placerat elit rutrum ullamcorper. Etiam vulputate ante eget turpis iaculis, vel fermentum diam porttitor. Morbi pretium tempor nisi, at convallis sem tincidunt ut. Maecenas vitae purus malesuada, elementum dolor ac, porta nisi. Fusce ut dolor in nunc imperdiet lobortis a quis purus. Aliquam nec nibh in ex gravida venenatis vitae in ex. Duis non dui at est aliquam pretium. Sed et egestas tellus. Cras quis condimentum est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi gravida vel dolor ac posuere. Nam vel posuere orci. Nunc eros velit, mattis a ligula nec, finibus aliquam enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. + + +
+
+ Bad codeblock + +Morbi nec aliquet libero, ac condimentum tortor. Ut ultrices orci placerat elit rutrum ullamcorper. Etiam vulputate ante eget turpis iaculis, vel fermentum diam porttitor. Morbi pretium tempor nisi, at convallis sem tincidunt ut. Maecenas vitae purus malesuada, elementum dolor ac, porta nisi. Fusce ut dolor in nunc imperdiet lobortis a quis purus. Aliquam nec nibh in ex gravida venenatis vitae in ex. Duis non dui at est aliquam pretium. Sed et egestas tellus. Cras quis condimentum est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi gravida vel dolor ac posuere. Nam vel posuere orci. Nunc eros velit, mattis a ligula nec, finibus aliquam enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. + +
+ +
\ No newline at end of file diff --git a/test/codeblock-scale-missing/document.ditamap b/test/codeblock-scale-missing/document.ditamap new file mode 100644 index 0000000..41a4220 --- /dev/null +++ b/test/codeblock-scale-missing/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/codeblock-scale-missing/expected.svrl b/test/codeblock-scale-missing/expected.svrl new file mode 100644 index 0000000..1b3a200 --- /dev/null +++ b/test/codeblock-scale-missing/expected.svrl @@ -0,0 +1,9 @@ + + + + + Line 18: codeblock - [codeblock-scale-missing] +Always provide a scale attribute in <codeblock> elements (for example, add scale="80"). + + + diff --git a/test/colsep-invalid/build.xml b/test/colsep-invalid/build.xml new file mode 100644 index 0000000..893c603 --- /dev/null +++ b/test/colsep-invalid/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that a colsep with an invalid value is a validation error + + + + + + diff --git a/test/colsep-invalid/colsep-invalid.dita b/test/colsep-invalid/colsep-invalid.dita new file mode 100644 index 0000000..dc356cd --- /dev/null +++ b/test/colsep-invalid/colsep-invalid.dita @@ -0,0 +1,37 @@ + + + + colsep-invalid + +

+ <table> 'colsep' attribute can be only 0 or 1 +

+
+ Good Table + + + + + +   + + + +
+ +
+
+ Bad Table + + + + + +   + + + +
+
+ +
\ No newline at end of file diff --git a/test/colsep-invalid/document.ditamap b/test/colsep-invalid/document.ditamap new file mode 100644 index 0000000..1bd382c --- /dev/null +++ b/test/colsep-invalid/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/colsep-invalid/expected.svrl b/test/colsep-invalid/expected.svrl new file mode 100644 index 0000000..85ca211 --- /dev/null +++ b/test/colsep-invalid/expected.svrl @@ -0,0 +1,9 @@ + + + + + Line 25: table[id="table-bad"] - [colsep-invalid] +colsep values must be either 0 or 1 in any <table> elements. + + + diff --git a/test/colspec-colnum-not-unique/build.xml b/test/colspec-colnum-not-unique/build.xml new file mode 100644 index 0000000..2e591ad --- /dev/null +++ b/test/colspec-colnum-not-unique/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that a colspec with duplicated colnums is a validation error + + + + + + diff --git a/test/colspec-colnum-not-unique/colspec-colnum-not-unique.dita b/test/colspec-colnum-not-unique/colspec-colnum-not-unique.dita new file mode 100644 index 0000000..414e825 --- /dev/null +++ b/test/colspec-colnum-not-unique/colspec-colnum-not-unique.dita @@ -0,0 +1,47 @@ + + + + colspec-colnum-not-unique + +

+ Within each tgroup, colspec colnum="x" must be unique +

+
+ Good Table + + + + + + + + + +   +   +   + + + +
+ +
+
+ Bad Table + + + + + + + +   +   +   + + + +
+
+ +
diff --git a/test/colspec-colnum-not-unique/document.ditamap b/test/colspec-colnum-not-unique/document.ditamap new file mode 100644 index 0000000..2293ee9 --- /dev/null +++ b/test/colspec-colnum-not-unique/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/colspec-colnum-not-unique/expected.svrl b/test/colspec-colnum-not-unique/expected.svrl new file mode 100644 index 0000000..a9e45a6 --- /dev/null +++ b/test/colspec-colnum-not-unique/expected.svrl @@ -0,0 +1,13 @@ + + + + + Line 33: colspec - [colspec-colnum-not-unique] +The key/value pair colnum="1" is not unique. Make sure there are no duplicates. + + + Line 34: colspec - [colspec-colnum-not-unique] +The key/value pair colnum="1" is not unique. Make sure there are no duplicates. + + + diff --git a/test/comment-fixme/build.xml b/test/comment-fixme/build.xml new file mode 100644 index 0000000..f55b360 --- /dev/null +++ b/test/comment-fixme/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that fixme in the comments is a validation warning + + + + + + diff --git a/test/comment-fixme/comment-fixme.dita b/test/comment-fixme/comment-fixme.dita new file mode 100644 index 0000000..1b0c9a8 --- /dev/null +++ b/test/comment-fixme/comment-fixme.dita @@ -0,0 +1,20 @@ + + + + <!-- ignore-rule:running-text-fixme,comment-fixme --> + comment-fixme + +

+ + FIXME comments found in the topic +

+
+ Good comment + +
+
+ Bad comment + +
+ +
diff --git a/test/comment-fixme/document.ditamap b/test/comment-fixme/document.ditamap new file mode 100644 index 0000000..6df7018 --- /dev/null +++ b/test/comment-fixme/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/comment-fixme/expected.svrl b/test/comment-fixme/expected.svrl new file mode 100644 index 0000000..e67286b --- /dev/null +++ b/test/comment-fixme/expected.svrl @@ -0,0 +1,11 @@ + + + + + Line 15: section[id="bad"] - [comment-fixme] +Found 'FIXME' comments within the <section> element - fix as requested and delete the comment. + + FIXME 61) This comment requires action + + + diff --git a/test/comment-todo/build.xml b/test/comment-todo/build.xml new file mode 100644 index 0000000..b84b23c --- /dev/null +++ b/test/comment-todo/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that todo in the comments is a validation warning + + + + + + diff --git a/test/comment-todo/comment-todo.dita b/test/comment-todo/comment-todo.dita new file mode 100644 index 0000000..27c13ef --- /dev/null +++ b/test/comment-todo/comment-todo.dita @@ -0,0 +1,20 @@ + + + + <!-- ignore-rule:running-text-todo,comment-todo --> + comment-todo + +

+ + TODO comments found in the topic +

+
+ Good comment + +
+
+ Bad comment + +
+ +
diff --git a/test/comment-todo/document.ditamap b/test/comment-todo/document.ditamap new file mode 100644 index 0000000..8af8ea1 --- /dev/null +++ b/test/comment-todo/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/comment-todo/expected.svrl b/test/comment-todo/expected.svrl new file mode 100644 index 0000000..46183f7 --- /dev/null +++ b/test/comment-todo/expected.svrl @@ -0,0 +1,11 @@ + + + + + Line 15: section[id="bad"] - [comment-todo] +Found 'TODO' within the following text of the <section> element - fix as requested and delete the comment. + + TODO 63) This comment requires action + + + diff --git a/test/conref-external-file-exists/build.xml b/test/conref-external-file-exists/build.xml new file mode 100644 index 0000000..532bb98 --- /dev/null +++ b/test/conref-external-file-exists/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that a conref to an existing external file is OK + + + + + + diff --git a/test/conref-external-file-exists/conref-external-file-not-found.dita b/test/conref-external-file-exists/conref-external-file-not-found.dita new file mode 100644 index 0000000..6b30554 --- /dev/null +++ b/test/conref-external-file-exists/conref-external-file-not-found.dita @@ -0,0 +1,22 @@ + + + + conref-external-file-not-found + +

+ For a conref to an external file, the file linked to must exist +

+
+ Good conref +

+ +

+
+ Bad conref + +

+ Failing test will break the build - see conref-external-file-not-found-bad.dita +

+
+ +
\ No newline at end of file diff --git a/test/conref-external-file-exists/document.ditamap b/test/conref-external-file-exists/document.ditamap new file mode 100644 index 0000000..f9036b8 --- /dev/null +++ b/test/conref-external-file-exists/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/conref-external-file-exists/expected.svrl b/test/conref-external-file-exists/expected.svrl new file mode 100644 index 0000000..ba0e93d --- /dev/null +++ b/test/conref-external-file-exists/expected.svrl @@ -0,0 +1,9 @@ + + + + + Line 11: p[conref="./conref-internal-id-not-found.dita#href"] - [conref-external-file-not-found] +The linked file does not exist. Check the related folder for the missing file and make sure the file name is correct. + + + diff --git a/test/conref-external-file-not-found/build.xml b/test/conref-external-file-not-found/build.xml new file mode 100644 index 0000000..9845264 --- /dev/null +++ b/test/conref-external-file-not-found/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that a conref to a missing file is a validation error + + + + + + diff --git a/test/conref-external-file-not-found/conref-external-file-not-found-bad.dita b/test/conref-external-file-not-found/conref-external-file-not-found-bad.dita new file mode 100644 index 0000000..a5575bd --- /dev/null +++ b/test/conref-external-file-not-found/conref-external-file-not-found-bad.dita @@ -0,0 +1,19 @@ + + + + conref-external-file-not-found + +

+ For a conref to an external file, the file linked to must exist +

+
+ Good conref +

+ +

+
+ Bad conref +

+

+ +
\ No newline at end of file diff --git a/test/conref-external-file-not-found/document.ditamap b/test/conref-external-file-not-found/document.ditamap new file mode 100644 index 0000000..369838b --- /dev/null +++ b/test/conref-external-file-not-found/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/conref-external-file-not-found/expected.svrl b/test/conref-external-file-not-found/expected.svrl new file mode 100644 index 0000000..03b8275 --- /dev/null +++ b/test/conref-external-file-not-found/expected.svrl @@ -0,0 +1,13 @@ + + + + + Line 11: p[conref="./conref-internal-id-not-found.dita#href"] - [conref-external-file-not-found] +The linked file does not exist. Check the related folder for the missing file and make sure the file name is correct. + + + Line 16: p[conref="./unknown-file.dita#href"] - [conref-external-file-not-found] +The linked file does not exist. Check the related folder for the missing file and make sure the file name is correct. + + + diff --git a/test/conref-external-id-exists/build.xml b/test/conref-external-id-exists/build.xml new file mode 100644 index 0000000..d44ea79 --- /dev/null +++ b/test/conref-external-id-exists/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that a conref to an existent ID is OK + + + + + + diff --git a/test/conref-external-id-exists/conref-external-id-not-found.dita b/test/conref-external-id-exists/conref-external-id-not-found.dita new file mode 100644 index 0000000..3ee8c13 --- /dev/null +++ b/test/conref-external-id-exists/conref-external-id-not-found.dita @@ -0,0 +1,23 @@ + + + + conref-external-id-not-found + +

+ For a conref to an external file, the id attribute linked to must exist +

+
+ Good xref + +

+ +

+
+ Bad xref + +

+ Failing test will break the build - see conref-external-id-not-found-no-exists.dita +

+
+ +
\ No newline at end of file diff --git a/test/conref-external-id-exists/document.ditamap b/test/conref-external-id-exists/document.ditamap new file mode 100644 index 0000000..426723d --- /dev/null +++ b/test/conref-external-id-exists/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/conref-external-id-exists/expected.svrl b/test/conref-external-id-exists/expected.svrl new file mode 100644 index 0000000..e962fe2 --- /dev/null +++ b/test/conref-external-id-exists/expected.svrl @@ -0,0 +1,9 @@ + + + + + Line 12: p[conref="./conref-internal-id-not-found.dita#href"] - [conref-external-file-not-found] +The linked file does not exist. Check the related folder for the missing file and make sure the file name is correct. + + + diff --git a/test/conref-external-id-mismatch/build.xml b/test/conref-external-id-mismatch/build.xml new file mode 100644 index 0000000..0159806 --- /dev/null +++ b/test/conref-external-id-mismatch/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that a conref to an ID of a different type is a validation error + + + + + + diff --git a/test/conref-external-id-mismatch/conref-external-id-mismatch-bad.dita b/test/conref-external-id-mismatch/conref-external-id-mismatch-bad.dita new file mode 100644 index 0000000..6c0cf72 --- /dev/null +++ b/test/conref-external-id-mismatch/conref-external-id-mismatch-bad.dita @@ -0,0 +1,20 @@ + + + + conref-external-id-mismatch + +

+ For a conref to an external file, the id attribute linked to must be a node of the same type as the original +

+
+ Good xref + +

+ +

+
+ Bad xref +

+

+ +
\ No newline at end of file diff --git a/test/conref-external-id-mismatch/document.ditamap b/test/conref-external-id-mismatch/document.ditamap new file mode 100644 index 0000000..208661b --- /dev/null +++ b/test/conref-external-id-mismatch/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/conref-external-id-mismatch/expected.svrl b/test/conref-external-id-mismatch/expected.svrl new file mode 100644 index 0000000..dec4cb6 --- /dev/null +++ b/test/conref-external-id-mismatch/expected.svrl @@ -0,0 +1,13 @@ + + + + + Line 12: p[conref="./conref-internal-id-not-found.dita#href"] - [conref-external-file-not-found] +The linked file does not exist. Check the related folder for the missing file and make sure the file name is correct. + + + Line 17: p[conref="./conref-internal-id-not-found.dita#bad"] - [conref-external-file-not-found] +The linked file does not exist. Check the related folder for the missing file and make sure the file name is correct. + + + diff --git a/test/conref-external-id-not-found/build.xml b/test/conref-external-id-not-found/build.xml new file mode 100644 index 0000000..81787fa --- /dev/null +++ b/test/conref-external-id-not-found/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that a conref to a non-existent ID is a validation error + + + + + + diff --git a/test/conref-external-id-not-found/conref-external-id-not-found-no-exists.dita b/test/conref-external-id-not-found/conref-external-id-not-found-no-exists.dita new file mode 100644 index 0000000..0734f85 --- /dev/null +++ b/test/conref-external-id-not-found/conref-external-id-not-found-no-exists.dita @@ -0,0 +1,20 @@ + + + + conref-external-id-not-found + +

+ For a conref to an external file, the id attribute linked to must exist +

+
+ Good xref + +

+ +

+
+ Bad xref +

+

+ +
\ No newline at end of file diff --git a/test/conref-external-id-not-found/document.ditamap b/test/conref-external-id-not-found/document.ditamap new file mode 100644 index 0000000..6a8d0a7 --- /dev/null +++ b/test/conref-external-id-not-found/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/conref-external-id-not-found/expected.svrl b/test/conref-external-id-not-found/expected.svrl new file mode 100644 index 0000000..ca3101c --- /dev/null +++ b/test/conref-external-id-not-found/expected.svrl @@ -0,0 +1,13 @@ + + + + + Line 12: p[conref="./conref-internal-id-not-found.dita#href"] - [conref-external-file-not-found] +The linked file does not exist. Check the related folder for the missing file and make sure the file name is correct. + + + Line 17: p[conref="./conref-internal-id-not-found.dita#not-an-href"] - [conref-external-file-not-found] +The linked file does not exist. Check the related folder for the missing file and make sure the file name is correct. + + + diff --git a/test/conref-external-id-type-matches/build.xml b/test/conref-external-id-type-matches/build.xml new file mode 100644 index 0000000..3d2b9a9 --- /dev/null +++ b/test/conref-external-id-type-matches/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that a conref to an ID of the same type is a OK + + + + + + diff --git a/test/conref-external-id-type-matches/conref-external-id-mismatch.dita b/test/conref-external-id-type-matches/conref-external-id-mismatch.dita new file mode 100644 index 0000000..22ed5f7 --- /dev/null +++ b/test/conref-external-id-type-matches/conref-external-id-mismatch.dita @@ -0,0 +1,23 @@ + + + + conref-external-id-mismatch + +

+ For a conref to an external file, the id attribute linked to must be a node of the same type as the original +

+
+ Good xref + +

+ +

+
+ Bad xref + +

+ Failing test will break the build - see conref-external-id-mismatch-bad.dita +

+
+ +
\ No newline at end of file diff --git a/test/conref-external-id-type-matches/document.ditamap b/test/conref-external-id-type-matches/document.ditamap new file mode 100644 index 0000000..d65fd11 --- /dev/null +++ b/test/conref-external-id-type-matches/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/conref-external-id-type-matches/expected.svrl b/test/conref-external-id-type-matches/expected.svrl new file mode 100644 index 0000000..e962fe2 --- /dev/null +++ b/test/conref-external-id-type-matches/expected.svrl @@ -0,0 +1,9 @@ + + + + + Line 12: p[conref="./conref-internal-id-not-found.dita#href"] - [conref-external-file-not-found] +The linked file does not exist. Check the related folder for the missing file and make sure the file name is correct. + + + diff --git a/test/conref-external-path-exists/build.xml b/test/conref-external-path-exists/build.xml new file mode 100644 index 0000000..e157aae --- /dev/null +++ b/test/conref-external-path-exists/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that a conref to an existing external path is OK + + + + + + diff --git a/test/conref-external-path-exists/conref-external-path-not-found.dita b/test/conref-external-path-exists/conref-external-path-not-found.dita new file mode 100644 index 0000000..74bc5a5 --- /dev/null +++ b/test/conref-external-path-exists/conref-external-path-not-found.dita @@ -0,0 +1,27 @@ + + + + conref-external-path-not-found + +

+ For a conref within a single file, the path linked to must exist +

+
+ Good conref +

+ Hello World! +

+

+ + + +

+
+ Bad conref + +

+ Failing test will break the build - see conref-external-path-not-found-bad.dita +

+
+ +
\ No newline at end of file diff --git a/test/conref-external-path-exists/document.ditamap b/test/conref-external-path-exists/document.ditamap new file mode 100644 index 0000000..b04ae5a --- /dev/null +++ b/test/conref-external-path-exists/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/conref-external-path-exists/expected.svrl b/test/conref-external-path-exists/expected.svrl new file mode 100644 index 0000000..4e3d7c9 --- /dev/null +++ b/test/conref-external-path-exists/expected.svrl @@ -0,0 +1,9 @@ + + + + + Line 14: p[conref="conref-internal-path-not-found.dita#conref-internal-path-not-found/href"] - [conref-external-file-not-found] +The linked file does not exist. Check the related folder for the missing file and make sure the file name is correct. + + + diff --git a/test/conref-external-path-mismatch/build.xml b/test/conref-external-path-mismatch/build.xml new file mode 100644 index 0000000..ef7e7ea --- /dev/null +++ b/test/conref-external-path-mismatch/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that a conref with a mismatched path element is a validation error + + + + + + diff --git a/test/conref-external-path-mismatch/conref-external-path-mismatch-bad.dita b/test/conref-external-path-mismatch/conref-external-path-mismatch-bad.dita new file mode 100644 index 0000000..1f1ea93 --- /dev/null +++ b/test/conref-external-path-mismatch/conref-external-path-mismatch-bad.dita @@ -0,0 +1,20 @@ + + + + conref-external-path-mismatch + +

+ For a conref to an external file, the id attribute linked to must be a node of the same type as the original +

+
+ Good xref + +

+ +

+
+ Bad xref +

+

+ +
\ No newline at end of file diff --git a/test/conref-external-path-mismatch/document.ditamap b/test/conref-external-path-mismatch/document.ditamap new file mode 100644 index 0000000..87a9f60 --- /dev/null +++ b/test/conref-external-path-mismatch/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/conref-external-path-mismatch/expected.svrl b/test/conref-external-path-mismatch/expected.svrl new file mode 100644 index 0000000..94f64de --- /dev/null +++ b/test/conref-external-path-mismatch/expected.svrl @@ -0,0 +1,13 @@ + + + + + Line 12: p[conref="./conref-internal-id-not-found.dita#conref-internal-id-not-found/href"] - [conref-external-file-not-found] +The linked file does not exist. Check the related folder for the missing file and make sure the file name is correct. + + + Line 17: p[conref="./conref-internal-id-not-found.dita#conref-internal-id-not-found/bad"] - [conref-external-file-not-found] +The linked file does not exist. Check the related folder for the missing file and make sure the file name is correct. + + + diff --git a/test/conref-external-path-not-found/build.xml b/test/conref-external-path-not-found/build.xml new file mode 100644 index 0000000..f950fc7 --- /dev/null +++ b/test/conref-external-path-not-found/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that a conref to an non-existing external path is a validation error + + + + + + diff --git a/test/conref-external-path-not-found/conref-external-path-not-found-bad.dita b/test/conref-external-path-not-found/conref-external-path-not-found-bad.dita new file mode 100644 index 0000000..317be5e --- /dev/null +++ b/test/conref-external-path-not-found/conref-external-path-not-found-bad.dita @@ -0,0 +1,24 @@ + + + + conref-external-path-not-found + +

+ For a conref within a single file, the path linked to must exist +

+
+ Good conref +

+ Hello World! +

+

+ + + +

+
+ Bad conref +

+

+ +
\ No newline at end of file diff --git a/test/conref-external-path-not-found/document.ditamap b/test/conref-external-path-not-found/document.ditamap new file mode 100644 index 0000000..04a0328 --- /dev/null +++ b/test/conref-external-path-not-found/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/conref-external-path-not-found/expected.svrl b/test/conref-external-path-not-found/expected.svrl new file mode 100644 index 0000000..481d180 --- /dev/null +++ b/test/conref-external-path-not-found/expected.svrl @@ -0,0 +1,13 @@ + + + + + Line 14: p[conref="conref-internal-path-not-found.dita#conref-internal-path-not-found/href"] - [conref-external-file-not-found] +The linked file does not exist. Check the related folder for the missing file and make sure the file name is correct. + + + Line 21: p[id="bad-conref" and conref="conref-internal-path-not-found.dita#no-topic/href"] - [conref-external-file-not-found] +The linked file does not exist. Check the related folder for the missing file and make sure the file name is correct. + + + diff --git a/test/conref-external-path-type-matches/build.xml b/test/conref-external-path-type-matches/build.xml new file mode 100644 index 0000000..832cabb --- /dev/null +++ b/test/conref-external-path-type-matches/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that a conref with a matched path is OK + + + + + + diff --git a/test/conref-external-path-type-matches/conref-external-path-mismatch.dita b/test/conref-external-path-type-matches/conref-external-path-mismatch.dita new file mode 100644 index 0000000..b691ace --- /dev/null +++ b/test/conref-external-path-type-matches/conref-external-path-mismatch.dita @@ -0,0 +1,23 @@ + + + + conref-external-path-mismatch + +

+ For a conref to an external file, the id attribute linked to must be a node of the same type as the original +

+
+ Good xref + +

+ +

+
+ Bad xref + +

+ Failing test will break the build - see conref-external-path-mismatch-bad.dita +

+
+ +
\ No newline at end of file diff --git a/test/conref-external-path-type-matches/document.ditamap b/test/conref-external-path-type-matches/document.ditamap new file mode 100644 index 0000000..8ea251c --- /dev/null +++ b/test/conref-external-path-type-matches/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/conref-external-path-type-matches/expected.svrl b/test/conref-external-path-type-matches/expected.svrl new file mode 100644 index 0000000..2b98372 --- /dev/null +++ b/test/conref-external-path-type-matches/expected.svrl @@ -0,0 +1,9 @@ + + + + + Line 12: p[conref="./conref-internal-id-not-found.dita#conref-internal-id-not-found/href"] - [conref-external-file-not-found] +The linked file does not exist. Check the related folder for the missing file and make sure the file name is correct. + + + diff --git a/test/conref-internal-id-exists/build.xml b/test/conref-internal-id-exists/build.xml new file mode 100644 index 0000000..8ae1925 --- /dev/null +++ b/test/conref-internal-id-exists/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that a conref to an existing ID in the same file is OK + + + + + + diff --git a/test/conref-internal-id-exists/conref-internal-id-not-found.dita b/test/conref-internal-id-exists/conref-internal-id-not-found.dita new file mode 100644 index 0000000..2a0d451 --- /dev/null +++ b/test/conref-internal-id-exists/conref-internal-id-not-found.dita @@ -0,0 +1,24 @@ + + + + conref-internal-id-not-found + +

+ For a conref within a single file, the id attribute linked to must exist +

+
+ Good conref +

+ Hello World! +

+

+

+
+ Bad conref + +

+ Failing test will break the build - see conref-internal-id-not-found-no-exists.dita +

+
+ +
\ No newline at end of file diff --git a/test/conref-internal-id-exists/document.ditamap b/test/conref-internal-id-exists/document.ditamap new file mode 100644 index 0000000..20c6845 --- /dev/null +++ b/test/conref-internal-id-exists/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/conref-internal-id-exists/expected.svrl b/test/conref-internal-id-exists/expected.svrl new file mode 100644 index 0000000..4a131d6 --- /dev/null +++ b/test/conref-internal-id-exists/expected.svrl @@ -0,0 +1,4 @@ + + + + diff --git a/test/conref-internal-id-not-found/build.xml b/test/conref-internal-id-not-found/build.xml new file mode 100644 index 0000000..9cca5d2 --- /dev/null +++ b/test/conref-internal-id-not-found/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that a conref to an non-existent ID in the same file is a validation error + + + + + + diff --git a/test/conref-internal-id-not-found/conref-internal-id-not-found-no-exists.dita b/test/conref-internal-id-not-found/conref-internal-id-not-found-no-exists.dita new file mode 100644 index 0000000..1d69884 --- /dev/null +++ b/test/conref-internal-id-not-found/conref-internal-id-not-found-no-exists.dita @@ -0,0 +1,25 @@ + + + + conref-internal-id-not-found + +

+ For a conref within a single file, the id attribute linked to must exist +

+
+ Good conref +

+ Hello World! +

+ + +

+ +

+
+ Bad conref + +

+

+ +
\ No newline at end of file diff --git a/test/conref-internal-id-not-found/document.ditamap b/test/conref-internal-id-not-found/document.ditamap new file mode 100644 index 0000000..f00a251 --- /dev/null +++ b/test/conref-internal-id-not-found/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/conref-internal-id-not-found/expected.svrl b/test/conref-internal-id-not-found/expected.svrl new file mode 100644 index 0000000..d0d1d32 --- /dev/null +++ b/test/conref-internal-id-not-found/expected.svrl @@ -0,0 +1,9 @@ + + + + + Line 22: p[id="bad-conref" and conref="#no-href"] - [conref-internal-id-not-found] +The referenced ID does not exist in this file. Make sure the ID value specified is correct. + + + diff --git a/test/conref-internal-path-exists/build.xml b/test/conref-internal-path-exists/build.xml new file mode 100644 index 0000000..8d40344 --- /dev/null +++ b/test/conref-internal-path-exists/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that a conref to an existing path in the same file is OK + + + + + + diff --git a/test/conref-internal-path-exists/conref-internal-path-not-found.dita b/test/conref-internal-path-exists/conref-internal-path-not-found.dita new file mode 100644 index 0000000..33d31c5 --- /dev/null +++ b/test/conref-internal-path-exists/conref-internal-path-not-found.dita @@ -0,0 +1,27 @@ + + + + 32) conref-internal-path-not-found + +

+ For a conref within a single file, the path linked to must exist +

+
+ Good conref +

+ Hello World! +

+

+ + + +

+
+ Bad conref + +

+ Failing test will break the build - see conref-internal-path-not-found-bad.dita +

+
+ +
\ No newline at end of file diff --git a/test/conref-internal-path-exists/document.ditamap b/test/conref-internal-path-exists/document.ditamap new file mode 100644 index 0000000..a7eb64b --- /dev/null +++ b/test/conref-internal-path-exists/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/conref-internal-path-exists/expected.svrl b/test/conref-internal-path-exists/expected.svrl new file mode 100644 index 0000000..4a131d6 --- /dev/null +++ b/test/conref-internal-path-exists/expected.svrl @@ -0,0 +1,4 @@ + + + + diff --git a/test/conref-internal-path-not-found/build.xml b/test/conref-internal-path-not-found/build.xml new file mode 100644 index 0000000..34d6672 --- /dev/null +++ b/test/conref-internal-path-not-found/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that a conref to a non-existent path in the same file is a validation error + + + + + + diff --git a/test/conref-internal-path-not-found/conref-internal-path-not-found-bad.dita b/test/conref-internal-path-not-found/conref-internal-path-not-found-bad.dita new file mode 100644 index 0000000..8f8edf2 --- /dev/null +++ b/test/conref-internal-path-not-found/conref-internal-path-not-found-bad.dita @@ -0,0 +1,26 @@ + + + + conref-internal-path-not-found + +

+ For a conref within a single file, the path linked to must exist +

+
+ Good conref +

+ Hello World! +

+ + +

+ +

+
+ Bad conref + +

+

+ +
\ No newline at end of file diff --git a/test/conref-internal-path-not-found/document.ditamap b/test/conref-internal-path-not-found/document.ditamap new file mode 100644 index 0000000..7710077 --- /dev/null +++ b/test/conref-internal-path-not-found/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/conref-internal-path-not-found/expected.svrl b/test/conref-internal-path-not-found/expected.svrl new file mode 100644 index 0000000..2763876 --- /dev/null +++ b/test/conref-internal-path-not-found/expected.svrl @@ -0,0 +1,13 @@ + + + + + Line 17: p[conref="#conref-internal-path-not-found-bad /href"] - [conref-internal-path-not-found] +The referenced path does not exist in this file. Make sure the path is correct. + + + Line 23: p[id="bad-conref" and conref="#no-topic/href"] - [conref-internal-path-not-found] +The referenced path does not exist in this file. Make sure the path is correct. + + + diff --git a/test/conref-not-lower-case/build.xml b/test/conref-not-lower-case/build.xml new file mode 100644 index 0000000..7ad95c3 --- /dev/null +++ b/test/conref-not-lower-case/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that a conref that is not lower-case is a validation error + + + + + + diff --git a/test/conref-not-lower-case/conref-not-lower-case.dita b/test/conref-not-lower-case/conref-not-lower-case.dita new file mode 100644 index 0000000..7bb58f6 --- /dev/null +++ b/test/conref-not-lower-case/conref-not-lower-case.dita @@ -0,0 +1,20 @@ + + + + conref-not-lower-case + +

+ For a conref to an external file, the file must be named in lowercase, a-z only, words separated by hyphens +

+
+ Good xref + +

+ +

+
+ Bad xref +

+

+ +
\ No newline at end of file diff --git a/test/conref-not-lower-case/document.ditamap b/test/conref-not-lower-case/document.ditamap new file mode 100644 index 0000000..1259555 --- /dev/null +++ b/test/conref-not-lower-case/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/conref-not-lower-case/expected.svrl b/test/conref-not-lower-case/expected.svrl new file mode 100644 index 0000000..0fceb3d --- /dev/null +++ b/test/conref-not-lower-case/expected.svrl @@ -0,0 +1,17 @@ + + + + + Line 12: p[conref="./conref-internal-id-not-found.dita#href"] - [conref-external-file-not-found] +The linked file does not exist. Check the related folder for the missing file and make sure the file name is correct. + + + Line 17: p[conref="./FILE-NOT-LOWER-CASE.dita#href"] - [conref-not-lower-case] +The specification of conref="./FILE-NOT-LOWER-CASE.dita#href" is invalid, allowed characters are: lower case, a-z only, words separated by hyphens. + + + Line 17: p[conref="./FILE-NOT-LOWER-CASE.dita#href"] - [conref-external-file-not-found] +The linked file does not exist. Check the related folder for the missing file and make sure the file name is correct. + + + diff --git a/test/coverage.xml b/test/coverage.xml new file mode 100644 index 0000000..c185800 --- /dev/null +++ b/test/coverage.xml @@ -0,0 +1,64 @@ + + + + + + appendices-href-missing + chapter-href-missing + coderef-href-ref-file-not-found + colsep-invalid + colspec-colnum-not-unique + conref-external-file-not-found + conref-external-id-mismatch + conref-external-id-not-found + conref-external-path-not-found + conref-external-path-mismatch + conref-internal-id-not-found + conref-internal-path-mismatch + conref-internal-path-not-found + href-file-not-found + id-not-unique + image-href-ref-file-not-found + list-all-li-filtered + notices-href-missing + rowsep-invalid + table-all-rows-filtered + tgroup-cols-colspec-mismatch + tgroup-cols-entry-mismatch + topicref-href-missing + xref-external-file-not-found + xref-external-id-not-found + xref-external-path-not-found + xref-internal-id-not-found + xref-internal-path-not-found + + conref-not-lower-case + fig-id-invalid + fig-id-missing + file-not-lower-case + href-not-lower-case + id-not-lower-case + image-file-type-not-supported + section-id-missing + section-title-missing + table-id-invalid + xref-no-format + xref-www-format-invalid + xref-www-scope-invalid + + blacklisted-word + codeblock-outputclass-missing + codeblock-scale-missing + comment-fixme + comment-todo + fig-title-missing + incorrect-capitalization + running-text-fixme + running-text-lorem-ipsum + running-text-todo + topic-file-mismatch + + diff --git a/test/fig-id-invalid/build.xml b/test/fig-id-invalid/build.xml new file mode 100644 index 0000000..55a8837 --- /dev/null +++ b/test/fig-id-invalid/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that a fig with an ID not starting fig is a validation error + + + + + + diff --git a/test/fig-id-invalid/document.ditamap b/test/fig-id-invalid/document.ditamap new file mode 100644 index 0000000..ecc0df2 --- /dev/null +++ b/test/fig-id-invalid/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/fig-id-invalid/expected.svrl b/test/fig-id-invalid/expected.svrl new file mode 100644 index 0000000..bfba550 --- /dev/null +++ b/test/fig-id-invalid/expected.svrl @@ -0,0 +1,9 @@ + + + + + Line 20: fig[id="bad"] - [fig-id-invalid] +ID values must start with 'fig-' in all <fig> elements. + + + diff --git a/test/fig-id-invalid/fig-id-invalid.dita b/test/fig-id-invalid/fig-id-invalid.dita new file mode 100644 index 0000000..502c5f1 --- /dev/null +++ b/test/fig-id-invalid/fig-id-invalid.dita @@ -0,0 +1,27 @@ + + + + fig-id-invalid + +

+ <fig> 'id' attributes must be in the following format - (lowercase, a-z only, words separated by hyphens) +

+
+ Good Fig + + Before the Change + + + + +
+
+ Bad Fig + + After the Change + + + +
+ +
\ No newline at end of file diff --git a/test/fig-id-invalid/graphics/something-after.png b/test/fig-id-invalid/graphics/something-after.png new file mode 100644 index 0000000000000000000000000000000000000000..a55a729fb86f34ed6329d7aa77e07f339fd8719d GIT binary patch literal 3288 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 S6SeyH!O+z-(kNH65BopeOJz6! literal 0 HcmV?d00001 diff --git a/test/fig-id-invalid/graphics/something-before.png b/test/fig-id-invalid/graphics/something-before.png new file mode 100644 index 0000000000000000000000000000000000000000..d087fcd93c2058072cd2c49b137b9d9ae4f40228 GIT binary patch literal 2772 zcmZ{mX*3&X7l2cvT1r|&Ypu1l4~kl9A6xCaHkH!QgxFPxAl0IlDypH@S|%+rgoUN8!+mAwnUjaKElrJG zBF9$?qeEPVh5m|NG|(&vD7s>FR)WnuInMm-rKc|Av*HF7Qoe6|LlH5m3fk$ftkABc zk_CZ@swW0_pPap*oPf? zhdyfzO6wxB4@uaZEO7NH{8GaE&_Pg*UFz9Q|p);ib2Va|2ujP;D?V0jb#hHr@=W3YCjQe#cRf5}Nh%{g55L}XKRGKb#@fg5;n$>_22@TgD3d%nFe51V&6X8ppK9avk4TE0db|>lRGnZ4m6FOaG0?mPt_X&wc@En0bN};q7PRI*M z6M`FJS*)#H6WwYEI1=>DykBtqYRPqfF4+yE{RR!t6It%(=5@2g!Ny;{2OV&RXSf^@>Jg?})Xr~7Gcj^)qjuzlx#MSaU_-KK(9)Ubtp zxOUm~Q73Vb6Rbk3APc`lYb2!NnnUCq@|&wFK#z*yH7R9!U*+T7q(4JN0?l_g*V6oB z3X+iEv~n9Tv`(=+&WB@)D!b1Yl0_97$jAe2%3-C~u(n-8?kX_j<5nfn5Q~GZ%*0FT z0+V$%q96s)dc5Y-LJp5{)qF!B`USK-b__awSmb?R)3-czU4Q$>$rB+dc?NJy}FgXR}(;&w}l)POtt}@P;p;$^*c!O^vLS zWt_c8#I9f{UoR6qB?5Bxm|uCMr$2lK1}0Lo+I)Uwp`7$bG3w8hYV@t1om0_=3GLA= zk=d5yK(>3HApp00r6YQ$GskXBgf!rk$_LrgiwAZ}yU?6434Z`!$iMhUJ54MD%VtSU z+#%4_C;NdW?wa24B(uXHnI+9#?PcSZyi@Cb0L`y%12Cq5&oa9>zfI>~SaOQmYiO_K zwj?RAbETG`Lk%kN;rG$d0CAZ?HhvpQb^g`xFMHwXd$gkWUm93uz4>gpq=zWQiGH>8v$Mk-p+g66H?ahtoKBI zyN_3^1drl7Q_lg@PIx+m6-gFajXp9g-Z-en&`k9kD%W<0j|4zayi=6(u4QmN+vjTS zowm=9$|YcOC!g-!ec=plG+XLcseWld^~7=G8k*@HFHZd1beZ_a%2>17_PFq%YRDfs z6QQFw5*g&{&5Ld@z21l?=3c%b+!%v8;b~MtIX`E1SM8GQr|Acr)sS_wl4ocg;`@o_ zuexbAxC7i8I;zF$mQm*tKK12@oT$uoe9t`dR<72(q=!-g=7BYAnZ4J#Y(F0k@(@wz zBHUIqlcGv3h#_C)j$6~1@e%Ou(z*c#=Ityr`p=viaV_Q2Chz51ykPrW(=*-1tT1Wu zeps$(fwLy zO>tUk9E+~3x{b-E&c47!*2bJdF(9#$x(?m(3+D)LOzn&bSPD`&13#g9>hfakWI+ql zgP2u$Ie;vZgbjFjca#04z~aisen#D)4kLUkYKlOteIeOy9}{cA+OW6819{|D2ku{b z%>v&YG1~Fru_6#Y>Be~|2JaGjT7HNXx5wt?8H9g}zmMV+g@!;^hqkWFnyU(-Xgn%? z+QDMskr#`cZjWO%BmH{%sKRwwI7LGn!b8U1>=MRZ9iy^8oNDiOVT~1&z9yuFV;XEss3t~$Mq_~> z518bg(*24hwj#ZS$2%+u$3A?OvpP*Ns&MOFj~AobJw-&b$~^hY0quLJYiqLWN5*$9 z04+EMvz|2darKY%DP1?>v+?~%L5)!~s%38jW2fh-TtIDOaRQzNMHMUh6?YzR6oY%; zNg+p_j0PNKXP&QVs8v8^F+k?+68?Ygz z?;5-$aZ$E*C~-W6>&IC1QRf|U{8P@%Aha9RStiGA_5KV~fm;gf*z%|ss7E55UUU}G zyJ#=8l``xk1hRcRl#EldQTdR)_;$u`SR z?qG72@#_eKwKAI(Mz+ns*MiK<`n`WxaWPz3=|7WCA%EF0CF zxo$1ZYwydiHRnlIi|mWVPHXf25*c{+bk4K=!V1^quVkGFEkaSI|Fy6o8C{E_V=IJ9 zD`I?GV-6Gwj=bgD=@z;HAFl4qE8fAv47`cff_xs9@BkGKu`{bqnhP0FvvvNs8zT!; z$uwikutzN=tdp?9wCFa?ToLQ;XIxv%9iUN2k$W$cV>+J4M*P=_elAoOmVfG5KWY9S e^?D*kJ3i&;xyi0|p{C$pxwJI1Gp+vpUfe$&5m)s9 literal 0 HcmV?d00001 diff --git a/test/fig-title-missing/build.xml b/test/fig-title-missing/build.xml new file mode 100644 index 0000000..359a364 --- /dev/null +++ b/test/fig-title-missing/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that a fig without an ID is a validation error + + + + + + diff --git a/test/fig-title-missing/document.ditamap b/test/fig-title-missing/document.ditamap new file mode 100644 index 0000000..8cdc7a9 --- /dev/null +++ b/test/fig-title-missing/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/fig-title-missing/expected.svrl b/test/fig-title-missing/expected.svrl new file mode 100644 index 0000000..6b6529e --- /dev/null +++ b/test/fig-title-missing/expected.svrl @@ -0,0 +1,9 @@ + + + + + Line 20: fig[id="fig-bad"] - [fig-title-missing] +Always provide a title attribute in <fig> elements. + + + diff --git a/test/fig-title-missing/fig-title-missing.dita b/test/fig-title-missing/fig-title-missing.dita new file mode 100644 index 0000000..1542c53 --- /dev/null +++ b/test/fig-title-missing/fig-title-missing.dita @@ -0,0 +1,26 @@ + + + + fig-title-missing + +

+ <fig> elements must always have a <title> +

+
+ Good Fig + + Before the Change + + + + +
+
+ Bad Fig + + + + +
+ +
\ No newline at end of file diff --git a/test/fig-title-missing/graphics/something-after.png b/test/fig-title-missing/graphics/something-after.png new file mode 100644 index 0000000000000000000000000000000000000000..a55a729fb86f34ed6329d7aa77e07f339fd8719d GIT binary patch literal 3288 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 S6SeyH!O+z-(kNH65BopeOJz6! literal 0 HcmV?d00001 diff --git a/test/fig-title-missing/graphics/something-before.png b/test/fig-title-missing/graphics/something-before.png new file mode 100644 index 0000000000000000000000000000000000000000..d087fcd93c2058072cd2c49b137b9d9ae4f40228 GIT binary patch literal 2772 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 literal 0 HcmV?d00001 diff --git a/test/file-not-lower-case/FILE-NOT-LOWER-CASE.dita b/test/file-not-lower-case/FILE-NOT-LOWER-CASE.dita new file mode 100644 index 0000000..d2d6ee5 --- /dev/null +++ b/test/file-not-lower-case/FILE-NOT-LOWER-CASE.dita @@ -0,0 +1,16 @@ + + + + + file-not-lower-case + +

+ File name must be compliant with the naming rule (lowercase, a-z only, words separated by hyphens) +

+ + +

+ The file containing this text is erroneously named FILE-NOT-LOWER-CASE.dita (notice the upper-case file name). +

+ +
diff --git a/test/file-not-lower-case/build.xml b/test/file-not-lower-case/build.xml new file mode 100644 index 0000000..971c629 --- /dev/null +++ b/test/file-not-lower-case/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that file which is not lower-case is a validation error + + + + + + diff --git a/test/file-not-lower-case/document.ditamap b/test/file-not-lower-case/document.ditamap new file mode 100644 index 0000000..1978f41 --- /dev/null +++ b/test/file-not-lower-case/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/file-not-lower-case/expected.svrl b/test/file-not-lower-case/expected.svrl new file mode 100644 index 0000000..0b81d9e --- /dev/null +++ b/test/file-not-lower-case/expected.svrl @@ -0,0 +1,13 @@ + + + + + Line 5: topicref - [href-not-lower-case] +The value provided in href="FILE-NOT-LOWER-CASE.dita" is invalid, allowed characters are: lowercase, a-z only, words separated by hyphens. + + + Line 3: topic[id="file-not-lower-case"] - [file-not-lower-case] +Found file 'FILE-NOT-LOWER-CASE.dita' with invalid name, allowed characters in file names are: lowercase, a-z only, words separated by hyphens. + + + diff --git a/test/href-not-lower-case-image/build.xml b/test/href-not-lower-case-image/build.xml new file mode 100644 index 0000000..f937e6c --- /dev/null +++ b/test/href-not-lower-case-image/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that an image href which is not lower-case is a validation error + + + + + + diff --git a/test/href-not-lower-case-image/document.ditamap b/test/href-not-lower-case-image/document.ditamap new file mode 100644 index 0000000..0b1e3ad --- /dev/null +++ b/test/href-not-lower-case-image/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/href-not-lower-case-image/expected.svrl b/test/href-not-lower-case-image/expected.svrl new file mode 100644 index 0000000..1b538d8 --- /dev/null +++ b/test/href-not-lower-case-image/expected.svrl @@ -0,0 +1,17 @@ + + + + + Line 11: image - [image-href-ref-file-not-found] +The linked image file does not exist. Check the graphics folder for the missing file and make sure the link and file name specified are correct. + + + Line 15: image - [href-not-lower-case] +The value provided in href="../graphics/SAMPLE-JPEG.jpg" is invalid, allowed characters are: lowercase, a-z only, words separated by hyphens. + + + Line 15: image - [image-href-ref-file-not-found] +The linked image file does not exist. Check the graphics folder for the missing file and make sure the link and file name specified are correct. + + + diff --git a/test/href-not-lower-case-image/href-not-lower-case-image.dita b/test/href-not-lower-case-image/href-not-lower-case-image.dita new file mode 100644 index 0000000..f2ce4be --- /dev/null +++ b/test/href-not-lower-case-image/href-not-lower-case-image.dita @@ -0,0 +1,18 @@ + + + + href-not-lower-case - image + +

+ <image> - filename and href attribute must be lowercase, a-z only, words separated by hyphens +

+
+ Good image + +
+
+ Bad image + +
+ +
diff --git a/test/href-not-lower-case-xref/build.xml b/test/href-not-lower-case-xref/build.xml new file mode 100644 index 0000000..4ef4e95 --- /dev/null +++ b/test/href-not-lower-case-xref/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that an xref which is not lower-case is a validation error + + + + + + diff --git a/test/href-not-lower-case-xref/document.ditamap b/test/href-not-lower-case-xref/document.ditamap new file mode 100644 index 0000000..93260c1 --- /dev/null +++ b/test/href-not-lower-case-xref/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/href-not-lower-case-xref/expected.svrl b/test/href-not-lower-case-xref/expected.svrl new file mode 100644 index 0000000..3abb7ff --- /dev/null +++ b/test/href-not-lower-case-xref/expected.svrl @@ -0,0 +1,41 @@ + + + + + Line 11: xref - [xref-external-file-not-found] +The file specified in <xref href="../graphics/sample-jpeg.jpeg"> does not exist. Check the related folder for the missing file and make sure the link and file name specified are correct. + + + Line 12: xref - [xref-external-file-not-found] +The file specified in <xref href="id-not-unique.dita#good"> does not exist. Check the related folder for the missing file and make sure the link and file name specified are correct. + + + Line 13: xref - [xref-external-file-not-found] +The file specified in <xref href="id-not-unique.dita#good/p1"> does not exist. Check the related folder for the missing file and make sure the link and file name specified are correct. + + + Line 17: xref - [href-not-lower-case] +The value provided in href="../graphics/SAMPLE-JPEG.jpg" is invalid, allowed characters are: lowercase, a-z only, words separated by hyphens. + + + Line 17: xref - [xref-external-file-not-found] +The file specified in <xref href="../graphics/SAMPLE-JPEG.jpg"> does not exist. Check the related folder for the missing file and make sure the link and file name specified are correct. + + + Line 18: xref - [href-not-lower-case] +The value provided in href="FILE-NOT-LOWER-CASE.dita#href" is invalid, allowed characters are: lowercase, a-z only, words separated by hyphens. + + + Line 18: xref - [xref-external-file-not-found] +The file specified in <xref href="FILE-NOT-LOWER-CASE.dita#href"> does not exist. Check the related folder for the missing file and make sure the link and file name specified are correct. + + + Line 19: xref - [href-not-lower-case] +The value provided in href="FILE-NOT-LOWER-CASE.dita#file-not-lower-case/href" is invalid, allowed characters are: lowercase, a-z only, words separated by hyphens. + + + Line 19: xref - [xref-external-file-not-found] +The file specified in <xref href="FILE-NOT-LOWER-CASE.dita#file-not-lower-case/href"> does not exist. Check the related folder for the missing file and make sure the link and file name specified are correct. + + + diff --git a/test/href-not-lower-case-xref/href-not-lower-case-xref.dita b/test/href-not-lower-case-xref/href-not-lower-case-xref.dita new file mode 100644 index 0000000..89bf929 --- /dev/null +++ b/test/href-not-lower-case-xref/href-not-lower-case-xref.dita @@ -0,0 +1,22 @@ + + + + href-not-lower-case - xref + +

+ <xref> For an href to an external file, the filename must be lowercase, a-z only, words separated by hyphens +

+
+ Good xrefs +

Sample conformant link to an image file.

+

Sample conformant link to topic 19 file's "good" section.

+

Sample conformant link to topic 19 file's "good" section subelement.

+
+
+ Bad xrefs +

Sample non-conformant link to an image file.

+

Sample non-conformant link to FILE-NOT-LOWER-CASE p element.

+

Sample non-conformant linkto FILE-NOT-LOWER-CASE p element.

+
+ +
diff --git a/test/id-blacklisted/build.xml b/test/id-blacklisted/build.xml new file mode 100644 index 0000000..2eca1f2 --- /dev/null +++ b/test/id-blacklisted/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that ID on the blacklist is a validation error + + + + + + diff --git a/test/id-blacklisted/document.ditamap b/test/id-blacklisted/document.ditamap new file mode 100644 index 0000000..c051868 --- /dev/null +++ b/test/id-blacklisted/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/id-blacklisted/expected.svrl b/test/id-blacklisted/expected.svrl new file mode 100644 index 0000000..4a131d6 --- /dev/null +++ b/test/id-blacklisted/expected.svrl @@ -0,0 +1,4 @@ + + + + diff --git a/test/id-blacklisted/id-blacklisted.dita b/test/id-blacklisted/id-blacklisted.dita new file mode 100644 index 0000000..11edd09 --- /dev/null +++ b/test/id-blacklisted/id-blacklisted.dita @@ -0,0 +1,25 @@ + + + + id-blacklisted + +

+ All elements should not have an 'id' attribute with a value of 'content', this value is reserved +

+
+ Good p + +

+ Morbi nec aliquet libero, ac condimentum tortor. Ut ultrices orci placerat elit rutrum ullamcorper. Etiam vulputate ante eget turpis iaculis, vel fermentum diam porttitor. Morbi pretium tempor nisi, at convallis sem tincidunt ut. Maecenas vitae purus malesuada, elementum dolor ac, porta nisi. Fusce ut dolor in nunc imperdiet lobortis a quis purus. Aliquam nec nibh in ex gravida venenatis vitae in ex. Duis non dui at est aliquam pretium. Sed et egestas tellus. Cras quis condimentum est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi gravida vel dolor ac posuere. Nam vel posuere orci. Nunc eros velit, mattis a ligula nec, finibus aliquam enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. +

+ +
+
+ Bad p + +

+ Morbi nec aliquet libero, ac condimentum tortor. Ut ultrices orci placerat elit rutrum ullamcorper. Etiam vulputate ante eget turpis iaculis, vel fermentum diam porttitor. Morbi pretium tempor nisi, at convallis sem tincidunt ut. Maecenas vitae purus malesuada, elementum dolor ac, porta nisi. Fusce ut dolor in nunc imperdiet lobortis a quis purus. Aliquam nec nibh in ex gravida venenatis vitae in ex. Duis non dui at est aliquam pretium. Sed et egestas tellus. Cras quis condimentum est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi gravida vel dolor ac posuere. Nam vel posuere orci. Nunc eros velit, mattis a ligula nec, finibus aliquam enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. +

+
+ +
\ No newline at end of file diff --git a/test/id-not-lower-case-dl/build.xml b/test/id-not-lower-case-dl/build.xml new file mode 100644 index 0000000..dd660e1 --- /dev/null +++ b/test/id-not-lower-case-dl/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that a definition list ID which is not lower-case is a validation error + + + + + + diff --git a/test/id-not-lower-case-dl/document.ditamap b/test/id-not-lower-case-dl/document.ditamap new file mode 100644 index 0000000..abdd873 --- /dev/null +++ b/test/id-not-lower-case-dl/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/id-not-lower-case-dl/expected.svrl b/test/id-not-lower-case-dl/expected.svrl new file mode 100644 index 0000000..20d81f0 --- /dev/null +++ b/test/id-not-lower-case-dl/expected.svrl @@ -0,0 +1,9 @@ + + + + + Line 25: dl[id="BaD"] - [id-not-lower-case] +The ID value in id="BaD" is invalid, allowed characters are: lowercase, a-z only, words separated by hyphens. + + + diff --git a/test/id-not-lower-case-dl/id-not-lower-case-dl.dita b/test/id-not-lower-case-dl/id-not-lower-case-dl.dita new file mode 100644 index 0000000..761d216 --- /dev/null +++ b/test/id-not-lower-case-dl/id-not-lower-case-dl.dita @@ -0,0 +1,37 @@ + + + + id-not-lower-case - dl + +

+ <dl> 'id' attributes must be in the following format - (lowercase, a-z only, words separated by hyphens) +

+
+ Good dl +
+ +
Bytes returned
+
The number of bytes of data returned.
+
+ +
Bytes available
+
The number of bytes of data available to be returned.
+
+
+
+
+ Bad dl + +
+ +
Bytes returned
+
The number of bytes of data returned.
+
+ +
Bytes available
+
The number of bytes of data available to be returned.
+
+
+
+ +
\ No newline at end of file diff --git a/test/id-not-lower-case-ol/build.xml b/test/id-not-lower-case-ol/build.xml new file mode 100644 index 0000000..a0f98df --- /dev/null +++ b/test/id-not-lower-case-ol/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that an ordered list ID which is not lower-case is a validation error + + + + + + diff --git a/test/id-not-lower-case-ol/document.ditamap b/test/id-not-lower-case-ol/document.ditamap new file mode 100644 index 0000000..0aada85 --- /dev/null +++ b/test/id-not-lower-case-ol/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/id-not-lower-case-ol/expected.svrl b/test/id-not-lower-case-ol/expected.svrl new file mode 100644 index 0000000..f9a13d8 --- /dev/null +++ b/test/id-not-lower-case-ol/expected.svrl @@ -0,0 +1,9 @@ + + + + + Line 23: ol[id="bAd"] - [id-not-lower-case] +The ID value in id="bAd" is invalid, allowed characters are: lowercase, a-z only, words separated by hyphens. + + + diff --git a/test/id-not-lower-case-ol/id-not-lower-case-ol.dita b/test/id-not-lower-case-ol/id-not-lower-case-ol.dita new file mode 100644 index 0000000..ff74c3a --- /dev/null +++ b/test/id-not-lower-case-ol/id-not-lower-case-ol.dita @@ -0,0 +1,34 @@ + + + + id-not-lower-case - ol + +

+ <ol> 'id' attributes must be in the following format - (lowercase, a-z only, words separated by hyphens) +

+
+ Good ol +
    +
  1. Red
  2. +
  3. Orange
  4. +
  5. Yellow
  6. +
  7. Green
  8. +
  9. Blue
  10. +
  11. Indigo
  12. +
  13. Violet
  14. +
+
+
+ Bad ol +
    +
  1. Red
  2. +
  3. Orange
  4. +
  5. Yellow
  6. +
  7. Green
  8. +
  9. Blue
  10. +
  11. Indigo
  12. +
  13. Violet
  14. +
+
+ +
\ No newline at end of file diff --git a/test/id-not-lower-case-paragraph/build.xml b/test/id-not-lower-case-paragraph/build.xml new file mode 100644 index 0000000..7160fd4 --- /dev/null +++ b/test/id-not-lower-case-paragraph/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that a paragraph ID which is not lower-case is a validation error + + + + + + diff --git a/test/id-not-lower-case-paragraph/document.ditamap b/test/id-not-lower-case-paragraph/document.ditamap new file mode 100644 index 0000000..0a72f1c --- /dev/null +++ b/test/id-not-lower-case-paragraph/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/id-not-lower-case-paragraph/expected.svrl b/test/id-not-lower-case-paragraph/expected.svrl new file mode 100644 index 0000000..5d1196d --- /dev/null +++ b/test/id-not-lower-case-paragraph/expected.svrl @@ -0,0 +1,9 @@ + + + + + Line 17: p[id="bAd"] - [id-not-lower-case] +The ID value in id="bAd" is invalid, allowed characters are: lowercase, a-z only, words separated by hyphens. + + + diff --git a/test/id-not-lower-case-paragraph/id-not-lower-case-paragraph.dita b/test/id-not-lower-case-paragraph/id-not-lower-case-paragraph.dita new file mode 100644 index 0000000..77a08fc --- /dev/null +++ b/test/id-not-lower-case-paragraph/id-not-lower-case-paragraph.dita @@ -0,0 +1,22 @@ + + + + id-not-lower-case - paragraph + +

+ <p> 'id' attributes must be in the following format - (lowercase, a-z only, words separated by hyphens) +

+
+ Good p +

+ Morbi nec aliquet libero, ac condimentum tortor. Ut ultrices orci placerat elit rutrum ullamcorper. Etiam vulputate ante eget turpis iaculis, vel fermentum diam porttitor. Morbi pretium tempor nisi, at convallis sem tincidunt ut. Maecenas vitae purus malesuada, elementum dolor ac, porta nisi. Fusce ut dolor in nunc imperdiet lobortis a quis purus. Aliquam nec nibh in ex gravida venenatis vitae in ex. Duis non dui at est aliquam pretium. Sed et egestas tellus. Cras quis condimentum est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi gravida vel dolor ac posuere. Nam vel posuere orci. Nunc eros velit, mattis a ligula nec, finibus aliquam enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. +

+
+
+ Bad p +

+ Morbi nec aliquet libero, ac condimentum tortor. Ut ultrices orci placerat elit rutrum ullamcorper. Etiam vulputate ante eget turpis iaculis, vel fermentum diam porttitor. Morbi pretium tempor nisi, at convallis sem tincidunt ut. Maecenas vitae purus malesuada, elementum dolor ac, porta nisi. Fusce ut dolor in nunc imperdiet lobortis a quis purus. Aliquam nec nibh in ex gravida venenatis vitae in ex. Duis non dui at est aliquam pretium. Sed et egestas tellus. Cras quis condimentum est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi gravida vel dolor ac posuere. Nam vel posuere orci. Nunc eros velit, mattis a ligula nec, finibus aliquam enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. +

+
+ +
\ No newline at end of file diff --git a/test/id-not-lower-case-row/build.xml b/test/id-not-lower-case-row/build.xml new file mode 100644 index 0000000..f757e60 --- /dev/null +++ b/test/id-not-lower-case-row/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that a row ID which is not lower-case is a validation error + + + + + + diff --git a/test/id-not-lower-case-row/document.ditamap b/test/id-not-lower-case-row/document.ditamap new file mode 100644 index 0000000..b100dd8 --- /dev/null +++ b/test/id-not-lower-case-row/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/id-not-lower-case-row/expected.svrl b/test/id-not-lower-case-row/expected.svrl new file mode 100644 index 0000000..c3b8a14 --- /dev/null +++ b/test/id-not-lower-case-row/expected.svrl @@ -0,0 +1,9 @@ + + + + + Line 29: row[id="bAd"] - [id-not-lower-case] +The ID value in id="bAd" is invalid, allowed characters are: lowercase, a-z only, words separated by hyphens. + + + diff --git a/test/id-not-lower-case-row/id-not-lower-case-row.dita b/test/id-not-lower-case-row/id-not-lower-case-row.dita new file mode 100644 index 0000000..d0bf003 --- /dev/null +++ b/test/id-not-lower-case-row/id-not-lower-case-row.dita @@ -0,0 +1,37 @@ + + + + id-not-lower-case - row + +

+ <row> 'id' attributes must be in the following format - (lowercase, a-z only, words separated by hyphens) +

+
+ Good Row + + + + + +   + + + +
+ +
+
+ Bad Row + + + + + +   + + + +
+
+ +
\ No newline at end of file diff --git a/test/id-not-lower-case-section/build.xml b/test/id-not-lower-case-section/build.xml new file mode 100644 index 0000000..01c4b5c --- /dev/null +++ b/test/id-not-lower-case-section/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that a section ID which is not lower-case is a validation error + + + + + + diff --git a/test/id-not-lower-case-section/document.ditamap b/test/id-not-lower-case-section/document.ditamap new file mode 100644 index 0000000..90b0377 --- /dev/null +++ b/test/id-not-lower-case-section/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/id-not-lower-case-section/expected.svrl b/test/id-not-lower-case-section/expected.svrl new file mode 100644 index 0000000..820b7d2 --- /dev/null +++ b/test/id-not-lower-case-section/expected.svrl @@ -0,0 +1,9 @@ + + + + + Line 15: section[id="bAd"] - [id-not-lower-case] +The ID value in id="bAd" is invalid, allowed characters are: lowercase, a-z only, words separated by hyphens. + + + diff --git a/test/id-not-lower-case-section/id-not-lower-case-section.dita b/test/id-not-lower-case-section/id-not-lower-case-section.dita new file mode 100644 index 0000000..c8671d0 --- /dev/null +++ b/test/id-not-lower-case-section/id-not-lower-case-section.dita @@ -0,0 +1,22 @@ + + + + id-not-lower-case - section + +

+ <section> must have an 'id' attribute in the following format - (lowercase, a-z only, words separated by hyphens) +

+
+ Good section +

+ Morbi nec aliquet libero, ac condimentum tortor. Ut ultrices orci placerat elit rutrum ullamcorper. Etiam vulputate ante eget turpis iaculis, vel fermentum diam porttitor. Morbi pretium tempor nisi, at convallis sem tincidunt ut. Maecenas vitae purus malesuada, elementum dolor ac, porta nisi. Fusce ut dolor in nunc imperdiet lobortis a quis purus. Aliquam nec nibh in ex gravida venenatis vitae in ex. Duis non dui at est aliquam pretium. Sed et egestas tellus. Cras quis condimentum est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi gravida vel dolor ac posuere. Nam vel posuere orci. Nunc eros velit, mattis a ligula nec, finibus aliquam enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. +

+
+
+ Bad section +

+ Morbi nec aliquet libero, ac condimentum tortor. Ut ultrices orci placerat elit rutrum ullamcorper. Etiam vulputate ante eget turpis iaculis, vel fermentum diam porttitor. Morbi pretium tempor nisi, at convallis sem tincidunt ut. Maecenas vitae purus malesuada, elementum dolor ac, porta nisi. Fusce ut dolor in nunc imperdiet lobortis a quis purus. Aliquam nec nibh in ex gravida venenatis vitae in ex. Duis non dui at est aliquam pretium. Sed et egestas tellus. Cras quis condimentum est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi gravida vel dolor ac posuere. Nam vel posuere orci. Nunc eros velit, mattis a ligula nec, finibus aliquam enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. +

+
+ +
\ No newline at end of file diff --git a/test/id-not-lower-case-sl/build.xml b/test/id-not-lower-case-sl/build.xml new file mode 100644 index 0000000..66e4088 --- /dev/null +++ b/test/id-not-lower-case-sl/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that a simple list ID which is not lower-case is a validation error + + + + + + diff --git a/test/id-not-lower-case-sl/document.ditamap b/test/id-not-lower-case-sl/document.ditamap new file mode 100644 index 0000000..672999d --- /dev/null +++ b/test/id-not-lower-case-sl/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/id-not-lower-case-sl/expected.svrl b/test/id-not-lower-case-sl/expected.svrl new file mode 100644 index 0000000..14af4ab --- /dev/null +++ b/test/id-not-lower-case-sl/expected.svrl @@ -0,0 +1,9 @@ + + + + + Line 21: sl[id="bAd"] - [id-not-lower-case] +The ID value in id="bAd" is invalid, allowed characters are: lowercase, a-z only, words separated by hyphens. + + + diff --git a/test/id-not-lower-case-sl/id-not-lower-case-sl.dita b/test/id-not-lower-case-sl/id-not-lower-case-sl.dita new file mode 100644 index 0000000..475d996 --- /dev/null +++ b/test/id-not-lower-case-sl/id-not-lower-case-sl.dita @@ -0,0 +1,27 @@ + + + + id-not-lower-case - sl + +

+ <sl> 'id' attributes must be in the following format - (lowercase, a-z only, words separated by hyphens) +

+
+ Good sl + + + Red + Orange + + +
+
+ Bad sl + + + Red + Orange + +
+ +
\ No newline at end of file diff --git a/test/id-not-lower-case-topic/build.xml b/test/id-not-lower-case-topic/build.xml new file mode 100644 index 0000000..2823e0d --- /dev/null +++ b/test/id-not-lower-case-topic/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that a topic ID which is not lower-case is a validation error + + + + + + diff --git a/test/id-not-lower-case-topic/document.ditamap b/test/id-not-lower-case-topic/document.ditamap new file mode 100644 index 0000000..e2f1f3b --- /dev/null +++ b/test/id-not-lower-case-topic/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/id-not-lower-case-topic/expected.svrl b/test/id-not-lower-case-topic/expected.svrl new file mode 100644 index 0000000..ee410f0 --- /dev/null +++ b/test/id-not-lower-case-topic/expected.svrl @@ -0,0 +1,9 @@ + + + + + Line 19: topic[id="BaD"] - [id-not-lower-case] +The ID value in id="BaD" is invalid, allowed characters are: lowercase, a-z only, words separated by hyphens. + + + diff --git a/test/id-not-lower-case-topic/id-not-lower-case-topic.dita b/test/id-not-lower-case-topic/id-not-lower-case-topic.dita new file mode 100644 index 0000000..17229f7 --- /dev/null +++ b/test/id-not-lower-case-topic/id-not-lower-case-topic.dita @@ -0,0 +1,27 @@ + + + + id-not-lower-case - topic + +

+ <topic> must have an 'id' attribute in the following format - (lowercase, a-z only, words separated by hyphens) + +

+ + + Good topic + +

+ Morbi nec aliquet libero, ac condimentum tortor. Ut ultrices orci placerat elit rutrum ullamcorper. Etiam vulputate ante eget turpis iaculis, vel fermentum diam porttitor. Morbi pretium tempor nisi, at convallis sem tincidunt ut. Maecenas vitae purus malesuada, elementum dolor ac, porta nisi. Fusce ut dolor in nunc imperdiet lobortis a quis purus. Aliquam nec nibh in ex gravida venenatis vitae in ex. Duis non dui at est aliquam pretium. Sed et egestas tellus. Cras quis condimentum est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi gravida vel dolor ac posuere. Nam vel posuere orci. Nunc eros velit, mattis a ligula nec, finibus aliquam enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. +

+ +
+ + Bad topic + +

+ Morbi nec aliquet libero, ac condimentum tortor. Ut ultrices orci placerat elit rutrum ullamcorper. Etiam vulputate ante eget turpis iaculis, vel fermentum diam porttitor. Morbi pretium tempor nisi, at convallis sem tincidunt ut. Maecenas vitae purus malesuada, elementum dolor ac, porta nisi. Fusce ut dolor in nunc imperdiet lobortis a quis purus. Aliquam nec nibh in ex gravida venenatis vitae in ex. Duis non dui at est aliquam pretium. Sed et egestas tellus. Cras quis condimentum est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi gravida vel dolor ac posuere. Nam vel posuere orci. Nunc eros velit, mattis a ligula nec, finibus aliquam enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. +

+ +
+
\ No newline at end of file diff --git a/test/id-not-lower-case-ul/build.xml b/test/id-not-lower-case-ul/build.xml new file mode 100644 index 0000000..43557de --- /dev/null +++ b/test/id-not-lower-case-ul/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that an unordered list ID which is not lower-case is a validation error + + + + + + diff --git a/test/id-not-lower-case-ul/document.ditamap b/test/id-not-lower-case-ul/document.ditamap new file mode 100644 index 0000000..df2386f --- /dev/null +++ b/test/id-not-lower-case-ul/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/id-not-lower-case-ul/expected.svrl b/test/id-not-lower-case-ul/expected.svrl new file mode 100644 index 0000000..5f40c37 --- /dev/null +++ b/test/id-not-lower-case-ul/expected.svrl @@ -0,0 +1,9 @@ + + + + + Line 22: ul[id="bAd"] - [id-not-lower-case] +The ID value in id="bAd" is invalid, allowed characters are: lowercase, a-z only, words separated by hyphens. + + + diff --git a/test/id-not-lower-case-ul/id-not-lower-case-ul.dita b/test/id-not-lower-case-ul/id-not-lower-case-ul.dita new file mode 100644 index 0000000..15ca246 --- /dev/null +++ b/test/id-not-lower-case-ul/id-not-lower-case-ul.dita @@ -0,0 +1,28 @@ + + + + id-not-lower-case - ul + +

+ <ul> id attributes must be in the following format - (lowercase, a-z only, words separated by hyphens) +

+ +
+ Good ul + +
    +
  • Red
  • +
  • Orange
  • +
+ +
+
+ Bad ul + +
    +
  • Red
  • +
  • Orange
  • +
+
+ +
\ No newline at end of file diff --git a/test/id-not-unique-bad/build.xml b/test/id-not-unique-bad/build.xml new file mode 100644 index 0000000..4ef8476 --- /dev/null +++ b/test/id-not-unique-bad/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that ID that is not unique is a validation error + + + + + + diff --git a/test/id-not-unique-bad/document.ditamap b/test/id-not-unique-bad/document.ditamap new file mode 100644 index 0000000..3db0d8f --- /dev/null +++ b/test/id-not-unique-bad/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/id-not-unique-bad/expected.svrl b/test/id-not-unique-bad/expected.svrl new file mode 100644 index 0000000..f98bde6 --- /dev/null +++ b/test/id-not-unique-bad/expected.svrl @@ -0,0 +1,9 @@ + + + + + Line 24: p[id="not-unique"] - [id-not-unique] +Found a duplicate ID key/value pair with value 'not-unique', ID values must be unique within a file. Change the ID value. + + + diff --git a/test/id-not-unique-bad/id-not-unique-bad.dita b/test/id-not-unique-bad/id-not-unique-bad.dita new file mode 100644 index 0000000..7717716 --- /dev/null +++ b/test/id-not-unique-bad/id-not-unique-bad.dita @@ -0,0 +1,29 @@ + + + + id-not-unique + +

+ 'id' attributes must be unique within a file +

+
+ Good IDs +

+ Morbi nec aliquet libero, ac condimentum tortor. Ut ultrices orci placerat elit rutrum ullamcorper. Etiam vulputate ante eget turpis iaculis, vel fermentum diam porttitor. Morbi pretium tempor nisi, at convallis sem tincidunt ut. Maecenas vitae purus malesuada, elementum dolor ac, porta nisi. Fusce ut dolor in nunc imperdiet lobortis a quis purus. Aliquam nec nibh in ex gravida venenatis vitae in ex. Duis non dui at est aliquam pretium. Sed et egestas tellus. Cras quis condimentum est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi gravida vel dolor ac posuere. Nam vel posuere orci. Nunc eros velit, mattis a ligula nec, finibus aliquam enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. +

+

+ Morbi nec aliquet libero, ac condimentum tortor. Ut ultrices orci placerat elit rutrum ullamcorper. Etiam vulputate ante eget turpis iaculis, vel fermentum diam porttitor. Morbi pretium tempor nisi, at convallis sem tincidunt ut. Maecenas vitae purus malesuada, elementum dolor ac, porta nisi. Fusce ut dolor in nunc imperdiet lobortis a quis purus. Aliquam nec nibh in ex gravida venenatis vitae in ex. Duis non dui at est aliquam pretium. Sed et egestas tellus. Cras quis condimentum est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi gravida vel dolor ac posuere. Nam vel posuere orci. Nunc eros velit, mattis a ligula nec, finibus aliquam enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. +

+ +
+
+ Bad IDs +

+ Morbi nec aliquet libero, ac condimentum tortor. Ut ultrices orci placerat elit rutrum ullamcorper. Etiam vulputate ante eget turpis iaculis, vel fermentum diam porttitor. Morbi pretium tempor nisi, at convallis sem tincidunt ut. Maecenas vitae purus malesuada, elementum dolor ac, porta nisi. Fusce ut dolor in nunc imperdiet lobortis a quis purus. Aliquam nec nibh in ex gravida venenatis vitae in ex. Duis non dui at est aliquam pretium. Sed et egestas tellus. Cras quis condimentum est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi gravida vel dolor ac posuere. Nam vel posuere orci. Nunc eros velit, mattis a ligula nec, finibus aliquam enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. +

+

+ Morbi nec aliquet libero, ac condimentum tortor. Ut ultrices orci placerat elit rutrum ullamcorper. Etiam vulputate ante eget turpis iaculis, vel fermentum diam porttitor. Morbi pretium tempor nisi, at convallis sem tincidunt ut. Maecenas vitae purus malesuada, elementum dolor ac, porta nisi. Fusce ut dolor in nunc imperdiet lobortis a quis purus. Aliquam nec nibh in ex gravida venenatis vitae in ex. Duis non dui at est aliquam pretium. Sed et egestas tellus. Cras quis condimentum est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi gravida vel dolor ac posuere. Nam vel posuere orci. Nunc eros velit, mattis a ligula nec, finibus aliquam enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. +

+
+ +
\ No newline at end of file diff --git a/test/id-not-unique/build.xml b/test/id-not-unique/build.xml new file mode 100644 index 0000000..73a8dfa --- /dev/null +++ b/test/id-not-unique/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that ID that is unique is OK + + + + + + diff --git a/test/id-not-unique/document.ditamap b/test/id-not-unique/document.ditamap new file mode 100644 index 0000000..3c89b38 --- /dev/null +++ b/test/id-not-unique/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/id-not-unique/expected.svrl b/test/id-not-unique/expected.svrl new file mode 100644 index 0000000..4a131d6 --- /dev/null +++ b/test/id-not-unique/expected.svrl @@ -0,0 +1,4 @@ + + + + diff --git a/test/id-not-unique/id-not-unique.dita b/test/id-not-unique/id-not-unique.dita new file mode 100644 index 0000000..74c0ea4 --- /dev/null +++ b/test/id-not-unique/id-not-unique.dita @@ -0,0 +1,26 @@ + + + + id-not-unique + +

+ 'id' attributes must be unique within a file +

+
+ Good IDs +

+ Morbi nec aliquet libero, ac condimentum tortor. Ut ultrices orci placerat elit rutrum ullamcorper. Etiam vulputate ante eget turpis iaculis, vel fermentum diam porttitor. Morbi pretium tempor nisi, at convallis sem tincidunt ut. Maecenas vitae purus malesuada, elementum dolor ac, porta nisi. Fusce ut dolor in nunc imperdiet lobortis a quis purus. Aliquam nec nibh in ex gravida venenatis vitae in ex. Duis non dui at est aliquam pretium. Sed et egestas tellus. Cras quis condimentum est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi gravida vel dolor ac posuere. Nam vel posuere orci. Nunc eros velit, mattis a ligula nec, finibus aliquam enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. +

+

+ Morbi nec aliquet libero, ac condimentum tortor. Ut ultrices orci placerat elit rutrum ullamcorper. Etiam vulputate ante eget turpis iaculis, vel fermentum diam porttitor. Morbi pretium tempor nisi, at convallis sem tincidunt ut. Maecenas vitae purus malesuada, elementum dolor ac, porta nisi. Fusce ut dolor in nunc imperdiet lobortis a quis purus. Aliquam nec nibh in ex gravida venenatis vitae in ex. Duis non dui at est aliquam pretium. Sed et egestas tellus. Cras quis condimentum est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi gravida vel dolor ac posuere. Nam vel posuere orci. Nunc eros velit, mattis a ligula nec, finibus aliquam enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. +

+ +
+
+ Bad IDs +

+ Failing test will break the build - see id-not-unique-not-unique.dita +

+
+ +
\ No newline at end of file diff --git a/test/image-alt-deprecated/build.xml b/test/image-alt-deprecated/build.xml new file mode 100644 index 0000000..3a61c29 --- /dev/null +++ b/test/image-alt-deprecated/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that an image with an alt attribute is a validation warning + + + + + + diff --git a/test/image-alt-deprecated/document.ditamap b/test/image-alt-deprecated/document.ditamap new file mode 100644 index 0000000..d1d3db7 --- /dev/null +++ b/test/image-alt-deprecated/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/image-alt-deprecated/expected.svrl b/test/image-alt-deprecated/expected.svrl new file mode 100644 index 0000000..0690730 --- /dev/null +++ b/test/image-alt-deprecated/expected.svrl @@ -0,0 +1,9 @@ + + + + + Line 17: image - [image-alt-deprecated] +<image> elements will no longer support the alt attribute in DITA 2.0. Replace the alt attribute with an <alt> sub-element. + + + diff --git a/test/image-alt-deprecated/graphics/SAMPLE-JPEG.jpg b/test/image-alt-deprecated/graphics/SAMPLE-JPEG.jpg new file mode 100644 index 0000000000000000000000000000000000000000..809d216c38a071082c296d69009a3b6ef5afeb3a GIT binary patch literal 4032 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 CC*&Le literal 0 HcmV?d00001 diff --git a/test/image-alt-deprecated/graphics/sample-gif.gif b/test/image-alt-deprecated/graphics/sample-gif.gif new file mode 100644 index 0000000000000000000000000000000000000000..2c44ea933429f414eb4e14c9d94a779fe0f94940 GIT binary patch literal 2287 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 BGqnH! literal 0 HcmV?d00001 diff --git a/test/image-alt-deprecated/graphics/sample-jpeg.jpeg b/test/image-alt-deprecated/graphics/sample-jpeg.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..809d216c38a071082c296d69009a3b6ef5afeb3a GIT binary patch literal 4032 zcmb7Gc|28J_dj<+hTMr{cFmH^V=~VfuBp1Bdqt8WL&gXh3mGeO=BdaOLYYFzm?`1m znq{~mneXpA}vmnt-=;K8|5Xu}V>;w#U0?k0jfd1D)ZUGQ9fHU9^ z0U-b|0t7*T$ZY^C00JP#F8nQE2owaPrs&ux!ywrIR{<~(MN36Z9s}qhAOH-9zyScX z+tH}{_w;}Cz_P>9zTZ;P-c-*RZHam=ob@ca8v596;H5>qj9`57&(da&c&`+zirD^d z1rotZ0=w+q)s6)>lBHd0{A@0nHrDQKj0`<*&BU$XPV+uG%)qWP5;pv8T$d+Z%$oOb zW}^bThF2N$?J{S#rsC4;#62_I&p**NM&EgL*~vj-xLwRtNzqH&P^0hux)&vKQ;UNt5hRr7mD?5Krn{;)`-hSYc!BUfc@tGw=~a|HGaC zc~PNk69x`|kAOv$*sOp6Kwu~Y27^&i|6w#GumBW>K=MdXq13PhIGRa4PSQ1~yqOzg zj?W_TN}Jlcxo`aL3dKyarn5R6{6;u2a$iXB1C?S$ggO+i&KC5&fNM1B$^tFBpDW8( zAFLGCpw#cI|0e0n&)#Xe!oKnJ_2qNdKRo`pUv*zlcM3C+>Z34iq<494oeVUryvQxgQ*YDi9Zf81`=+Q^tX;kQJZ!jxD9ye0+U0o6B`=8cg)+j_?JJdG2e z1I@(LALlDaUf+?LdphcAofq~Yj4$EK-dhL8OJ1*v-pzN`R=0Zc7WUehOkn3{PZmBLoJe{wEv}FbW*8 zR4B9>oCzaIa1D}DkIN!4bMxZMr%lZ$cx?Uykl^0|8JGv9eNMy;!--edo?CU^?$?%o zS{-^}%+ZY90M`Nkx^VnJ_Ak)-SFz=GActQUm?lmt=ukT0$OVtBi~GC`!Y>{+AOtdo z7SmF%M^3Ll-g6(88z2MC94_`kv<;aNp}41>`_u`>^53llcRP0?eETcMO-)*h_!jXv z%j^D0Z)3AEc;&5&FtZuy4E}@!SepboUH>M)XYT4Sny2+KZW5Q;)bGe`q6`Ym0^z`p+ zjVtG9H!U6vo=Bzd7Ib%)&==f}>=)hc7iW&e*3XOo+SMM^*Ei^@Sjh%kH;7H31*ey` z@Z!wfvkS=5FQi`ec(l;r*LqY2HBnB5-CYo4vDn?zI& ztkmDcf!ZKin@sby%S%clHR|uMw>oQNs_47oP3i7OpL7bJMO1Efrg@w?ZOJ5GM1Aet zZk|=$UFRRct#-qiZnwH`xDk@W^-8>hLeI>E2Kdu|jq2)AQ2Z*F_StQ-OU34fX#Lq# z{`gjCtfA``d*GLBH?^YGNm52jaHtIHj)#9L{`}19g=N}q!y&T{V|Jbrln3!DaZ*|) z%Z9p_KC4USnPA*aq)VjN;NJcj#OWJ*881GDNj_*kc zuQOm1Y~xS~Cf=J7fWOHxd`d<1c)EAz2)1ICZD5-cb7jl5xw2K~$q>`Hetv>+w#)0J zk^XIzb#zQ@PhKMGlvt63ueG7As7^5Ri6?OnC|2>oDO7!I7lpF_O!feRM}m^&%i-Lv zB>dk-fmC=7K&&RlFCCOFVpUMzPZy&rQQuj(hwEG~ls~K{wrx>6{*1yGIc8pNEnPRJ z`wV>ccr?*ueow=&!0W)EMJ7mwxjL(z`&9QB+#~rdf2E9+nRv@Hj;yDG1RBH(?@Xa{ zFSXv%?|IwUV(Q!-lSq{Z$yDR2JbE%zg_q@{@Gz>i_httl@AX~NpFfX3>6GZX{rNym zrt24UYH?4V?(|oE#C`62gnUui*Mq={LR9Hsh)_S*?caR#>2BmrUDFgtW75+1&kQtH zuZ$2M{8gm@5Q^7uGVt#jXH4UY*KcyZy>(6D3Ig*-YXxm<-7{S^huc2W(klOMt^fME z4d6vk3IfP+-SAh{Kq<;7AtAuA#{tRWZvGF`!jAyjR%P#WLajp?)pSO~mP45`3o^`? zWI+Fu_;zO@bgEin`kCj(%* zji6PXLkT9O*u6{Xvh@jV9UuLv=0DLm80<=APtx--4R{+qkF!Q#xoFBIy9S-_H5qj7 z{Wi(7VL%nrp;@)pbdz3Ps2=fYE;L@RYTzzEOdGCwy?qDmnDKe;VovJ>k(YEiRmUHL zL6rk%L*BX9$@>Krj2BctqOD*qFAQ!vhvyWp+c+b2yU5Qz zIV|%%N2cO<(n!(TE=Q^s2kMst%Bb8OfP>HHw+#s@92ip$n!s^XDF+P#`>UefB zqR2PYwCKF!{&*G%F3oz$G7{Lws?)joutXIY(Uhyc7Y3)}{`4$E=t#UatPijBkdWd# zF?sO*zWOu+8JOPu<0m2@7pFq+pC5{<$_PIDcIb$aHt6Q5Cq1xihFX1(Hc{500ke!T zkD6EADnY(#`l!Jkc2-(kR{65x-3PZKaJqd<@$&}`47a4}-@Wd$%4Hi&NIIOG;TN_P zk^7Q=M!E2^oNC@|ipdbo!{zE? zxNA_{20n{YZTC_J>5Z~ZFjT_dvOSsSAI!(Q4CrTH2?@PhN}N=f=rI*9G2 z<-323+R&n}xX`U>R~(#{6b{EP!fasmqG?BK7y`;V;Y(}P^jU4b5*h8IAFt_Q zb8o-pO7=ln*c`kA=1&HK%Lg1T8Du>^YywmZ3hNKm-!S{)EDnjo-5drv5+Cmdw}8n2 zy{i0B$pun00E|{ST(_Iu>WNt~pJ?Q{TfpG4XTHX4aX+ zG1nNYN-C~Llwc%|nyy68nFcd43I(qbA(|zEs{QN2d?7(Ow|<05ROsQD$p9kLiGM=t zOpjw|YVoVZ9hZu>UF!WrRmFi)__6}q8S&r}r`rM_ZS62uEfcT{;!gZH;t@Ca1+b{q zeib>jclDLq6}$J>gy-xM4-DU^D$hte&kAR}Z>|hrkpn*>8IXoVES>qA^85wKU;hs` CC*&Le literal 0 HcmV?d00001 diff --git a/test/image-alt-deprecated/graphics/sample-jpg.jpg b/test/image-alt-deprecated/graphics/sample-jpg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..809d216c38a071082c296d69009a3b6ef5afeb3a GIT binary patch literal 4032 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 CC*&Le literal 0 HcmV?d00001 diff --git a/test/image-alt-deprecated/graphics/sample-svg.svg b/test/image-alt-deprecated/graphics/sample-svg.svg new file mode 100644 index 0000000..e12836e --- /dev/null +++ b/test/image-alt-deprecated/graphics/sample-svg.svg @@ -0,0 +1,258 @@ + +image/svg+xml +Dddd + + + +Download File + \ No newline at end of file diff --git a/test/image-alt-deprecated/graphics/something-after.png b/test/image-alt-deprecated/graphics/something-after.png new file mode 100644 index 0000000000000000000000000000000000000000..a55a729fb86f34ed6329d7aa77e07f339fd8719d GIT binary patch literal 3288 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 S6SeyH!O+z-(kNH65BopeOJz6! literal 0 HcmV?d00001 diff --git a/test/image-alt-deprecated/graphics/something-before.png b/test/image-alt-deprecated/graphics/something-before.png new file mode 100644 index 0000000000000000000000000000000000000000..d087fcd93c2058072cd2c49b137b9d9ae4f40228 GIT binary patch literal 2772 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 literal 0 HcmV?d00001 diff --git a/test/image-alt-deprecated/image-alt-deprecated.dita b/test/image-alt-deprecated/image-alt-deprecated.dita new file mode 100644 index 0000000..eee6716 --- /dev/null +++ b/test/image-alt-deprecated/image-alt-deprecated.dita @@ -0,0 +1,21 @@ + + + + image-alt-deprecated + +

+ <image> - the alt attribute is deprecated on image elements +

+
+ Good image alt + + Some alt text + +
+
+ Bad image alt + Some alt text +
+ +
+ diff --git a/test/image-file-not-found/build.xml b/test/image-file-not-found/build.xml new file mode 100644 index 0000000..d39b366 --- /dev/null +++ b/test/image-file-not-found/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that image linked to a non-existent file is a validation error + + + + + + diff --git a/test/image-file-not-found/document.ditamap b/test/image-file-not-found/document.ditamap new file mode 100644 index 0000000..4eb5924 --- /dev/null +++ b/test/image-file-not-found/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/image-file-not-found/expected.svrl b/test/image-file-not-found/expected.svrl new file mode 100644 index 0000000..6170e12 --- /dev/null +++ b/test/image-file-not-found/expected.svrl @@ -0,0 +1,13 @@ + + + + + Line 15: image - [image-file-type-not-supported] +The value provided in href="graphics/non existent jpg" specifies an unsupported file format (only *.jpg, *.jpeg or *.png are allowed). Change the format of the linked file. + + + Line 15: image - [image-href-ref-file-not-found] +The linked image file does not exist. Check the graphics folder for the missing file and make sure the link and file name specified are correct. + + + diff --git a/test/image-file-not-found/graphics/SAMPLE-JPEG.jpg b/test/image-file-not-found/graphics/SAMPLE-JPEG.jpg new file mode 100644 index 0000000000000000000000000000000000000000..809d216c38a071082c296d69009a3b6ef5afeb3a GIT binary patch literal 4032 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 CC*&Le literal 0 HcmV?d00001 diff --git a/test/image-file-not-found/graphics/sample-gif.gif b/test/image-file-not-found/graphics/sample-gif.gif new file mode 100644 index 0000000000000000000000000000000000000000..2c44ea933429f414eb4e14c9d94a779fe0f94940 GIT binary patch literal 2287 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 BGqnH! literal 0 HcmV?d00001 diff --git a/test/image-file-not-found/graphics/sample-jpeg.jpeg b/test/image-file-not-found/graphics/sample-jpeg.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..809d216c38a071082c296d69009a3b6ef5afeb3a GIT binary patch literal 4032 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 CC*&Le literal 0 HcmV?d00001 diff --git a/test/image-file-not-found/graphics/sample-jpg.jpg b/test/image-file-not-found/graphics/sample-jpg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..809d216c38a071082c296d69009a3b6ef5afeb3a GIT binary patch literal 4032 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 CC*&Le literal 0 HcmV?d00001 diff --git a/test/image-file-not-found/graphics/sample-svg.svg b/test/image-file-not-found/graphics/sample-svg.svg new file mode 100644 index 0000000..e12836e --- /dev/null +++ b/test/image-file-not-found/graphics/sample-svg.svg @@ -0,0 +1,258 @@ + +image/svg+xml +Dddd + + + +Download File + \ No newline at end of file diff --git a/test/image-file-not-found/graphics/something-after.png b/test/image-file-not-found/graphics/something-after.png new file mode 100644 index 0000000000000000000000000000000000000000..a55a729fb86f34ed6329d7aa77e07f339fd8719d GIT binary patch literal 3288 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 S6SeyH!O+z-(kNH65BopeOJz6! literal 0 HcmV?d00001 diff --git a/test/image-file-not-found/graphics/something-before.png b/test/image-file-not-found/graphics/something-before.png new file mode 100644 index 0000000000000000000000000000000000000000..d087fcd93c2058072cd2c49b137b9d9ae4f40228 GIT binary patch literal 2772 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 literal 0 HcmV?d00001 diff --git a/test/image-file-not-found/image-file-not-found.dita b/test/image-file-not-found/image-file-not-found.dita new file mode 100644 index 0000000..d1362cd --- /dev/null +++ b/test/image-file-not-found/image-file-not-found.dita @@ -0,0 +1,18 @@ + + + + image-file-not-found + +

+ <image> - the file linked to must exist +

+
+ Good image + +
+
+ Bad image + +
+ +
diff --git a/test/image-file-type-not-supported/build.xml b/test/image-file-type-not-supported/build.xml new file mode 100644 index 0000000..b562c5b --- /dev/null +++ b/test/image-file-type-not-supported/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that an image linked to an unsupported file type is a validation error + + + + + + diff --git a/test/image-file-type-not-supported/document.ditamap b/test/image-file-type-not-supported/document.ditamap new file mode 100644 index 0000000..e9e35d1 --- /dev/null +++ b/test/image-file-type-not-supported/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/image-file-type-not-supported/expected.svrl b/test/image-file-type-not-supported/expected.svrl new file mode 100644 index 0000000..295b00e --- /dev/null +++ b/test/image-file-type-not-supported/expected.svrl @@ -0,0 +1,13 @@ + + + + + Line 17: image - [image-file-type-not-supported] +The value provided in href="graphics/sample-svg.svg" specifies an unsupported file format (only *.jpg, *.jpeg or *.png are allowed). Change the format of the linked file. + + + Line 18: image - [image-file-type-not-supported] +The value provided in href="graphics/sample-gif.gif" specifies an unsupported file format (only *.jpg, *.jpeg or *.png are allowed). Change the format of the linked file. + + + diff --git a/test/image-file-type-not-supported/graphics/SAMPLE-JPEG.jpg b/test/image-file-type-not-supported/graphics/SAMPLE-JPEG.jpg new file mode 100644 index 0000000000000000000000000000000000000000..809d216c38a071082c296d69009a3b6ef5afeb3a GIT binary patch literal 4032 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 CC*&Le literal 0 HcmV?d00001 diff --git a/test/image-file-type-not-supported/graphics/sample-gif.gif b/test/image-file-type-not-supported/graphics/sample-gif.gif new file mode 100644 index 0000000000000000000000000000000000000000..2c44ea933429f414eb4e14c9d94a779fe0f94940 GIT binary patch literal 2287 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 BGqnH! literal 0 HcmV?d00001 diff --git a/test/image-file-type-not-supported/graphics/sample-jpeg.jpeg b/test/image-file-type-not-supported/graphics/sample-jpeg.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..809d216c38a071082c296d69009a3b6ef5afeb3a GIT binary patch literal 4032 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 CC*&Le literal 0 HcmV?d00001 diff --git a/test/image-file-type-not-supported/graphics/sample-jpg.jpg b/test/image-file-type-not-supported/graphics/sample-jpg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..809d216c38a071082c296d69009a3b6ef5afeb3a GIT binary patch literal 4032 zcmb7Gc|28J_dj<+hTMr{cFmH^V=~VfuBp1Bdqt8WL&gXh3mGeO=BdaOLYYFzm?`1m znq{~mneXpA}vmnt-=;K8|5Xu}V>;w#U0?k0jfd1D)ZUGQ9fHU9^ z0U-b|0t7*T$ZY^C00JP#F8nQE2owaPrs&ux!ywrIR{<~(MN36Z9s}qhAOH-9zyScX z+tH}{_w;}Cz_P>9zTZ;P-c-*RZHam=ob@ca8v596;H5>qj9`57&(da&c&`+zirD^d z1rotZ0=w+q)s6)>lBHd0{A@0nHrDQKj0`<*&BU$XPV+uG%)qWP5;pv8T$d+Z%$oOb zW}^bThF2N$?J{S#rsC4;#62_I&p**NM&EgL*~vj-xLwRtNzqH&P^0hux)&vKQ;UNt5hRr7mD?5Krn{;)`-hSYc!BUfc@tGw=~a|HGaC zc~PNk69x`|kAOv$*sOp6Kwu~Y27^&i|6w#GumBW>K=MdXq13PhIGRa4PSQ1~yqOzg zj?W_TN}Jlcxo`aL3dKyarn5R6{6;u2a$iXB1C?S$ggO+i&KC5&fNM1B$^tFBpDW8( zAFLGCpw#cI|0e0n&)#Xe!oKnJ_2qNdKRo`pUv*zlcM3C+>Z34iq<494oeVUryvQxgQ*YDi9Zf81`=+Q^tX;kQJZ!jxD9ye0+U0o6B`=8cg)+j_?JJdG2e z1I@(LALlDaUf+?LdphcAofq~Yj4$EK-dhL8OJ1*v-pzN`R=0Zc7WUehOkn3{PZmBLoJe{wEv}FbW*8 zR4B9>oCzaIa1D}DkIN!4bMxZMr%lZ$cx?Uykl^0|8JGv9eNMy;!--edo?CU^?$?%o zS{-^}%+ZY90M`Nkx^VnJ_Ak)-SFz=GActQUm?lmt=ukT0$OVtBi~GC`!Y>{+AOtdo z7SmF%M^3Ll-g6(88z2MC94_`kv<;aNp}41>`_u`>^53llcRP0?eETcMO-)*h_!jXv z%j^D0Z)3AEc;&5&FtZuy4E}@!SepboUH>M)XYT4Sny2+KZW5Q;)bGe`q6`Ym0^z`p+ zjVtG9H!U6vo=Bzd7Ib%)&==f}>=)hc7iW&e*3XOo+SMM^*Ei^@Sjh%kH;7H31*ey` z@Z!wfvkS=5FQi`ec(l;r*LqY2HBnB5-CYo4vDn?zI& ztkmDcf!ZKin@sby%S%clHR|uMw>oQNs_47oP3i7OpL7bJMO1Efrg@w?ZOJ5GM1Aet zZk|=$UFRRct#-qiZnwH`xDk@W^-8>hLeI>E2Kdu|jq2)AQ2Z*F_StQ-OU34fX#Lq# z{`gjCtfA``d*GLBH?^YGNm52jaHtIHj)#9L{`}19g=N}q!y&T{V|Jbrln3!DaZ*|) z%Z9p_KC4USnPA*aq)VjN;NJcj#OWJ*881GDNj_*kc zuQOm1Y~xS~Cf=J7fWOHxd`d<1c)EAz2)1ICZD5-cb7jl5xw2K~$q>`Hetv>+w#)0J zk^XIzb#zQ@PhKMGlvt63ueG7As7^5Ri6?OnC|2>oDO7!I7lpF_O!feRM}m^&%i-Lv zB>dk-fmC=7K&&RlFCCOFVpUMzPZy&rQQuj(hwEG~ls~K{wrx>6{*1yGIc8pNEnPRJ z`wV>ccr?*ueow=&!0W)EMJ7mwxjL(z`&9QB+#~rdf2E9+nRv@Hj;yDG1RBH(?@Xa{ zFSXv%?|IwUV(Q!-lSq{Z$yDR2JbE%zg_q@{@Gz>i_httl@AX~NpFfX3>6GZX{rNym zrt24UYH?4V?(|oE#C`62gnUui*Mq={LR9Hsh)_S*?caR#>2BmrUDFgtW75+1&kQtH zuZ$2M{8gm@5Q^7uGVt#jXH4UY*KcyZy>(6D3Ig*-YXxm<-7{S^huc2W(klOMt^fME z4d6vk3IfP+-SAh{Kq<;7AtAuA#{tRWZvGF`!jAyjR%P#WLajp?)pSO~mP45`3o^`? zWI+Fu_;zO@bgEin`kCj(%* zji6PXLkT9O*u6{Xvh@jV9UuLv=0DLm80<=APtx--4R{+qkF!Q#xoFBIy9S-_H5qj7 z{Wi(7VL%nrp;@)pbdz3Ps2=fYE;L@RYTzzEOdGCwy?qDmnDKe;VovJ>k(YEiRmUHL zL6rk%L*BX9$@>Krj2BctqOD*qFAQ!vhvyWp+c+b2yU5Qz zIV|%%N2cO<(n!(TE=Q^s2kMst%Bb8OfP>HHw+#s@92ip$n!s^XDF+P#`>UefB zqR2PYwCKF!{&*G%F3oz$G7{Lws?)joutXIY(Uhyc7Y3)}{`4$E=t#UatPijBkdWd# zF?sO*zWOu+8JOPu<0m2@7pFq+pC5{<$_PIDcIb$aHt6Q5Cq1xihFX1(Hc{500ke!T zkD6EADnY(#`l!Jkc2-(kR{65x-3PZKaJqd<@$&}`47a4}-@Wd$%4Hi&NIIOG;TN_P zk^7Q=M!E2^oNC@|ipdbo!{zE? zxNA_{20n{YZTC_J>5Z~ZFjT_dvOSsSAI!(Q4CrTH2?@PhN}N=f=rI*9G2 z<-323+R&n}xX`U>R~(#{6b{EP!fasmqG?BK7y`;V;Y(}P^jU4b5*h8IAFt_Q zb8o-pO7=ln*c`kA=1&HK%Lg1T8Du>^YywmZ3hNKm-!S{)EDnjo-5drv5+Cmdw}8n2 zy{i0B$pun00E|{ST(_Iu>WNt~pJ?Q{TfpG4XTHX4aX+ zG1nNYN-C~Llwc%|nyy68nFcd43I(qbA(|zEs{QN2d?7(Ow|<05ROsQD$p9kLiGM=t zOpjw|YVoVZ9hZu>UF!WrRmFi)__6}q8S&r}r`rM_ZS62uEfcT{;!gZH;t@Ca1+b{q zeib>jclDLq6}$J>gy-xM4-DU^D$hte&kAR}Z>|hrkpn*>8IXoVES>qA^85wKU;hs` CC*&Le literal 0 HcmV?d00001 diff --git a/test/image-file-type-not-supported/graphics/sample-svg.svg b/test/image-file-type-not-supported/graphics/sample-svg.svg new file mode 100644 index 0000000..e12836e --- /dev/null +++ b/test/image-file-type-not-supported/graphics/sample-svg.svg @@ -0,0 +1,258 @@ + +image/svg+xml +Dddd + + + +Download File + \ No newline at end of file diff --git a/test/image-file-type-not-supported/graphics/something-after.png b/test/image-file-type-not-supported/graphics/something-after.png new file mode 100644 index 0000000000000000000000000000000000000000..a55a729fb86f34ed6329d7aa77e07f339fd8719d GIT binary patch literal 3288 zcma)9WmFT4_eN<(i+~cN1|kjxUMWGOJDo^KZYW4g3phojMvW9kCNvQ)^-Jr9$teW9dUd0l4-zuTW%WabJqGzPg5*v~vI&hWj!F;9QMM ziO&UM;j8ZH?(XE_ds$LYsK0V@@O6R-1i1J*3ux;an!qHTXelTdm2@>!A%XbKtl-#Z z6QR8-XrJxum7$^XDc6d)XnI+XzzA&0-tAu>Ii7+0fiNxp>4l-?V(0TY@T91%$I?qN$+#Xe*(3q;=ZZ>308|AYk4%wl`<*1 zsj(uNClk8yUbfjB-s_8C&L`wCQ_&`~eZ3+RJ-91D zzQuS($MeLv#W?qtTPHsARp4EiuwG>Sz)O%~o!}(R;%gN>7-c1!sk~8b%a;kc7{LQ= zuWR}bURIX`oRx~MMPYQDhT98>%aoA{q*`RE}|JPZbsS#mm~4Lu7{oQ z_4!7CVm&8x6rh^yHvGh1{SK$wBkovJFq&V6>tX8Ny2w~bJfETkZv_kV>|~y-`}L_A z_v=@g3h4?|x|~zivh_jIZsi?28TgFWV){&t!0~akxx>*~2H9N@y_m3!YZ7G8r>cDqjuV9va)MO3yv4cd zdN%%OLDW4)dhth^4wil@YyIUtkEb8MV0TQE4LW1XembjJUIUg*e95r*+nwi*lP)s0 zr|)|GV3B}GPd)_4L@<$d@fR~fZK%8O_(yDOGv@cB44d)xLE^PEMZ=o6A`ty((Uj*2 znP7L}j?d4NII@-AuRXzXPjej!lO9QSY26RQtDgS$v{I_^Zj$ogcLwt6pBlrh8Ptsj zXM3?x28W=AzU3dv9O;F*cB**ucy7?c<9B4-HaMepV#OaGKhA6R-FI=nWSrL0W*TnL zeDL8Qvccz=tBUUK=E)eRMfL%4RG2I?AC#L_EW{ROPCaRP$a(R1rg`^#b8|p)(6WSDHdgkN z$c$U9QE_1fMMWuf$vUAFNGc?EId>3)ost@3MS=M)vfrp&;^A=US+0<>*Lo~p>MXOx zD#KMtv@fvlcS1Ply9eoJ=M!)ei?r|YsZnJLR# z7Qr)G_}7aHkt6Nf^-5E-J~&AK^0Jsd4UIo+YVX)5*Ud%c`+|yHV|Z$+-0@~V&y3G1 z+j-C~n6Gip*TZI|X!|tJ?0r-u%0kU!q!#=R6*We8@9J)Y>vkwui4(Yo`Xhs}hXVpoTAF&HE6|0-npTm=!M!(dtFH@NA z(?4by)=A6nVFfo!z!HUYdk4MGu|6VnbY%0_o<|ISQuJYnT>AH~@{c(lq=Z-E zB8SRA-@OKZ9{wAxEx>QgczT2J%xh2I{Rg6G;+f5x4;WGZ5g@0yBJPGYzt6ReIU$(| zZTSF_9K9pwf|@vM0&4zjDt`ZfO!h=s2^dx({>e|~RKLaC=Nv|BXOkd7lb(oPzxb!X z5ZR4SbUS|)(`hU>I#6V2;?%MOkZwdk$1v1Ud7^-eC~YA>#iEVlw;Dq__@f#LwF2RaNG9=@8i}{bAC)kE(sMP;{)?@M0h@O^l!4m*`e!vMFjSd zvgWeD`0CFGmP@iTsJeOv#+a`uuX%$(d z!89d4sT8d`fr22#ggQj|+Do^l)blHC{yX!IGm)5~jSn-8r~EzH1LNY~YTXfL@hIU5 zzbkK?;F$i3CvzS8lCHW-_^pEmeHxkGAl2j>Gl8q7A-g->#OQa!iGUs*(lZ68^S4}k zJPrOw!6AW;EUspl8@h~LlT?+->RZhHRoyq~16mZEs2)vh9a#);k z_!Z^J3mi8{a;OL@#S{lu(V>4^X=Ce=8#QgikU-t9=1DqbS?bEa0;!aee*H!Q*<-Xj zCb8$}-D_O^i&w=TNCJT&QIX~$YbiPy|L2m<#Xl^=JzME;SPae8=OO?r>Mn>bzZtUtUj=k%v%@X9)g5I!t}@NCama^9Iepv7e<01#fgSmRrF ze`uFz=#rBn4qn%G8jO!^{BFxe||`1qXFr4g{6RVywLjB zKs28PBZ_nW?eqvW1twWvrSrw%g|JiaQvCd>GMsG9;v+p5Eula^cjWTI=@W!%wHKG+P zRWw&duSZa`XgNP+h^lRNrTxzR>L~3lWg005gwz5W7j9+`;1^>yaDR8~AfIPKe*p^2Qs zvHe$54)G>s5)Vwx_}+|V6|6ug`r}Ee*bnM2aq6EkAYQ>M4y5pqd!s37aZRD5X0I!_ zO04MvC$XuI=^Btt=k_d<)#Ag*18w^MlOwEvTX{-4ucz5Suw?EgWrj|89kS=wNA S6SeyH!O+z-(kNH65BopeOJz6! literal 0 HcmV?d00001 diff --git a/test/image-file-type-not-supported/graphics/something-before.png b/test/image-file-type-not-supported/graphics/something-before.png new file mode 100644 index 0000000000000000000000000000000000000000..d087fcd93c2058072cd2c49b137b9d9ae4f40228 GIT binary patch literal 2772 zcmZ{mX*3&X7l2cvT1r|&Ypu1l4~kl9A6xCaHkH!QgxFPxAl0IlDypH@S|%+rgoUN8!+mAwnUjaKElrJG zBF9$?qeEPVh5m|NG|(&vD7s>FR)WnuInMm-rKc|Av*HF7Qoe6|LlH5m3fk$ftkABc zk_CZ@swW0_pPap*oPf? zhdyfzO6wxB4@uaZEO7NH{8GaE&_Pg*UFz9Q|p);ib2Va|2ujP;D?V0jb#hHr@=W3YCjQe#cRf5}Nh%{g55L}XKRGKb#@fg5;n$>_22@TgD3d%nFe51V&6X8ppK9avk4TE0db|>lRGnZ4m6FOaG0?mPt_X&wc@En0bN};q7PRI*M z6M`FJS*)#H6WwYEI1=>DykBtqYRPqfF4+yE{RR!t6It%(=5@2g!Ny;{2OV&RXSf^@>Jg?})Xr~7Gcj^)qjuzlx#MSaU_-KK(9)Ubtp zxOUm~Q73Vb6Rbk3APc`lYb2!NnnUCq@|&wFK#z*yH7R9!U*+T7q(4JN0?l_g*V6oB z3X+iEv~n9Tv`(=+&WB@)D!b1Yl0_97$jAe2%3-C~u(n-8?kX_j<5nfn5Q~GZ%*0FT z0+V$%q96s)dc5Y-LJp5{)qF!B`USK-b__awSmb?R)3-czU4Q$>$rB+dc?NJy}FgXR}(;&w}l)POtt}@P;p;$^*c!O^vLS zWt_c8#I9f{UoR6qB?5Bxm|uCMr$2lK1}0Lo+I)Uwp`7$bG3w8hYV@t1om0_=3GLA= zk=d5yK(>3HApp00r6YQ$GskXBgf!rk$_LrgiwAZ}yU?6434Z`!$iMhUJ54MD%VtSU z+#%4_C;NdW?wa24B(uXHnI+9#?PcSZyi@Cb0L`y%12Cq5&oa9>zfI>~SaOQmYiO_K zwj?RAbETG`Lk%kN;rG$d0CAZ?HhvpQb^g`xFMHwXd$gkWUm93uz4>gpq=zWQiGH>8v$Mk-p+g66H?ahtoKBI zyN_3^1drl7Q_lg@PIx+m6-gFajXp9g-Z-en&`k9kD%W<0j|4zayi=6(u4QmN+vjTS zowm=9$|YcOC!g-!ec=plG+XLcseWld^~7=G8k*@HFHZd1beZ_a%2>17_PFq%YRDfs z6QQFw5*g&{&5Ld@z21l?=3c%b+!%v8;b~MtIX`E1SM8GQr|Acr)sS_wl4ocg;`@o_ zuexbAxC7i8I;zF$mQm*tKK12@oT$uoe9t`dR<72(q=!-g=7BYAnZ4J#Y(F0k@(@wz zBHUIqlcGv3h#_C)j$6~1@e%Ou(z*c#=Ityr`p=viaV_Q2Chz51ykPrW(=*-1tT1Wu zeps$(fwLy zO>tUk9E+~3x{b-E&c47!*2bJdF(9#$x(?m(3+D)LOzn&bSPD`&13#g9>hfakWI+ql zgP2u$Ie;vZgbjFjca#04z~aisen#D)4kLUkYKlOteIeOy9}{cA+OW6819{|D2ku{b z%>v&YG1~Fru_6#Y>Be~|2JaGjT7HNXx5wt?8H9g}zmMV+g@!;^hqkWFnyU(-Xgn%? z+QDMskr#`cZjWO%BmH{%sKRwwI7LGn!b8U1>=MRZ9iy^8oNDiOVT~1&z9yuFV;XEss3t~$Mq_~> z518bg(*24hwj#ZS$2%+u$3A?OvpP*Ns&MOFj~AobJw-&b$~^hY0quLJYiqLWN5*$9 z04+EMvz|2darKY%DP1?>v+?~%L5)!~s%38jW2fh-TtIDOaRQzNMHMUh6?YzR6oY%; zNg+p_j0PNKXP&QVs8v8^F+k?+68?Ygz z?;5-$aZ$E*C~-W6>&IC1QRf|U{8P@%Aha9RStiGA_5KV~fm;gf*z%|ss7E55UUU}G zyJ#=8l``xk1hRcRl#EldQTdR)_;$u`SR z?qG72@#_eKwKAI(Mz+ns*MiK<`n`WxaWPz3=|7WCA%EF0CF zxo$1ZYwydiHRnlIi|mWVPHXf25*c{+bk4K=!V1^quVkGFEkaSI|Fy6o8C{E_V=IJ9 zD`I?GV-6Gwj=bgD=@z;HAFl4qE8fAv47`cff_xs9@BkGKu`{bqnhP0FvvvNs8zT!; z$uwikutzN=tdp?9wCFa?ToLQ;XIxv%9iUN2k$W$cV>+J4M*P=_elAoOmVfG5KWY9S e^?D*kJ3i&;xyi0|p{C$pxwJI1Gp+vpUfe$&5m)s9 literal 0 HcmV?d00001 diff --git a/test/image-file-type-not-supported/image-file-type-not-supported.dita b/test/image-file-type-not-supported/image-file-type-not-supported.dita new file mode 100644 index 0000000..0d794c6 --- /dev/null +++ b/test/image-file-type-not-supported/image-file-type-not-supported.dita @@ -0,0 +1,21 @@ + + + + image-file-type-not-supported + +

+ <image> - invalid file extension (only *.jpg, *.jpeg or *.png are allowed) +

+
+ Good image file extensions + + + +
+
+ Bad image file extensions + + +
+ +
diff --git a/test/image-longdescref-deprecated/build.xml b/test/image-longdescref-deprecated/build.xml new file mode 100644 index 0000000..bb0e2f4 --- /dev/null +++ b/test/image-longdescref-deprecated/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that an image with a longdescref attribute is a validation warning + + + + + + diff --git a/test/image-longdescref-deprecated/document.ditamap b/test/image-longdescref-deprecated/document.ditamap new file mode 100644 index 0000000..6d30d10 --- /dev/null +++ b/test/image-longdescref-deprecated/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/image-longdescref-deprecated/expected.svrl b/test/image-longdescref-deprecated/expected.svrl new file mode 100644 index 0000000..dce8d7a --- /dev/null +++ b/test/image-longdescref-deprecated/expected.svrl @@ -0,0 +1,9 @@ + + + + + Line 17: image - [image-longdescref-deprecated] +<image> elements will no longer support the longdescref attribute in DITA 2.0. Replace the longdescref attribute with an <longdescref> sub-element + + + diff --git a/test/image-longdescref-deprecated/graphics/SAMPLE-JPEG.jpg b/test/image-longdescref-deprecated/graphics/SAMPLE-JPEG.jpg new file mode 100644 index 0000000000000000000000000000000000000000..809d216c38a071082c296d69009a3b6ef5afeb3a GIT binary patch literal 4032 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 CC*&Le literal 0 HcmV?d00001 diff --git a/test/image-longdescref-deprecated/graphics/sample-gif.gif b/test/image-longdescref-deprecated/graphics/sample-gif.gif new file mode 100644 index 0000000000000000000000000000000000000000..2c44ea933429f414eb4e14c9d94a779fe0f94940 GIT binary patch literal 2287 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 BGqnH! literal 0 HcmV?d00001 diff --git a/test/image-longdescref-deprecated/graphics/sample-jpeg.jpeg b/test/image-longdescref-deprecated/graphics/sample-jpeg.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..809d216c38a071082c296d69009a3b6ef5afeb3a GIT binary patch literal 4032 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 CC*&Le literal 0 HcmV?d00001 diff --git a/test/image-longdescref-deprecated/graphics/sample-jpg.jpg b/test/image-longdescref-deprecated/graphics/sample-jpg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..809d216c38a071082c296d69009a3b6ef5afeb3a GIT binary patch literal 4032 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 CC*&Le literal 0 HcmV?d00001 diff --git a/test/image-longdescref-deprecated/graphics/sample-svg.svg b/test/image-longdescref-deprecated/graphics/sample-svg.svg new file mode 100644 index 0000000..e12836e --- /dev/null +++ b/test/image-longdescref-deprecated/graphics/sample-svg.svg @@ -0,0 +1,258 @@ + +image/svg+xml +Dddd + + + +Download File + \ No newline at end of file diff --git a/test/image-longdescref-deprecated/graphics/something-after.png b/test/image-longdescref-deprecated/graphics/something-after.png new file mode 100644 index 0000000000000000000000000000000000000000..a55a729fb86f34ed6329d7aa77e07f339fd8719d GIT binary patch literal 3288 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 S6SeyH!O+z-(kNH65BopeOJz6! literal 0 HcmV?d00001 diff --git a/test/image-longdescref-deprecated/graphics/something-before.png b/test/image-longdescref-deprecated/graphics/something-before.png new file mode 100644 index 0000000000000000000000000000000000000000..d087fcd93c2058072cd2c49b137b9d9ae4f40228 GIT binary patch literal 2772 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 literal 0 HcmV?d00001 diff --git a/test/image-longdescref-deprecated/image-longdescref-deprecated.dita b/test/image-longdescref-deprecated/image-longdescref-deprecated.dita new file mode 100644 index 0000000..330aa42 --- /dev/null +++ b/test/image-longdescref-deprecated/image-longdescref-deprecated.dita @@ -0,0 +1,20 @@ + + + + image-longdescref-deprecated + +

+ <image> - the longdescref attribute is deprecated on image elements +

+
+ Good image longdescref + + + +
+
+ Bad image longdescref + +
+ +
diff --git a/test/incorrect-capitalization/build.xml b/test/incorrect-capitalization/build.xml new file mode 100644 index 0000000..a5468b3 --- /dev/null +++ b/test/incorrect-capitalization/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that a word incorrectly capitalized is a validation warning + + + + + + diff --git a/test/incorrect-capitalization/document.ditamap b/test/incorrect-capitalization/document.ditamap new file mode 100644 index 0000000..f4a2a67 --- /dev/null +++ b/test/incorrect-capitalization/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/incorrect-capitalization/expected.svrl b/test/incorrect-capitalization/expected.svrl new file mode 100644 index 0000000..5fff36e --- /dev/null +++ b/test/incorrect-capitalization/expected.svrl @@ -0,0 +1,37 @@ + + + + + Line 23: p - [incorrect-capitalization] +The word 'JSON' is incorrectly capitalized in the following text: + + + The acronym, json stands for "Javascript Object Notation". Files frequently use the suffix + . + + + Line 23: p - [incorrect-capitalization] +The word 'JavaScript' is incorrectly capitalized in the following text: + + + The acronym, json stands for "Javascript Object Notation". Files frequently use the suffix + . + + + Line 26: p - [incorrect-capitalization] +The word 'Bluetooth' is incorrectly capitalized in the following text: + + + The bluetooth id is app_id when using xml or JAVA. + . + + + Line 26: p - [incorrect-capitalization] +The word 'XML' is incorrectly capitalized in the following text: + + + The bluetooth id is app_id when using xml or JAVA. + . + + + diff --git a/test/incorrect-capitalization/incorrect-capitalization.dita b/test/incorrect-capitalization/incorrect-capitalization.dita new file mode 100644 index 0000000..71e9b80 --- /dev/null +++ b/test/incorrect-capitalization/incorrect-capitalization.dita @@ -0,0 +1,31 @@ + + + + incorrect-capitilzation + +

+ Incorrect capitialization of selected words found in the topic +

+
+ Good Capitalization +

+ The acronym, JSON stands for "JavaScript Object Notation". Files frequently use the suffix json +

+

+ The Bluetooth ID attribute is app_id when using XML or Java. +

+

+ application/javascript and application/xml are fine. +

+
+
+ Bad Capitalization +

+ The acronym, json stands for "Javascript Object Notation". Files frequently use the suffix json +

+

+ The bluetooth id is app_id when using xml or JAVA. +

+
+ +
\ No newline at end of file diff --git a/test/list-all-li-filtered/build.xml b/test/list-all-li-filtered/build.xml new file mode 100644 index 0000000..571571f --- /dev/null +++ b/test/list-all-li-filtered/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that a list which may have all items filtered is a validation error + + + + + + diff --git a/test/list-all-li-filtered/document.ditamap b/test/list-all-li-filtered/document.ditamap new file mode 100644 index 0000000..ebfe876 --- /dev/null +++ b/test/list-all-li-filtered/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/list-all-li-filtered/expected.svrl b/test/list-all-li-filtered/expected.svrl new file mode 100644 index 0000000..b15c43a --- /dev/null +++ b/test/list-all-li-filtered/expected.svrl @@ -0,0 +1,21 @@ + + + + + Line 36: li - [list-all-li-filtered] +Found only <li product="hlp"> elements in <ol>. This results in an empty <ol> for other variants. Either add additional product attributes for the missing variants or add <ol product="hlp"> to the appropriate list elements. + + + Line 37: li - [list-all-li-filtered] +Found only <li product="hlp"> elements in <ol>. This results in an empty <ol> for other variants. Either add additional product attributes for the missing variants or add <ol product="hlp"> to the appropriate list elements. + + + Line 30: li - [list-all-li-filtered] +Found only <li product="hlp"> elements in <ul>. This results in an empty <ul> for other variants. Either add additional product attributes for the missing variants or add <ul product="hlp"> to the appropriate list elements. + + + Line 31: li - [list-all-li-filtered] +Found only <li product="hlp"> elements in <ul>. This results in an empty <ul> for other variants. Either add additional product attributes for the missing variants or add <ul product="hlp"> to the appropriate list elements. + + + diff --git a/test/list-all-li-filtered/list-all-li-filtered.dita b/test/list-all-li-filtered/list-all-li-filtered.dita new file mode 100644 index 0000000..8a3a830 --- /dev/null +++ b/test/list-all-li-filtered/list-all-li-filtered.dita @@ -0,0 +1,41 @@ + + + + list-all-li-filtered + +

+ <ul> If an element contains filtered sub elements, they must not be all of the filter type. +

+
+ Good lists + + <ul list> +
    +
  • Red
  • +
  • Orange
  • +
+ + <ol list> +
    +
  1. Green
  2. +
  3. Apple
  4. +
+ +
+
+ Bad lists + + <ul list> +
    +
  • Red
  • +
  • Orange
  • +
+ + <ol list> +
    +
  1. Green
  2. +
  3. Apple
  4. +
+
+ +
diff --git a/test/markdown-fix/build.xml b/test/markdown-fix/build.xml new file mode 100644 index 0000000..74e13ca --- /dev/null +++ b/test/markdown-fix/build.xml @@ -0,0 +1,14 @@ + + + + + Expect that Markdown can be fixed + + + + + + + + + diff --git a/test/markdown-fix/document.ditamap b/test/markdown-fix/document.ditamap new file mode 100644 index 0000000..bbad8f6 --- /dev/null +++ b/test/markdown-fix/document.ditamap @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/test/markdown-fix/expected.txt b/test/markdown-fix/expected.txt new file mode 100644 index 0000000..dbd6f6b --- /dev/null +++ b/test/markdown-fix/expected.txt @@ -0,0 +1,21 @@ + + + + + Line 4: h3 - [header-depth-invalid] +Header depth invalid - expected 2 but was 3 + + + Line 4: h3 - [header-depth-invalid] +Header depth invalid - expected 2 but was 3 + + + Line 8: h3 - [header-depth-too-deep] +Header depth too deep - level 3 is not allowed in MDITA + + + Line 1: p - [text-before-header] +Text was found before the first header + + + diff --git a/test/markdown-fix/test.properties b/test/markdown-fix/test.properties new file mode 100644 index 0000000..fabd34c --- /dev/null +++ b/test/markdown-fix/test.properties @@ -0,0 +1 @@ +args.validate.mode=fix-dita \ No newline at end of file diff --git a/test/markdown-fix/topic1.md b/test/markdown-fix/topic1.md new file mode 100644 index 0000000..b44e475 --- /dev/null +++ b/test/markdown-fix/topic1.md @@ -0,0 +1,11 @@ +# Header 1 - topic1 + + Morbi nec aliquet libero, ac condimentum tortor. Ut ultrices orci placerat elit rutrum ullamcorper. Etiam vulputate ante eget turpis iaculis, vel fermentum diam porttitor. Morbi pretium tempor nisi, at convallis sem tincidunt ut. Maecenas vitae purus malesuada, elementum dolor ac, porta nisi. + +# Header 2a - topic1 + + Fusce ut dolor in nunc imperdiet lobortis a quis purus. Aliquam nec nibh in ex gravida venenatis vitae in ex. Duis non dui at est aliquam pretium. Sed et egestas tellus. Cras quis condimentum est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi gravida vel dolor ac posuere. Nam vel posuere orci. Nunc eros velit, mattis a ligula nec, finibus aliquam enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. + +## Header 2b - topic1 + +### Header 3 - topic1 \ No newline at end of file diff --git a/test/markdown-fix/topic1.txt b/test/markdown-fix/topic1.txt new file mode 100644 index 0000000..a8feda9 --- /dev/null +++ b/test/markdown-fix/topic1.txt @@ -0,0 +1,16 @@ +Preamble text. + + +# Header 1 - topic1 + + Morbi nec aliquet libero, ac condimentum tortor. Ut ultrices orci placerat elit rutrum ullamcorper. Etiam vulputate ante eget turpis iaculis, vel fermentum diam porttitor. Morbi pretium tempor nisi, at convallis sem tincidunt ut. Maecenas vitae purus malesuada, elementum dolor ac, porta nisi. + +# Header 2a - topic1 + + Fusce ut dolor in nunc imperdiet lobortis a quis purus. Aliquam nec nibh in ex gravida venenatis vitae in ex. Duis non dui at est aliquam pretium. Sed et egestas tellus. Cras quis condimentum est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi gravida vel dolor ac posuere. Nam vel posuere orci. Nunc eros velit, mattis a ligula nec, finibus aliquam enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. + +## Header 2b - topic1 + +### Header 3 - topic1 + + diff --git a/test/markdown-fix/topic2.md b/test/markdown-fix/topic2.md new file mode 100644 index 0000000..6349a36 --- /dev/null +++ b/test/markdown-fix/topic2.md @@ -0,0 +1,7 @@ +# Header 1 - topic2 + + Morbi nec aliquet libero, ac condimentum tortor. Ut ultrices orci placerat elit rutrum ullamcorper. Etiam vulputate ante eget turpis iaculis, vel fermentum diam porttitor. Morbi pretium tempor nisi, at convallis sem tincidunt ut. Maecenas vitae purus malesuada, elementum dolor ac, porta nisi. + +## Header 3 - topic2 + + Fusce ut dolor in nunc imperdiet lobortis a quis purus. Aliquam nec nibh in ex gravida venenatis vitae in ex. Duis non dui at est aliquam pretium. Sed et egestas tellus. Cras quis condimentum est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi gravida vel dolor ac posuere. Nam vel posuere orci. Nunc eros velit, mattis a ligula nec, finibus aliquam enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. \ No newline at end of file diff --git a/test/markdown-fix/topic2.txt b/test/markdown-fix/topic2.txt new file mode 100644 index 0000000..3797e7f --- /dev/null +++ b/test/markdown-fix/topic2.txt @@ -0,0 +1,7 @@ +# Header 1 - topic2 + + Morbi nec aliquet libero, ac condimentum tortor. Ut ultrices orci placerat elit rutrum ullamcorper. Etiam vulputate ante eget turpis iaculis, vel fermentum diam porttitor. Morbi pretium tempor nisi, at convallis sem tincidunt ut. Maecenas vitae purus malesuada, elementum dolor ac, porta nisi. + +### Header 3 - topic2 + + Fusce ut dolor in nunc imperdiet lobortis a quis purus. Aliquam nec nibh in ex gravida venenatis vitae in ex. Duis non dui at est aliquam pretium. Sed et egestas tellus. Cras quis condimentum est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi gravida vel dolor ac posuere. Nam vel posuere orci. Nunc eros velit, mattis a ligula nec, finibus aliquam enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. \ No newline at end of file diff --git a/test/markdown-fix/topic3.mdita b/test/markdown-fix/topic3.mdita new file mode 100644 index 0000000..771b641 --- /dev/null +++ b/test/markdown-fix/topic3.mdita @@ -0,0 +1,7 @@ +# Header 1 - topic3 + + Morbi nec aliquet libero, ac condimentum tortor. Ut ultrices orci placerat elit rutrum ullamcorper. Etiam vulputate ante eget turpis iaculis, vel fermentum diam porttitor. Morbi pretium tempor nisi, at convallis sem tincidunt ut. Maecenas vitae purus malesuada, elementum dolor ac, porta nisi. + +## Header 3 - topic3 + + Fusce ut dolor in nunc imperdiet lobortis a quis purus. Aliquam nec nibh in ex gravida venenatis vitae in ex. Duis non dui at est aliquam pretium. Sed et egestas tellus. Cras quis condimentum est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi gravida vel dolor ac posuere. Nam vel posuere orci. Nunc eros velit, mattis a ligula nec, finibus aliquam enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. \ No newline at end of file diff --git a/test/markdown-fix/topic3.txt b/test/markdown-fix/topic3.txt new file mode 100644 index 0000000..f43b2a9 --- /dev/null +++ b/test/markdown-fix/topic3.txt @@ -0,0 +1,7 @@ +# Header 1 - topic3 + + Morbi nec aliquet libero, ac condimentum tortor. Ut ultrices orci placerat elit rutrum ullamcorper. Etiam vulputate ante eget turpis iaculis, vel fermentum diam porttitor. Morbi pretium tempor nisi, at convallis sem tincidunt ut. Maecenas vitae purus malesuada, elementum dolor ac, porta nisi. + +### Header 3 - topic3 + + Fusce ut dolor in nunc imperdiet lobortis a quis purus. Aliquam nec nibh in ex gravida venenatis vitae in ex. Duis non dui at est aliquam pretium. Sed et egestas tellus. Cras quis condimentum est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi gravida vel dolor ac posuere. Nam vel posuere orci. Nunc eros velit, mattis a ligula nec, finibus aliquam enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. \ No newline at end of file diff --git a/test/markdown-fix/topic4.mdita b/test/markdown-fix/topic4.mdita new file mode 100644 index 0000000..e551ed7 --- /dev/null +++ b/test/markdown-fix/topic4.mdita @@ -0,0 +1,11 @@ +# Header 1 - topic4 + + Morbi nec aliquet libero, ac condimentum tortor. Ut ultrices orci placerat elit rutrum ullamcorper. Etiam vulputate ante eget turpis iaculis, vel fermentum diam porttitor. Morbi pretium tempor nisi, at convallis sem tincidunt ut. Maecenas vitae purus malesuada, elementum dolor ac, porta nisi. + +## Header 2 - topic4 + + Fusce ut dolor in nunc imperdiet lobortis a quis purus. Aliquam nec nibh in ex gravida venenatis vitae in ex. Duis non dui at est aliquam pretium. Sed et egestas tellus. Cras quis condimentum est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. + +**Header 3 - topic4** + + Morbi gravida vel dolor ac posuere. Nam vel posuere orci. Nunc eros velit, mattis a ligula nec, finibus aliquam enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. \ No newline at end of file diff --git a/test/markdown-fix/topic4.txt b/test/markdown-fix/topic4.txt new file mode 100644 index 0000000..3f57644 --- /dev/null +++ b/test/markdown-fix/topic4.txt @@ -0,0 +1,11 @@ +# Header 1 - topic4 + + Morbi nec aliquet libero, ac condimentum tortor. Ut ultrices orci placerat elit rutrum ullamcorper. Etiam vulputate ante eget turpis iaculis, vel fermentum diam porttitor. Morbi pretium tempor nisi, at convallis sem tincidunt ut. Maecenas vitae purus malesuada, elementum dolor ac, porta nisi. + +## Header 2 - topic4 + + Fusce ut dolor in nunc imperdiet lobortis a quis purus. Aliquam nec nibh in ex gravida venenatis vitae in ex. Duis non dui at est aliquam pretium. Sed et egestas tellus. Cras quis condimentum est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. + +### Header 3 - topic4 + + Morbi gravida vel dolor ac posuere. Nam vel posuere orci. Nunc eros velit, mattis a ligula nec, finibus aliquam enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. \ No newline at end of file diff --git a/test/markdown-validate/build.xml b/test/markdown-validate/build.xml new file mode 100644 index 0000000..1d27f44 --- /dev/null +++ b/test/markdown-validate/build.xml @@ -0,0 +1,13 @@ + + + + + + + Expect that Markdown validation will error + + + + + + diff --git a/test/markdown-validate/document.ditamap b/test/markdown-validate/document.ditamap new file mode 100644 index 0000000..bbad8f6 --- /dev/null +++ b/test/markdown-validate/document.ditamap @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/test/markdown-validate/expected.svrl b/test/markdown-validate/expected.svrl new file mode 100644 index 0000000..dbd6f6b --- /dev/null +++ b/test/markdown-validate/expected.svrl @@ -0,0 +1,21 @@ + + + + + Line 4: h3 - [header-depth-invalid] +Header depth invalid - expected 2 but was 3 + + + Line 4: h3 - [header-depth-invalid] +Header depth invalid - expected 2 but was 3 + + + Line 8: h3 - [header-depth-too-deep] +Header depth too deep - level 3 is not allowed in MDITA + + + Line 1: p - [text-before-header] +Text was found before the first header + + + diff --git a/test/markdown-validate/topic1.md b/test/markdown-validate/topic1.md new file mode 100644 index 0000000..a8feda9 --- /dev/null +++ b/test/markdown-validate/topic1.md @@ -0,0 +1,16 @@ +Preamble text. + + +# Header 1 - topic1 + + Morbi nec aliquet libero, ac condimentum tortor. Ut ultrices orci placerat elit rutrum ullamcorper. Etiam vulputate ante eget turpis iaculis, vel fermentum diam porttitor. Morbi pretium tempor nisi, at convallis sem tincidunt ut. Maecenas vitae purus malesuada, elementum dolor ac, porta nisi. + +# Header 2a - topic1 + + Fusce ut dolor in nunc imperdiet lobortis a quis purus. Aliquam nec nibh in ex gravida venenatis vitae in ex. Duis non dui at est aliquam pretium. Sed et egestas tellus. Cras quis condimentum est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi gravida vel dolor ac posuere. Nam vel posuere orci. Nunc eros velit, mattis a ligula nec, finibus aliquam enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. + +## Header 2b - topic1 + +### Header 3 - topic1 + + diff --git a/test/markdown-validate/topic2.md b/test/markdown-validate/topic2.md new file mode 100644 index 0000000..3797e7f --- /dev/null +++ b/test/markdown-validate/topic2.md @@ -0,0 +1,7 @@ +# Header 1 - topic2 + + Morbi nec aliquet libero, ac condimentum tortor. Ut ultrices orci placerat elit rutrum ullamcorper. Etiam vulputate ante eget turpis iaculis, vel fermentum diam porttitor. Morbi pretium tempor nisi, at convallis sem tincidunt ut. Maecenas vitae purus malesuada, elementum dolor ac, porta nisi. + +### Header 3 - topic2 + + Fusce ut dolor in nunc imperdiet lobortis a quis purus. Aliquam nec nibh in ex gravida venenatis vitae in ex. Duis non dui at est aliquam pretium. Sed et egestas tellus. Cras quis condimentum est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi gravida vel dolor ac posuere. Nam vel posuere orci. Nunc eros velit, mattis a ligula nec, finibus aliquam enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. \ No newline at end of file diff --git a/test/markdown-validate/topic3.mdita b/test/markdown-validate/topic3.mdita new file mode 100644 index 0000000..f43b2a9 --- /dev/null +++ b/test/markdown-validate/topic3.mdita @@ -0,0 +1,7 @@ +# Header 1 - topic3 + + Morbi nec aliquet libero, ac condimentum tortor. Ut ultrices orci placerat elit rutrum ullamcorper. Etiam vulputate ante eget turpis iaculis, vel fermentum diam porttitor. Morbi pretium tempor nisi, at convallis sem tincidunt ut. Maecenas vitae purus malesuada, elementum dolor ac, porta nisi. + +### Header 3 - topic3 + + Fusce ut dolor in nunc imperdiet lobortis a quis purus. Aliquam nec nibh in ex gravida venenatis vitae in ex. Duis non dui at est aliquam pretium. Sed et egestas tellus. Cras quis condimentum est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi gravida vel dolor ac posuere. Nam vel posuere orci. Nunc eros velit, mattis a ligula nec, finibus aliquam enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. \ No newline at end of file diff --git a/test/markdown-validate/topic4.mdita b/test/markdown-validate/topic4.mdita new file mode 100644 index 0000000..3f57644 --- /dev/null +++ b/test/markdown-validate/topic4.mdita @@ -0,0 +1,11 @@ +# Header 1 - topic4 + + Morbi nec aliquet libero, ac condimentum tortor. Ut ultrices orci placerat elit rutrum ullamcorper. Etiam vulputate ante eget turpis iaculis, vel fermentum diam porttitor. Morbi pretium tempor nisi, at convallis sem tincidunt ut. Maecenas vitae purus malesuada, elementum dolor ac, porta nisi. + +## Header 2 - topic4 + + Fusce ut dolor in nunc imperdiet lobortis a quis purus. Aliquam nec nibh in ex gravida venenatis vitae in ex. Duis non dui at est aliquam pretium. Sed et egestas tellus. Cras quis condimentum est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. + +### Header 3 - topic4 + + Morbi gravida vel dolor ac posuere. Nam vel posuere orci. Nunc eros velit, mattis a ligula nec, finibus aliquam enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. \ No newline at end of file diff --git a/test/notices-href-missing/build.xml b/test/notices-href-missing/build.xml new file mode 100644 index 0000000..1115dcc --- /dev/null +++ b/test/notices-href-missing/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that a notices element with no href attribute is a validation error + + + + + + diff --git a/test/notices-href-missing/document.ditamap b/test/notices-href-missing/document.ditamap new file mode 100644 index 0000000..eaaf660 --- /dev/null +++ b/test/notices-href-missing/document.ditamap @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/test/notices-href-missing/expected.svrl b/test/notices-href-missing/expected.svrl new file mode 100644 index 0000000..946421d --- /dev/null +++ b/test/notices-href-missing/expected.svrl @@ -0,0 +1,9 @@ + + + + + Line 5: notices - [notices-href-missing] +Always provide an href attribute in <notices> elements. + + + diff --git a/test/notices-href-missing/topic.dita b/test/notices-href-missing/topic.dita new file mode 100644 index 0000000..12052e6 --- /dev/null +++ b/test/notices-href-missing/topic.dita @@ -0,0 +1,10 @@ + + + + topic + +

+ Dummy Topic +

+ +
diff --git a/test/rowsep-invalid/build.xml b/test/rowsep-invalid/build.xml new file mode 100644 index 0000000..cdc0c75 --- /dev/null +++ b/test/rowsep-invalid/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that rowsep-invalid is a validation error + + + + + + diff --git a/test/rowsep-invalid/document.ditamap b/test/rowsep-invalid/document.ditamap new file mode 100644 index 0000000..be424c3 --- /dev/null +++ b/test/rowsep-invalid/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/rowsep-invalid/expected.svrl b/test/rowsep-invalid/expected.svrl new file mode 100644 index 0000000..37137c7 --- /dev/null +++ b/test/rowsep-invalid/expected.svrl @@ -0,0 +1,9 @@ + + + + + Line 25: table[id="table-bad"] - [rowsep-invalid] +rowsep values must be either 0 or 1 in any <table> elements. + + + diff --git a/test/rowsep-invalid/rowsep-invalid.dita b/test/rowsep-invalid/rowsep-invalid.dita new file mode 100644 index 0000000..c10d763 --- /dev/null +++ b/test/rowsep-invalid/rowsep-invalid.dita @@ -0,0 +1,37 @@ + + + + rowsep-invalid + +

+ <table> 'rowsep' attribute can be only 0 or 1 +

+
+ Good Table + + + + + +   + + + +
+ +
+
+ Bad Table + + + + + +   + + + +
+
+ +
\ No newline at end of file diff --git a/test/running-text-fixme/build.xml b/test/running-text-fixme/build.xml new file mode 100644 index 0000000..6281444 --- /dev/null +++ b/test/running-text-fixme/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that a fixme in the running text is a validation warning + + + + + + diff --git a/test/running-text-fixme/document.ditamap b/test/running-text-fixme/document.ditamap new file mode 100644 index 0000000..0234aeb --- /dev/null +++ b/test/running-text-fixme/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/running-text-fixme/expected.svrl b/test/running-text-fixme/expected.svrl new file mode 100644 index 0000000..4430990 --- /dev/null +++ b/test/running-text-fixme/expected.svrl @@ -0,0 +1,12 @@ + + + + + Line 20: p - [running-text-fixme] +Found 'FIXME' comments in the following text in this <p> element - fix as requested and delete the comment. + + + 60) FIXME Morbi nec aliquet libero, ac condimentum tortor. Ut ultrices orci placerat elit rutrum ullamcorper. Etiam vulputate ante eget turpis iaculis, vel fermentum diam porttitor. Morbi pretium tempor nisi, at convallis sem tincidunt ut. Maecenas vitae purus malesuada, elementum dolor ac, porta nisi. Fusce ut dolor in nunc imperdiet lobortis a quis purus. Aliquam nec nibh in ex gravida venenatis vitae in ex. Duis non dui at est aliquam pretium. Sed et egestas tellus. Cras quis condimentum est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi gravida vel dolor ac posuere. Nam vel posuere orci. Nunc eros velit, mattis a ligula nec, finibus aliquam enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. + + + diff --git a/test/running-text-fixme/running-text-fixme.dita b/test/running-text-fixme/running-text-fixme.dita new file mode 100644 index 0000000..a9a2758 --- /dev/null +++ b/test/running-text-fixme/running-text-fixme.dita @@ -0,0 +1,25 @@ + + + + <!-- ignore-rule:running-text-fixme,comment-fixme --> + running-text-fixme + +

+ + FIXME running text found in the topic +

+
+ Good running text +

+ Morbi nec aliquet libero, ac condimentum tortor. Ut ultrices orci placerat elit rutrum ullamcorper. Etiam vulputate ante eget turpis iaculis, vel fermentum diam porttitor. Morbi pretium tempor nisi, at convallis sem tincidunt ut. Maecenas vitae purus malesuada, elementum dolor ac, porta nisi. Fusce ut dolor in nunc imperdiet lobortis a quis purus. Aliquam nec nibh in ex gravida venenatis vitae in ex. Duis non dui at est aliquam pretium. Sed et egestas tellus. Cras quis condimentum est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi gravida vel dolor ac posuere. Nam vel posuere orci. Nunc eros velit, mattis a ligula nec, finibus aliquam enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. +

+ +
+
+ Bad running text +

+ 60) FIXME Morbi nec aliquet libero, ac condimentum tortor. Ut ultrices orci placerat elit rutrum ullamcorper. Etiam vulputate ante eget turpis iaculis, vel fermentum diam porttitor. Morbi pretium tempor nisi, at convallis sem tincidunt ut. Maecenas vitae purus malesuada, elementum dolor ac, porta nisi. Fusce ut dolor in nunc imperdiet lobortis a quis purus. Aliquam nec nibh in ex gravida venenatis vitae in ex. Duis non dui at est aliquam pretium. Sed et egestas tellus. Cras quis condimentum est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi gravida vel dolor ac posuere. Nam vel posuere orci. Nunc eros velit, mattis a ligula nec, finibus aliquam enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. +

+
+ +
diff --git a/test/running-text-lorem-ipsum/build.xml b/test/running-text-lorem-ipsum/build.xml new file mode 100644 index 0000000..83f4eed --- /dev/null +++ b/test/running-text-lorem-ipsum/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that lorem-ipsum in the running text is a validation warning + + + + + + diff --git a/test/running-text-lorem-ipsum/document.ditamap b/test/running-text-lorem-ipsum/document.ditamap new file mode 100644 index 0000000..51dc776 --- /dev/null +++ b/test/running-text-lorem-ipsum/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/running-text-lorem-ipsum/expected.svrl b/test/running-text-lorem-ipsum/expected.svrl new file mode 100644 index 0000000..a788ffa --- /dev/null +++ b/test/running-text-lorem-ipsum/expected.svrl @@ -0,0 +1,11 @@ + + + + + Line 9: p - [running-text-lorem-ipsum] +Found dummy text in this <p> element, remove or replace with valid content. + +Lorem ipsum in running texts + + + diff --git a/test/running-text-lorem-ipsum/running-text-lorem-ipsum.dita b/test/running-text-lorem-ipsum/running-text-lorem-ipsum.dita new file mode 100644 index 0000000..a851efd --- /dev/null +++ b/test/running-text-lorem-ipsum/running-text-lorem-ipsum.dita @@ -0,0 +1,11 @@ + + + + + <!-- ignore-rule:running-text-lorem-ipsum --> + running-text-lorem-ipsum + + +

Lorem ipsum in running texts

+ +
\ No newline at end of file diff --git a/test/running-text-todo/build.xml b/test/running-text-todo/build.xml new file mode 100644 index 0000000..0e3dedc --- /dev/null +++ b/test/running-text-todo/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that a TODO in the running text is a validation warning + + + + + + diff --git a/test/running-text-todo/document.ditamap b/test/running-text-todo/document.ditamap new file mode 100644 index 0000000..91c1551 --- /dev/null +++ b/test/running-text-todo/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/running-text-todo/expected.svrl b/test/running-text-todo/expected.svrl new file mode 100644 index 0000000..0c4cbe8 --- /dev/null +++ b/test/running-text-todo/expected.svrl @@ -0,0 +1,12 @@ + + + + + Line 20: p - [running-text-todo] +Found 'TODO' comments in the following text in this <p> element - fix as requested and delete the comment. + + + TODO Morbi nec aliquet libero, ac condimentum tortor. Ut ultrices orci placerat elit rutrum ullamcorper. Etiam vulputate ante eget turpis iaculis, vel fermentum diam porttitor. Morbi pretium tempor nisi, at convallis sem tincidunt ut. Maecenas vitae purus malesuada, elementum dolor ac, porta nisi. Fusce ut dolor in nunc imperdiet lobortis a quis purus. Aliquam nec nibh in ex gravida venenatis vitae in ex. Duis non dui at est aliquam pretium. Sed et egestas tellus. Cras quis condimentum est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi gravida vel dolor ac posuere. Nam vel posuere orci. Nunc eros velit, mattis a ligula nec, finibus aliquam enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. + + + diff --git a/test/running-text-todo/running-text-todo.dita b/test/running-text-todo/running-text-todo.dita new file mode 100644 index 0000000..0bddd7f --- /dev/null +++ b/test/running-text-todo/running-text-todo.dita @@ -0,0 +1,25 @@ + + + + <!-- ignore-rule:running-text-todo,comment-todo --> + running-text-todo + +

+ + TODO running text found in the topic +

+
+ Good running text +

+ Morbi nec aliquet libero, ac condimentum tortor. Ut ultrices orci placerat elit rutrum ullamcorper. Etiam vulputate ante eget turpis iaculis, vel fermentum diam porttitor. Morbi pretium tempor nisi, at convallis sem tincidunt ut. Maecenas vitae purus malesuada, elementum dolor ac, porta nisi. Fusce ut dolor in nunc imperdiet lobortis a quis purus. Aliquam nec nibh in ex gravida venenatis vitae in ex. Duis non dui at est aliquam pretium. Sed et egestas tellus. Cras quis condimentum est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi gravida vel dolor ac posuere. Nam vel posuere orci. Nunc eros velit, mattis a ligula nec, finibus aliquam enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. +

+ +
+
+ Bad running text +

+ TODO Morbi nec aliquet libero, ac condimentum tortor. Ut ultrices orci placerat elit rutrum ullamcorper. Etiam vulputate ante eget turpis iaculis, vel fermentum diam porttitor. Morbi pretium tempor nisi, at convallis sem tincidunt ut. Maecenas vitae purus malesuada, elementum dolor ac, porta nisi. Fusce ut dolor in nunc imperdiet lobortis a quis purus. Aliquam nec nibh in ex gravida venenatis vitae in ex. Duis non dui at est aliquam pretium. Sed et egestas tellus. Cras quis condimentum est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi gravida vel dolor ac posuere. Nam vel posuere orci. Nunc eros velit, mattis a ligula nec, finibus aliquam enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. +

+
+ +
diff --git a/test/section-id-missing/build.xml b/test/section-id-missing/build.xml new file mode 100644 index 0000000..dfdfc96 --- /dev/null +++ b/test/section-id-missing/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that a section without an id is a validation error + + + + + + diff --git a/test/section-id-missing/document.ditamap b/test/section-id-missing/document.ditamap new file mode 100644 index 0000000..8d6af06 --- /dev/null +++ b/test/section-id-missing/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/section-id-missing/expected.svrl b/test/section-id-missing/expected.svrl new file mode 100644 index 0000000..e680c68 --- /dev/null +++ b/test/section-id-missing/expected.svrl @@ -0,0 +1,9 @@ + + + + + Line 16: section - [section-id-missing] +Always provide an ID attribute in <section> elements. + + + diff --git a/test/section-id-missing/section-id-missing.dita b/test/section-id-missing/section-id-missing.dita new file mode 100644 index 0000000..3650489 --- /dev/null +++ b/test/section-id-missing/section-id-missing.dita @@ -0,0 +1,23 @@ + + + + section-id-missing + +

+ <section> must have an 'id' attribute +

+ +
+ Good Section +

+ Morbi nec aliquet libero, ac condimentum tortor. Ut ultrices orci placerat elit rutrum ullamcorper. Etiam vulputate ante eget turpis iaculis, vel fermentum diam porttitor. Morbi pretium tempor nisi, at convallis sem tincidunt ut. Maecenas vitae purus malesuada, elementum dolor ac, porta nisi. Fusce ut dolor in nunc imperdiet lobortis a quis purus. Aliquam nec nibh in ex gravida venenatis vitae in ex. Duis non dui at est aliquam pretium. Sed et egestas tellus. Cras quis condimentum est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi gravida vel dolor ac posuere. Nam vel posuere orci. Nunc eros velit, mattis a ligula nec, finibus aliquam enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. +

+
+
+ Bad Section +

+ Morbi nec aliquet libero, ac condimentum tortor. Ut ultrices orci placerat elit rutrum ullamcorper. Etiam vulputate ante eget turpis iaculis, vel fermentum diam porttitor. Morbi pretium tempor nisi, at convallis sem tincidunt ut. Maecenas vitae purus malesuada, elementum dolor ac, porta nisi. Fusce ut dolor in nunc imperdiet lobortis a quis purus. Aliquam nec nibh in ex gravida venenatis vitae in ex. Duis non dui at est aliquam pretium. Sed et egestas tellus. Cras quis condimentum est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi gravida vel dolor ac posuere. Nam vel posuere orci. Nunc eros velit, mattis a ligula nec, finibus aliquam enim. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. +

+
+ +
\ No newline at end of file diff --git a/test/table-all-rows-filtered/build.xml b/test/table-all-rows-filtered/build.xml new file mode 100644 index 0000000..cab02b0 --- /dev/null +++ b/test/table-all-rows-filtered/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that a table with all rows filtered is a validation error + + + + + + diff --git a/test/table-all-rows-filtered/document.ditamap b/test/table-all-rows-filtered/document.ditamap new file mode 100644 index 0000000..5087156 --- /dev/null +++ b/test/table-all-rows-filtered/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/table-all-rows-filtered/expected.svrl b/test/table-all-rows-filtered/expected.svrl new file mode 100644 index 0000000..4d92c02 --- /dev/null +++ b/test/table-all-rows-filtered/expected.svrl @@ -0,0 +1,13 @@ + + + + + Line 34: row - [table-all-rows-filtered] +Found only <row product="hlp"> elements in <tbody>. This results in an empty <tbody> for other variants. Either add additional product attributes for the missing variants or add <table product="hlp"> to the appropriate elements. + + + Line 37: row - [table-all-rows-filtered] +Found only <row product="hlp"> elements in <tbody>. This results in an empty <tbody> for other variants. Either add additional product attributes for the missing variants or add <table product="hlp"> to the appropriate elements. + + + diff --git a/test/table-all-rows-filtered/table-all-rows-filtered.dita b/test/table-all-rows-filtered/table-all-rows-filtered.dita new file mode 100644 index 0000000..958ddf7 --- /dev/null +++ b/test/table-all-rows-filtered/table-all-rows-filtered.dita @@ -0,0 +1,59 @@ + + + + table-all-rows-filtered + +

+ <table> If an element contains filtered sub elements, they must not be all of the filter type. +

+
+ Good Table + + + + + + + +   + + +   + + + +
+ +
+
+ Bad Table + + + + + +   + + +   + + + +
+ + + + + + +   + + +   + + + +
+
+ +
\ No newline at end of file diff --git a/test/table-id-invalid/build.xml b/test/table-id-invalid/build.xml new file mode 100644 index 0000000..b9283d0 --- /dev/null +++ b/test/table-id-invalid/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that table with an id not starting with table is a validation error + + + + + + diff --git a/test/table-id-invalid/document.ditamap b/test/table-id-invalid/document.ditamap new file mode 100644 index 0000000..c73a18c --- /dev/null +++ b/test/table-id-invalid/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/table-id-invalid/expected.svrl b/test/table-id-invalid/expected.svrl new file mode 100644 index 0000000..6b2553e --- /dev/null +++ b/test/table-id-invalid/expected.svrl @@ -0,0 +1,9 @@ + + + + + Line 38: table[id="bad"] - [table-id-invalid] +ID values must start with 'table-' in <table> elements. + + + diff --git a/test/table-id-invalid/table-id-invalid.dita b/test/table-id-invalid/table-id-invalid.dita new file mode 100644 index 0000000..572dd88 --- /dev/null +++ b/test/table-id-invalid/table-id-invalid.dita @@ -0,0 +1,50 @@ + + + + table-id-invalid + +

+ <table> 'id' attributes must be in the following format - (lowercase, a-z only, words separated by hyphens) +

+
+ Good Table + + + + + + +   + + + +
+ + + + + + +   + + + +
+ +
+
+ Bad Table + + + + + + +   + + + +
+
+ +
\ No newline at end of file diff --git a/test/test.properties b/test/test.properties new file mode 100644 index 0000000..0286652 --- /dev/null +++ b/test/test.properties @@ -0,0 +1 @@ +args.validate.mode=report diff --git a/test/tgroup-cols-colspec-mismatch/build.xml b/test/tgroup-cols-colspec-mismatch/build.xml new file mode 100644 index 0000000..8b9b33e --- /dev/null +++ b/test/tgroup-cols-colspec-mismatch/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that if the tgroup-cols and colspec are mismatched there is a validation error + + + + + + diff --git a/test/tgroup-cols-colspec-mismatch/document.ditamap b/test/tgroup-cols-colspec-mismatch/document.ditamap new file mode 100644 index 0000000..f72ec70 --- /dev/null +++ b/test/tgroup-cols-colspec-mismatch/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/tgroup-cols-colspec-mismatch/expected.svrl b/test/tgroup-cols-colspec-mismatch/expected.svrl new file mode 100644 index 0000000..0c79d39 --- /dev/null +++ b/test/tgroup-cols-colspec-mismatch/expected.svrl @@ -0,0 +1,9 @@ + + + + + Line 44: tgroup - [tgroup-cols-colspec-mismatch] +The number of 1 <colspec> elements defined do not match the parent <tgroup cols="2"> attribute. Make sure the number of <colspec> elements corresponds with the cols value. + + + diff --git a/test/tgroup-cols-colspec-mismatch/tgroup-cols-colspec-mismatch.dita b/test/tgroup-cols-colspec-mismatch/tgroup-cols-colspec-mismatch.dita new file mode 100644 index 0000000..c653e6a --- /dev/null +++ b/test/tgroup-cols-colspec-mismatch/tgroup-cols-colspec-mismatch.dita @@ -0,0 +1,57 @@ + + + + tgroup-cols-colspec-mismatch + +

+ {tgroup} mismatch - cols attribute does not match the actual number of colspec elements +

+ +
+ Good Table + + + + + + + +   + + + +
+ + + + + + + + + +   +   + + + +
+ +
+
+ Bad Table + + + + + +   +   + + + +
+
+ + +
\ No newline at end of file diff --git a/test/tgroup-cols-entry-mismatch-bad/build.xml b/test/tgroup-cols-entry-mismatch-bad/build.xml new file mode 100644 index 0000000..4794de7 --- /dev/null +++ b/test/tgroup-cols-entry-mismatch-bad/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that if tgroup-cols does not match the number of entry elements there is a validation error + + + + + + diff --git a/test/tgroup-cols-entry-mismatch-bad/document.ditamap b/test/tgroup-cols-entry-mismatch-bad/document.ditamap new file mode 100644 index 0000000..b77eb20 --- /dev/null +++ b/test/tgroup-cols-entry-mismatch-bad/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/tgroup-cols-entry-mismatch-bad/expected.svrl b/test/tgroup-cols-entry-mismatch-bad/expected.svrl new file mode 100644 index 0000000..0679b5e --- /dev/null +++ b/test/tgroup-cols-entry-mismatch-bad/expected.svrl @@ -0,0 +1,9 @@ + + + + + Line 47: row - [tgroup-cols-entry-mismatch] +The number of 3 <entry> elements found do not match the parent <tgroup cols="2"> attribute. Make sure the number of <entry> elements corresponds with the cols value. + + + diff --git a/test/tgroup-cols-entry-mismatch-bad/tgroup-cols-entry-mismatch-bad.dita b/test/tgroup-cols-entry-mismatch-bad/tgroup-cols-entry-mismatch-bad.dita new file mode 100644 index 0000000..eba4f3a --- /dev/null +++ b/test/tgroup-cols-entry-mismatch-bad/tgroup-cols-entry-mismatch-bad.dita @@ -0,0 +1,57 @@ + + + + tgroup-cols-entry-mismatch-bad + +

+ {tgroup} mismatch - cols="x" but y {entry} elements found {table}. +

+
+ Good Table + + + + + + + +   + + + +
+ + + + + + + + + +   +   + + + +
+ +
+
+ Bad Table + + + + + + +   +   +   + + + +
+
+ +
\ No newline at end of file diff --git a/test/tgroup-cols-entry-mismatch/build.xml b/test/tgroup-cols-entry-mismatch/build.xml new file mode 100644 index 0000000..a96dc5e --- /dev/null +++ b/test/tgroup-cols-entry-mismatch/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that if the tgroup-cols and entry elements match is a validation success + + + + + + diff --git a/test/tgroup-cols-entry-mismatch/document.ditamap b/test/tgroup-cols-entry-mismatch/document.ditamap new file mode 100644 index 0000000..bff278b --- /dev/null +++ b/test/tgroup-cols-entry-mismatch/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/tgroup-cols-entry-mismatch/expected.svrl b/test/tgroup-cols-entry-mismatch/expected.svrl new file mode 100644 index 0000000..4a131d6 --- /dev/null +++ b/test/tgroup-cols-entry-mismatch/expected.svrl @@ -0,0 +1,4 @@ + + + + diff --git a/test/tgroup-cols-entry-mismatch/tgroup-cols-entry-mismatch.dita b/test/tgroup-cols-entry-mismatch/tgroup-cols-entry-mismatch.dita new file mode 100644 index 0000000..2030e64 --- /dev/null +++ b/test/tgroup-cols-entry-mismatch/tgroup-cols-entry-mismatch.dita @@ -0,0 +1,47 @@ + + + + tgroup-cols-entry-mismatch + +

+ {tgroup} mismatch - cols="x" but y {entry} elements found {table}. +

+
+ Good Table + + + + + + + +   + + + +
+ + + + + + + + + +   +   + + + +
+ +
+
+ Bad ids +

+ Failing test will break the build - see tgroup-cols-entry-mismatch-bad.dita +

+
+ +
\ No newline at end of file diff --git a/test/topicref-href-missing/build.xml b/test/topicref-href-missing/build.xml new file mode 100644 index 0000000..329be1d --- /dev/null +++ b/test/topicref-href-missing/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that a topicref element with no href attribute is a validation error + + + + + + diff --git a/test/topicref-href-missing/document.ditamap b/test/topicref-href-missing/document.ditamap new file mode 100644 index 0000000..fe1632f --- /dev/null +++ b/test/topicref-href-missing/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/topicref-href-missing/expected.svrl b/test/topicref-href-missing/expected.svrl new file mode 100644 index 0000000..df7a82a --- /dev/null +++ b/test/topicref-href-missing/expected.svrl @@ -0,0 +1,9 @@ + + + + + Line 5: topicref - [topicref-href-missing] +Always provide an href attribute in <topicref> elements. + + + diff --git a/test/xref-external-file-not-found/build.xml b/test/xref-external-file-not-found/build.xml new file mode 100644 index 0000000..42aad93 --- /dev/null +++ b/test/xref-external-file-not-found/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that xref-external-file-not-found is a validation error + + + + + + diff --git a/test/xref-external-file-not-found/document.ditamap b/test/xref-external-file-not-found/document.ditamap new file mode 100644 index 0000000..3a8f8d9 --- /dev/null +++ b/test/xref-external-file-not-found/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/xref-external-file-not-found/expected.svrl b/test/xref-external-file-not-found/expected.svrl new file mode 100644 index 0000000..c7ef654 --- /dev/null +++ b/test/xref-external-file-not-found/expected.svrl @@ -0,0 +1,13 @@ + + + + + Line 11: xref - [xref-external-file-not-found] +The file specified in <xref href="../graphics/sample-jpg.jpg"> does not exist. Check the related folder for the missing file and make sure the link and file name specified are correct. + + + Line 15: xref - [xref-external-file-not-found] +The file specified in <xref href="../graphics/non existent jpg"> does not exist. Check the related folder for the missing file and make sure the link and file name specified are correct. + + + diff --git a/test/xref-external-file-not-found/xref-external-file-not-found.dita b/test/xref-external-file-not-found/xref-external-file-not-found.dita new file mode 100644 index 0000000..b83ed26 --- /dev/null +++ b/test/xref-external-file-not-found/xref-external-file-not-found.dita @@ -0,0 +1,18 @@ + + + + xref-external-file-not-found + +

+ <xref> For an href to an external file, the file linked to must exist +

+
+ Good xref + Sample conformant link to an image. +
+
+ Bad xref + Sample non-conformant link to an image that does not exist. +
+ +
diff --git a/test/xref-external-id-not-found/build.xml b/test/xref-external-id-not-found/build.xml new file mode 100644 index 0000000..770a1cf --- /dev/null +++ b/test/xref-external-id-not-found/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that xref-external-id-not-found is a validation error + + + + + + diff --git a/test/xref-external-id-not-found/document.ditamap b/test/xref-external-id-not-found/document.ditamap new file mode 100644 index 0000000..5a7b5b2 --- /dev/null +++ b/test/xref-external-id-not-found/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/xref-external-id-not-found/expected.svrl b/test/xref-external-id-not-found/expected.svrl new file mode 100644 index 0000000..7c1f976 --- /dev/null +++ b/test/xref-external-id-not-found/expected.svrl @@ -0,0 +1,13 @@ + + + + + Line 11: xref - [xref-external-file-not-found] +The file specified in <xref href="id-not-unique.dita#good"> does not exist. Check the related folder for the missing file and make sure the link and file name specified are correct. + + + Line 15: xref - [xref-external-file-not-found] +The file specified in <xref href="id-not-unique.dita#good-or-bad"> does not exist. Check the related folder for the missing file and make sure the link and file name specified are correct. + + + diff --git a/test/xref-external-id-not-found/xref-external-id-not-found.dita b/test/xref-external-id-not-found/xref-external-id-not-found.dita new file mode 100644 index 0000000..88f66e8 --- /dev/null +++ b/test/xref-external-id-not-found/xref-external-id-not-found.dita @@ -0,0 +1,18 @@ + + + + xref-external-id-not-found + +

+ <xref> For an href to an external file, the ID linked to must exist +

+
+ Good xref + Sample conformant link to topic 19 file's "good" section. +
+
+ Bad xref + Sample non-conformant link to topic 19 file's non existent "good-or-bad" section. +
+ +
diff --git a/test/xref-external-path-not-found/build.xml b/test/xref-external-path-not-found/build.xml new file mode 100644 index 0000000..f54efaa --- /dev/null +++ b/test/xref-external-path-not-found/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that xref-external-path-not-found is a validation error + + + + + + diff --git a/test/xref-external-path-not-found/document.ditamap b/test/xref-external-path-not-found/document.ditamap new file mode 100644 index 0000000..e67002a --- /dev/null +++ b/test/xref-external-path-not-found/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/xref-external-path-not-found/expected.svrl b/test/xref-external-path-not-found/expected.svrl new file mode 100644 index 0000000..7ccbb7d --- /dev/null +++ b/test/xref-external-path-not-found/expected.svrl @@ -0,0 +1,13 @@ + + + + + Line 11: xref - [xref-external-file-not-found] +The file specified in <xref href="id-not-unique.dita#good/p1"> does not exist. Check the related folder for the missing file and make sure the link and file name specified are correct. + + + Line 15: xref - [xref-external-file-not-found] +The file specified in <xref href="id-not-unique.dita#good/p1-2"> does not exist. Check the related folder for the missing file and make sure the link and file name specified are correct. + + + diff --git a/test/xref-external-path-not-found/xref-external-path-not-found.dita b/test/xref-external-path-not-found/xref-external-path-not-found.dita new file mode 100644 index 0000000..b22eacb --- /dev/null +++ b/test/xref-external-path-not-found/xref-external-path-not-found.dita @@ -0,0 +1,18 @@ + + + + xref-external-path-not-found + +

+ <xref> For an href to an external file, the path linked to must exist. +

+
+ Good xref + Sample conformant link to topic 19 file's "good" section subelement. +
+
+ Bad xref + Sample non-conformant link to topic 19 file's non existent "good" section "p1-2" subelement. +
+ +
diff --git a/test/xref-internal-id-not-found/build.xml b/test/xref-internal-id-not-found/build.xml new file mode 100644 index 0000000..a990223 --- /dev/null +++ b/test/xref-internal-id-not-found/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that xref-internal-id-not-found is a validation error + + + + + + diff --git a/test/xref-internal-id-not-found/document.ditamap b/test/xref-internal-id-not-found/document.ditamap new file mode 100644 index 0000000..4ecb7f8 --- /dev/null +++ b/test/xref-internal-id-not-found/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/xref-internal-id-not-found/expected.svrl b/test/xref-internal-id-not-found/expected.svrl new file mode 100644 index 0000000..78ed542 --- /dev/null +++ b/test/xref-internal-id-not-found/expected.svrl @@ -0,0 +1,9 @@ + + + + + Line 15: xref - [xref-internal-id-not-found] +The referenced ID in <xref href="#bad-2"> does not exist. Make sure the ID value specified is correct. + + + diff --git a/test/xref-internal-id-not-found/xref-internal-id-not-found.dita b/test/xref-internal-id-not-found/xref-internal-id-not-found.dita new file mode 100644 index 0000000..3913ac6 --- /dev/null +++ b/test/xref-internal-id-not-found/xref-internal-id-not-found.dita @@ -0,0 +1,18 @@ + + + + xref-internal-id-not-found + +

+ <xref> For an href within a single file, the ID linked to must exist +

+
+ Good xref +

Sample conformant link to this topic's "bad" section.

+
+
+ Bad xref +

Sample conformant link to this topic's non existent "bad-2" section.

+
+ +
diff --git a/test/xref-internal-path-not-found/build.xml b/test/xref-internal-path-not-found/build.xml new file mode 100644 index 0000000..643da2e --- /dev/null +++ b/test/xref-internal-path-not-found/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that xref-internal-path-not-found is a validation error + + + + + + diff --git a/test/xref-internal-path-not-found/document.ditamap b/test/xref-internal-path-not-found/document.ditamap new file mode 100644 index 0000000..e80ef94 --- /dev/null +++ b/test/xref-internal-path-not-found/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/xref-internal-path-not-found/expected.svrl b/test/xref-internal-path-not-found/expected.svrl new file mode 100644 index 0000000..a384757 --- /dev/null +++ b/test/xref-internal-path-not-found/expected.svrl @@ -0,0 +1,9 @@ + + + + + Line 15: xref - [xref-internal-path-not-found] +The referenced path in <xref href="#bad-2/some-title"> does not exist. Make sure the path is correct. + + + diff --git a/test/xref-internal-path-not-found/xref-internal-path-not-found.dita b/test/xref-internal-path-not-found/xref-internal-path-not-found.dita new file mode 100644 index 0000000..1f2160d --- /dev/null +++ b/test/xref-internal-path-not-found/xref-internal-path-not-found.dita @@ -0,0 +1,18 @@ + + + + xref-internal-path-not-found + +

+ <xref> For an href within a single file, the path linked to must exist +

+
+ Good xref +

Sample conformant link to this topic's "bad" section "some-title" subelement.

+
+
+ Bad xref +

Sample conformant link to this topic's non existent "bad-2" section "some-title" subelement.

+
+ +
diff --git a/test/xref-no-format-internal/build.xml b/test/xref-no-format-internal/build.xml new file mode 100644 index 0000000..d7a1ee9 --- /dev/null +++ b/test/xref-no-format-internal/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that xref-no-format-internal is a validation error + + + + + + diff --git a/test/xref-no-format-internal/document.ditamap b/test/xref-no-format-internal/document.ditamap new file mode 100644 index 0000000..f65c8c9 --- /dev/null +++ b/test/xref-no-format-internal/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/xref-no-format-internal/expected.svrl b/test/xref-no-format-internal/expected.svrl new file mode 100644 index 0000000..60f113e --- /dev/null +++ b/test/xref-no-format-internal/expected.svrl @@ -0,0 +1,41 @@ + + + + + Line 11: xref - [xref-external-file-not-found] +The file specified in <xref href="id-not-unique.dita"> does not exist. Check the related folder for the missing file and make sure the link and file name specified are correct. + + + Line 12: xref - [xref-external-file-not-found] +The file specified in <xref href="id-not-unique.dita#good"> does not exist. Check the related folder for the missing file and make sure the link and file name specified are correct. + + + Line 13: xref - [xref-external-file-not-found] +The file specified in <xref href="id-not-unique.dita#good/p1"> does not exist. Check the related folder for the missing file and make sure the link and file name specified are correct. + + + Line 17: xref - [xref-no-format] +Always provide a format attribute in <xref> elements, (for example, format="dita" or format="html"). + + + Line 17: xref - [xref-external-file-not-found] +The file specified in <xref href="id-not-unique.dita"> does not exist. Check the related folder for the missing file and make sure the link and file name specified are correct. + + + Line 18: xref - [xref-no-format] +Always provide a format attribute in <xref> elements, (for example, format="dita" or format="html"). + + + Line 18: xref - [xref-external-file-not-found] +The file specified in <xref href="id-not-unique.dita#good"> does not exist. Check the related folder for the missing file and make sure the link and file name specified are correct. + + + Line 19: xref - [xref-no-format] +Always provide a format attribute in <xref> elements, (for example, format="dita" or format="html"). + + + Line 19: xref - [xref-external-file-not-found] +The file specified in <xref href="id-not-unique.dita#good/p1"> does not exist. Check the related folder for the missing file and make sure the link and file name specified are correct. + + + diff --git a/test/xref-no-format-internal/xref-no-format-internal.dita b/test/xref-no-format-internal/xref-no-format-internal.dita new file mode 100644 index 0000000..0a44732 --- /dev/null +++ b/test/xref-no-format-internal/xref-no-format-internal.dita @@ -0,0 +1,22 @@ + + + + xref-no-format - internal link + +

+ <xref> Any file reference should have a format property +

+
+ Good xref +

Sample conformant link to the Rule 19 topic.

+

Sample conformant link to the Rule 19 topic's "good" section.

+

Sample conformant link to the Rule 19 topic's "good" section p1 subelement.

+
+
+ Bad xref +

Sample non-conformant link to the Rule 19 topic.

+

Sample non-conformant link to the Rule 19 topic's "good" section.

+

Sample non-conformant link to the Rule 19 topic's "good" section p1 subelement.

+
+ +
diff --git a/test/xref-no-format-other/build.xml b/test/xref-no-format-other/build.xml new file mode 100644 index 0000000..2ec2bf7 --- /dev/null +++ b/test/xref-no-format-other/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that xref-no-format-other is a validation error + + + + + + diff --git a/test/xref-no-format-other/document.ditamap b/test/xref-no-format-other/document.ditamap new file mode 100644 index 0000000..c3103c0 --- /dev/null +++ b/test/xref-no-format-other/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/xref-no-format-other/expected.svrl b/test/xref-no-format-other/expected.svrl new file mode 100644 index 0000000..5b04139 --- /dev/null +++ b/test/xref-no-format-other/expected.svrl @@ -0,0 +1,13 @@ + + + + + Line 16: xref - [xref-no-format] +Always provide a format attribute in <xref> elements, (for example, format="dita" or format="html"). + + + Line 17: xref - [xref-no-format] +Always provide a format attribute in <xref> elements, (for example, format="dita" or format="html"). + + + diff --git a/test/xref-no-format-other/xref-no-format-other.dita b/test/xref-no-format-other/xref-no-format-other.dita new file mode 100644 index 0000000..0e1a0bf --- /dev/null +++ b/test/xref-no-format-other/xref-no-format-other.dita @@ -0,0 +1,20 @@ + + + + xref-no-format - Other link + +

+ <xref> Any other element using a href should have a format property +

+
+ Good xrefs +

Sample conformant link to this topic's "bad" section.

+

Sample conformant mailto: link.

+
+
+ Bad xrefs +

Sample non-conformant link this topic's "good" section.

+

Sample non-conformant mailto: link.

+
+ +
diff --git a/test/xref-no-format-www/build.xml b/test/xref-no-format-www/build.xml new file mode 100644 index 0000000..c3046a3 --- /dev/null +++ b/test/xref-no-format-www/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that xref-no-format-www is a validation error + + + + + + diff --git a/test/xref-no-format-www/document.ditamap b/test/xref-no-format-www/document.ditamap new file mode 100644 index 0000000..d18e0bf --- /dev/null +++ b/test/xref-no-format-www/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/xref-no-format-www/expected.svrl b/test/xref-no-format-www/expected.svrl new file mode 100644 index 0000000..5b04139 --- /dev/null +++ b/test/xref-no-format-www/expected.svrl @@ -0,0 +1,13 @@ + + + + + Line 16: xref - [xref-no-format] +Always provide a format attribute in <xref> elements, (for example, format="dita" or format="html"). + + + Line 17: xref - [xref-no-format] +Always provide a format attribute in <xref> elements, (for example, format="dita" or format="html"). + + + diff --git a/test/xref-no-format-www/xref-no-format-www.dita b/test/xref-no-format-www/xref-no-format-www.dita new file mode 100644 index 0000000..8ac1e20 --- /dev/null +++ b/test/xref-no-format-www/xref-no-format-www.dita @@ -0,0 +1,20 @@ + + + + xref-no-format - WWW link + +

+ <xref> Any xref referencing a URL should have a format property +

+
+ Good xrefs +

Sample conformant link http://maps.here.com .

+

Sample conformant www link.

+
+
+ Bad xrefs +

Sample non-conformant link http://maps.here.com .

+

Sample conformant www link.

+
+ +
diff --git a/test/xref-www-format-invalid/build.xml b/test/xref-www-format-invalid/build.xml new file mode 100644 index 0000000..735fb21 --- /dev/null +++ b/test/xref-www-format-invalid/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that xref-www-format-invalid is a validation error + + + + + + diff --git a/test/xref-www-format-invalid/document.ditamap b/test/xref-www-format-invalid/document.ditamap new file mode 100644 index 0000000..f865953 --- /dev/null +++ b/test/xref-www-format-invalid/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/xref-www-format-invalid/expected.svrl b/test/xref-www-format-invalid/expected.svrl new file mode 100644 index 0000000..42258ae --- /dev/null +++ b/test/xref-www-format-invalid/expected.svrl @@ -0,0 +1,17 @@ + + + + + Line 18: xref - [xref-www-format-invalid] +<xref href="https://maps.here.com" format="dita"> The specified value points to an external file and cannot have the attribute key/value pair format="dita". Change the format value as appropriate (for example, format="html"). + + + Line 19: xref - [xref-www-format-invalid] +<xref href="https://maps.here.com:443" format="dita"> The specified value points to an external file and cannot have the attribute key/value pair format="dita". Change the format value as appropriate (for example, format="html"). + + + Line 20: xref - [xref-www-format-invalid] +<xref href="mailto:apf@here.com" format="dita"> The specified value points to an external file and cannot have the attribute key/value pair format="dita". Change the format value as appropriate (for example, format="html"). + + + diff --git a/test/xref-www-format-invalid/xref-www-format-invalid.dita b/test/xref-www-format-invalid/xref-www-format-invalid.dita new file mode 100644 index 0000000..f0ef7a9 --- /dev/null +++ b/test/xref-www-format-invalid/xref-www-format-invalid.dita @@ -0,0 +1,23 @@ + + + + xref-www-format-invalid + +

+ + <xref> For an href with a protocol (i.e. http://) the format attribute should not be dita +

+
+ Good xrefs +

Sample conformant link to https://maps.here.com .

+

Sample conformant link to https://maps.here.com:443 .

+

Sample conformant mailto: link.

+
+
+ Bad xrefs +

Sample non-conformant link to https://maps.here.com .

+

Sample non-conformant link to https://maps.here.com:443 .

+

Sample non-conformant mailto: link.

+
+ +
diff --git a/test/xref-www-scope-invalid/build.xml b/test/xref-www-scope-invalid/build.xml new file mode 100644 index 0000000..d7f22f3 --- /dev/null +++ b/test/xref-www-scope-invalid/build.xml @@ -0,0 +1,11 @@ + + + + + Expect that xref-www-scope-invalid is a validation error + + + + + + diff --git a/test/xref-www-scope-invalid/document.ditamap b/test/xref-www-scope-invalid/document.ditamap new file mode 100644 index 0000000..f64aaf6 --- /dev/null +++ b/test/xref-www-scope-invalid/document.ditamap @@ -0,0 +1,7 @@ + + + + + + + diff --git a/test/xref-www-scope-invalid/expected.svrl b/test/xref-www-scope-invalid/expected.svrl new file mode 100644 index 0000000..2df024b --- /dev/null +++ b/test/xref-www-scope-invalid/expected.svrl @@ -0,0 +1,17 @@ + + + + + Line 18: xref - [xref-www-scope-invalid] +<xref href="https://maps.here.com"> The specified value points to an external file. Specify the attribute key/value pair scope="external". + + + Line 19: xref - [xref-www-scope-invalid] +<xref href="https://maps.here.com:443"> The specified value points to an external file. Specify the attribute key/value pair scope="external". + + + Line 20: xref - [xref-www-scope-invalid] +<xref href="mailto:apf@here.com"> The specified value points to an external file. Specify the attribute key/value pair scope="external". + + + diff --git a/test/xref-www-scope-invalid/xref-www-scope-invalid.dita b/test/xref-www-scope-invalid/xref-www-scope-invalid.dita new file mode 100644 index 0000000..335d1ea --- /dev/null +++ b/test/xref-www-scope-invalid/xref-www-scope-invalid.dita @@ -0,0 +1,23 @@ + + + + xref-www-scope-invalid + +

+ + <xref> For an href with a protocol (i.e. http://) the scope attribute must be external +

+
+ Good xrefs +

Sample conformant link to https://maps.here.com .

+

Sample conformant link to https://maps.here.com:443 .

+

Sample conformant mailto: link.

+
+
+ Bad xrefs +

Sample non-conformant link to https://maps.here.com .

+

Sample non-conformant link to https://maps.here.com:443 .

+

Sample non-conformant mailto: link.

+
+ +