@@ -23,6 +23,8 @@ PARAMS_TESTS_DIR := $(TESTS_DIR)/params
2323TAGS_TESTS_DIR := $(TESTS_DIR ) /tags
2424TAG_CHANGES_TESTS_DIR := $(TESTS_DIR ) /tag-changes
2525ADOC2HTML_TESTS_DIR := $(TESTS_DIR ) /adoc2html
26+ SHARED_UTILS_TESTS_DIR := $(TESTS_DIR ) /shared_utils
27+ TEXT_TO_HTML_TESTS_DIR := $(TESTS_DIR ) /text_to_html
2628NORM_RULE_DEF_DIR := $(NORM_RULE_TESTS_DIR )
2729NORM_RULE_EXPECTED_DIR := $(NORM_RULE_TESTS_DIR ) /expected
2830PARAMS_DEF_DIR := $(PARAMS_TESTS_DIR )
@@ -36,6 +38,11 @@ DETECT_TAG_CHANGES_TOOL := $(TOOLS_DIR)/detect_tag_changes.py
3638DETECT_TAG_CHANGES_PYTHON := python3 $(DETECT_TAG_CHANGES_TOOL )
3739CREATE_PARAMS_TOOL := $(TOOLS_DIR ) /create_params.py
3840CREATE_PARAMS_PYTHON := python3 $(CREATE_PARAMS_TOOL )
41+ CREATE_PARAM_ADOC_FILES_TOOL := $(TOOLS_DIR ) /create_param_appendix.py
42+ CREATE_PARAM_ADOC_FILES_PYTHON := python3 $(CREATE_PARAM_ADOC_FILES_TOOL )
43+ PARAM_ADOC_TEST_SCRIPT := $(PARAMS_TESTS_DIR ) /test_param_appendix.py
44+ PARAM_ADOC_TEST_PYTHON := python3 $(PARAM_ADOC_TEST_SCRIPT )
45+ PARAMS_ADOC_TEMPLATE := $(PARAMS_TESTS_DIR ) /test-param-appendix-template.adoc
3946
4047# Stuff for building test standards document in HTML to have links into it.
4148DOCS = test-ch1 test-ch2
@@ -78,6 +85,9 @@ BUILT_NORM_RULES_HTML := $(BUILD_DIR)/$(NORM_RULE_HTML_OUTPUT_FNAME)
7885BUILT_NORM_RULES_TAGS_NO_RULES := $(BUILD_DIR ) /$(NORM_RULE_TAGS_NO_RULES_OUTPUT_FNAME )
7986BUILT_PARAMS_JSON := $(BUILD_DIR ) /$(PARAMS_JSON_OUTPUT_FNAME )
8087BUILT_PARAMS_HTML := $(BUILD_DIR ) /$(PARAMS_HTML_OUTPUT_FNAME )
88+ BUILT_PARAM_ADOC_DIR := $(BUILD_DIR ) /test-param-appendix-adoc-includes
89+ BUILT_PARAM_ADOC_STAMP := $(BUILD_DIR ) /test-param-adoc.done
90+ BUILT_PARAMS_ADOC := $(BUILD_DIR ) /test-param-appendix.adoc
8191
8292# Combine separate fnames into lists.
8393BUILT_TEST_HTML_FNAMES := $(BUILT_TEST_CH1_HTML_FNAME ) $(BUILT_TEST_CH2_HTML_FNAME )
@@ -91,12 +101,18 @@ EXPECTED_NORM_RULES_JSON := $(NORM_RULE_EXPECTED_DIR)/$(NORM_RULE_JSON_OUTPUT_FN
91101EXPECTED_NORM_RULES_HTML := $(NORM_RULE_EXPECTED_DIR ) /$(NORM_RULE_HTML_OUTPUT_FNAME )
92102EXPECTED_PARAMS_JSON := $(PARAMS_EXPECTED_DIR ) /$(PARAMS_JSON_OUTPUT_FNAME )
93103EXPECTED_PARAMS_HTML := $(PARAMS_EXPECTED_DIR ) /$(PARAMS_HTML_OUTPUT_FNAME )
104+ EXPECTED_PARAMS_ADOC := $(PARAMS_EXPECTED_DIR ) /test-param-appendix.adoc
105+ EXPECTED_PARAM_ADOC_DIR := $(PARAMS_EXPECTED_DIR ) /test-param-appendix-adoc-includes
94106
95107# Normative rule definition input YAML files.
96108GOOD_NORM_RULE_DEF_FILES := $(NORM_RULE_DEF_DIR ) /test-ch1.yaml $(NORM_RULE_DEF_DIR ) /test-ch2.yaml
97109BAD_NORM_RULE_DEF_FILES := $(NORM_RULE_DEF_DIR ) /missing_tag_refs.yaml
98110PARAM_DEF_TEST_FILES := $(PARAMS_TESTS_DIR ) /test-ch1.yaml $(PARAMS_TESTS_DIR ) /test-ch2.yaml
99111ADOC2HTML_TEST_SCRIPT := $(ADOC2HTML_TESTS_DIR ) /test_adoc_to_html.py
112+ SHARED_UTILS_TEST_SCRIPT := $(SHARED_UTILS_TESTS_DIR ) /test_shared_utils.py
113+ ADOC_TO_HTML_UNIT_TEST_SCRIPT := $(TEXT_TO_HTML_TESTS_DIR ) /test_adoc_to_html_unit.py
114+ DEF_TEXT_TO_HTML_UNIT_TEST_SCRIPT := $(TEXT_TO_HTML_TESTS_DIR ) /test_def_text_to_html_unit.py
115+ TAG_TEXT_TO_HTML_UNIT_TEST_SCRIPT := $(TEXT_TO_HTML_TESTS_DIR ) /test_tag_text_to_html_unit.py
100116
101117# Add -t to each normative tag input filename and add prefix of "/" to make into absolute pathname.
102118NORM_TAG_FILE_ARGS := $(foreach relative_pname,$(BUILT_TEST_NORM_TAGS_FNAMES ) ,-t /$(relative_pname ) )
@@ -174,21 +190,22 @@ all: test
174190
175191# Build tests and compare against expected
176192.PHONY : test
177- test : build-tests compare-tests test-tag-changes test-adoc2html
193+ test : build-tests compare-tests test-tag-changes test-adoc2html test-shared-utils test-text-to-html
178194
179195# Build tests
180- .PHONY : build-tests build-test-tags build-test-norm-rules-json build-test-norm-rules-html build-test-tags-without-rules build-test-params-json build-test-params-html
181- build-tests : build-test-tags build-test-norm-rules-json build-test-norm-rules-html build-test-tags-without-rules build-test-params-json build-test-params-html
196+ .PHONY : build-tests build-test-tags build-test-norm-rules-json build-test-norm-rules-html build-test-tags-without-rules build-test-params-json build-test-params-html build-test-param-adoc
197+ build-tests : build-test-tags build-test-norm-rules-json build-test-norm-rules-html build-test-tags-without-rules build-test-params-json build-test-params-html build-test-param-adoc
182198build-test-tags : $(BUILT_TEST_NORM_TAGS_FNAMES ) $(BUILT_DUPLICATE_NORM_TAGS_FNAME )
183199build-test-norm-rules-json : $(BUILT_NORM_RULES_JSON )
184200build-test-norm-rules-html : $(BUILT_NORM_RULES_HTML )
185201build-test-tags-without-rules : $(BUILT_NORM_RULES_TAGS_NO_RULES )
186202build-test-params-json : $(BUILT_PARAMS_JSON )
187203build-test-params-html : $(BUILT_PARAMS_HTML )
204+ build-test-param-adoc : $(BUILT_PARAM_ADOC_STAMP )
188205
189206# Compare tests against expected
190207.PHONY : compare-tests
191- compare-tests : compare-test-tags compare-test-norm-rules-json compare-test-norm-rules-html compare-test-params-json compare-test-params-html
208+ compare-tests : compare-test-tags compare-test-norm-rules-json compare-test-norm-rules-html compare-test-params-json compare-test-params-html compare-test-params-adoc compare-test-param-adoc-files
192209
193210.PHONY : compare-test-tags
194211compare-test-tags : compare-test-ch1-tags compare-test-ch2-tags
@@ -223,6 +240,16 @@ compare-test-params-html: $(EXPECTED_PARAMS_HTML) $(BUILT_PARAMS_HTML)
223240 @echo " CHECKING HTML BUILT PARAMS AGAINST EXPECTED PARAMS"
224241 diff $(EXPECTED_PARAMS_HTML ) $(BUILT_PARAMS_HTML ) && echo " diff PASSED" || (echo " diff FAILED" ; exit 1)
225242
243+ .PHONY : compare-test-params-adoc
244+ compare-test-params-adoc : $(EXPECTED_PARAMS_ADOC ) $(BUILT_PARAMS_ADOC )
245+ @echo " CHECKING PARAMS ADOC AGAINST EXPECTED"
246+ diff $(EXPECTED_PARAMS_ADOC ) $(BUILT_PARAMS_ADOC ) && echo " diff PASSED" || (echo " diff FAILED" ; exit 1)
247+
248+ .PHONY : compare-test-param-adoc-files
249+ compare-test-param-adoc-files : $(EXPECTED_PARAM_ADOC_DIR ) $(BUILT_PARAM_ADOC_DIR )
250+ @echo " CHECKING GENERATED PARAM ADOC FILES AGAINST EXPECTED"
251+ diff -r $(EXPECTED_PARAM_ADOC_DIR ) $(BUILT_PARAM_ADOC_DIR ) && echo " diff PASSED" || (echo " diff FAILED" ; exit 1)
252+
226253# Test tag change detection
227254.PHONY : test-tag-changes test-tag-changes-basic test-tag-changes-verbose test-tag-changes-no-changes test-tag-changes-additions-only test-tag-changes-whitespace-only test-tag-changes-formatting-only test-tag-changes-update
228255test-tag-changes : test-tag-changes-basic test-tag-changes-verbose test-tag-changes-no-changes test-tag-changes-additions-only test-tag-changes-whitespace-only test-tag-changes-formatting-only test-tag-changes-update
@@ -264,9 +291,34 @@ test-adoc2html: $(ADOC2HTML_TEST_SCRIPT) $(TOOLS_DIR)/adoc_to_html.py
264291 @echo " TESTING ADOC2HTML CONVERSION"
265292 python3 $(ADOC2HTML_TEST_SCRIPT ) && echo " test-adoc2html PASSED" || (echo " test-adoc2html FAILED" ; exit 1)
266293
294+ # Test shared_utils helpers in isolation.
295+ .PHONY : test-shared-utils
296+ test-shared-utils : $(SHARED_UTILS_TEST_SCRIPT ) $(TOOLS_DIR ) /shared_utils.py
297+ @echo " TESTING SHARED_UTILS HELPERS"
298+ python3 $(SHARED_UTILS_TEST_SCRIPT ) && echo " test-shared-utils PASSED" || (echo " test-shared-utils FAILED" ; exit 1)
299+
300+ # Test converter helpers in isolation.
301+ .PHONY : test-text-to-html
302+ test-text-to-html : test-adoc-to-html-unit test-def-text-to-html-unit test-tag-text-to-html-unit
303+
304+ .PHONY : test-adoc-to-html-unit
305+ test-adoc-to-html-unit : $(ADOC_TO_HTML_UNIT_TEST_SCRIPT ) $(TOOLS_DIR ) /adoc_to_html.py
306+ @echo " TESTING ADOC_TO_HTML UNIT HELPERS"
307+ python3 $(ADOC_TO_HTML_UNIT_TEST_SCRIPT ) && echo " test-adoc-to-html-unit PASSED" || (echo " test-adoc-to-html-unit FAILED" ; exit 1)
308+
309+ .PHONY : test-def-text-to-html-unit
310+ test-def-text-to-html-unit : $(DEF_TEXT_TO_HTML_UNIT_TEST_SCRIPT ) $(TOOLS_DIR ) /def_text_to_html.py $(TOOLS_DIR ) /adoc_to_html.py
311+ @echo " TESTING DEF_TEXT_TO_HTML UNIT HELPERS"
312+ python3 $(DEF_TEXT_TO_HTML_UNIT_TEST_SCRIPT ) && echo " test-def-text-to-html-unit PASSED" || (echo " test-def-text-to-html-unit FAILED" ; exit 1)
313+
314+ .PHONY : test-tag-text-to-html-unit
315+ test-tag-text-to-html-unit : $(TAG_TEXT_TO_HTML_UNIT_TEST_SCRIPT ) $(TOOLS_DIR ) /tag_text_to_html.py $(TOOLS_DIR ) /def_text_to_html.py $(TOOLS_DIR ) /adoc_to_html.py
316+ @echo " TESTING TAG_TEXT_TO_HTML UNIT HELPERS"
317+ python3 $(TAG_TEXT_TO_HTML_UNIT_TEST_SCRIPT ) && echo " test-tag-text-to-html-unit PASSED" || (echo " test-tag-text-to-html-unit FAILED" ; exit 1)
318+
267319# Update expected files from built files
268320.PHONY : update-expected
269- update-expected : update-test-tags update-test-norm-rules-json update-test-norm-rules-html update-test-params-json update-test-params-html
321+ update-expected : update-test-tags update-test-norm-rules-json update-test-norm-rules-html update-test-params-json update-test-params-html update-test-params-adoc update-test-param-adoc-files
270322
271323.PHONY : update-test-tags
272324update-test-tags : update-test-ch1-tags update-test-ch2-tags
@@ -297,6 +349,17 @@ update-test-params-html: $(BUILT_PARAMS_HTML)
297349 mkdir -p $(PARAMS_EXPECTED_DIR )
298350 cp -f $(BUILT_PARAMS_HTML ) $(EXPECTED_PARAMS_HTML )
299351
352+ .PHONY : update-test-params-adoc
353+ update-test-params-adoc : $(BUILT_PARAMS_ADOC )
354+ mkdir -p $(PARAMS_EXPECTED_DIR )
355+ cp -f $(BUILT_PARAMS_ADOC ) $(EXPECTED_PARAMS_ADOC )
356+
357+ .PHONY : update-test-param-adoc-files
358+ update-test-param-adoc-files : $(BUILT_PARAM_ADOC_DIR )
359+ rm -rf $(EXPECTED_PARAM_ADOC_DIR )
360+ mkdir -p $(EXPECTED_PARAM_ADOC_DIR )
361+ cp -f $(BUILT_PARAM_ADOC_DIR ) /* .adoc $(EXPECTED_PARAM_ADOC_DIR )
362+
300363# Build normative tags with ch1 adoc input
301364$(BUILT_TEST_CH1_NORM_TAGS_FNAME ) : $(NORM_RULE_TESTS_DIR ) /$(TEST_CH1_INPUT_ADOC_FNAME ) $(CONVERTERS_DIR ) /$(TAGS_BACKEND )
302365 $(WORKDIR_SETUP )
@@ -337,6 +400,17 @@ $(BUILT_PARAMS_HTML): $(BUILT_NORM_RULES_JSON) $(PARAM_DEF_TEST_FILES) $(CREATE_
337400 $(DOCKER_CMD ) $(DOCKER_QUOTE ) $(CREATE_PARAMS_PYTHON ) --html --norm-rules $(BUILT_NORM_RULES_JSON ) $(PARAM_DEF_TEST_ARGS ) --output $(BUILT_PARAMS_HTML ) $(DOCKER_QUOTE )
338401 $(WORKDIR_TEARDOWN )
339402
403+ # Build parameter AsciiDoc row fragments from generated params JSON.
404+ $(BUILT_PARAM_ADOC_STAMP ) : $(BUILD_DIR ) /$(PARAMS_JSON_OUTPUT_FNAME ) $(CREATE_PARAM_ADOC_FILES_TOOL ) $(PARAM_ADOC_TEST_SCRIPT ) $(PARAMS_ADOC_TEMPLATE )
405+ $(WORKDIR_SETUP )
406+ cp -f $(BUILD_DIR ) /$(PARAMS_JSON_OUTPUT_FNAME ) $@ .workdir/$(BUILD_DIR )
407+ $(DOCKER_CMD ) $(DOCKER_QUOTE ) $(CREATE_PARAM_ADOC_FILES_PYTHON ) --input $(BUILD_DIR ) /$(PARAMS_JSON_OUTPUT_FNAME ) --output-dir $(BUILT_PARAM_ADOC_DIR ) && touch $(BUILT_PARAM_ADOC_STAMP ) $(DOCKER_QUOTE )
408+ $(DOCKER_CMD ) $(DOCKER_QUOTE ) $(PARAM_ADOC_TEST_PYTHON ) --template $(PARAMS_ADOC_TEMPLATE ) --adoc-dir $(BUILT_PARAM_ADOC_DIR ) --output $(BUILT_PARAMS_ADOC ) $(DOCKER_QUOTE )
409+ rm -rf $(BUILT_PARAM_ADOC_DIR )
410+ mv $@ .workdir/$(BUILT_PARAM_ADOC_DIR ) $(BUILT_PARAM_ADOC_DIR )
411+ mv $@ .workdir/$(BUILT_PARAMS_ADOC ) $(BUILT_PARAMS_ADOC )
412+ $(WORKDIR_TEARDOWN )
413+
340414# Build normative rules with HTML output format
341415$(BUILT_NORM_RULES_HTML ) : $(BUILT_TEST_NORM_TAGS_FNAMES ) $(GOOD_NORM_RULE_DEF_FILES ) $(BUILT_TEST_HTML_FNAMES )
342416 $(WORKDIR_SETUP )
0 commit comments