@@ -19,17 +19,23 @@ TOOLS_DIR := tools
1919BUILD_DIR := build
2020TESTS_DIR := tests
2121NORM_RULE_TESTS_DIR := $(TESTS_DIR ) /norm-rule
22+ PARAMS_TESTS_DIR := $(TESTS_DIR ) /params
2223TAGS_TESTS_DIR := $(TESTS_DIR ) /tags
2324TAG_CHANGES_TESTS_DIR := $(TESTS_DIR ) /tag-changes
25+ ADOC2HTML_TESTS_DIR := $(TESTS_DIR ) /adoc2html
2426NORM_RULE_DEF_DIR := $(NORM_RULE_TESTS_DIR )
2527NORM_RULE_EXPECTED_DIR := $(NORM_RULE_TESTS_DIR ) /expected
28+ PARAMS_DEF_DIR := $(PARAMS_TESTS_DIR )
29+ PARAMS_EXPECTED_DIR := $(PARAMS_TESTS_DIR ) /expected
2630
27- # Ruby scripts being tested.
31+ # Scripts being tested.
2832TAGS_BACKEND := tags.rb
2933CREATE_NORM_RULE_TOOL := $(TOOLS_DIR ) /create_normative_rules.py
3034CREATE_NORM_RULE_PYTHON := python3 $(CREATE_NORM_RULE_TOOL )
3135DETECT_TAG_CHANGES_TOOL := $(TOOLS_DIR ) /detect_tag_changes.py
3236DETECT_TAG_CHANGES_PYTHON := python3 $(DETECT_TAG_CHANGES_TOOL )
37+ CREATE_PARAMS_TOOL := $(TOOLS_DIR ) /create_params.py
38+ CREATE_PARAMS_PYTHON := python3 $(CREATE_PARAMS_TOOL )
3339
3440# Stuff for building test standards document in HTML to have links into it.
3541DOCS = test-ch1 test-ch2
@@ -48,6 +54,8 @@ TEST_CH2_NORM_TAGS_OUTPUT_FNAME := test-ch2$(DOC_NORM_TAG_SUFFIX)
4854NORM_RULE_JSON_OUTPUT_FNAME := test-norm-rules.json
4955NORM_RULE_HTML_OUTPUT_FNAME := test-norm-rules.html
5056NORM_RULE_TAGS_NO_RULES_OUTPUT_FNAME := test-norm-rules_tags_no_rules.json
57+ PARAMS_JSON_OUTPUT_FNAME := test-params.json
58+ PARAMS_HTML_OUTPUT_FNAME := test-params.html
5159
5260# Tag extraction test files
5361DUPLICATE_TEST_ADOC_INPUT_FNAME := duplicate.adoc
@@ -68,6 +76,8 @@ BUILT_DUPLICATE_NORM_TAGS_FNAME := $(BUILD_DIR)/$(DUPLICATE_NORM_TAGS_OUTPUT_FNA
6876BUILT_NORM_RULES_JSON := $(BUILD_DIR ) /$(NORM_RULE_JSON_OUTPUT_FNAME )
6977BUILT_NORM_RULES_HTML := $(BUILD_DIR ) /$(NORM_RULE_HTML_OUTPUT_FNAME )
7078BUILT_NORM_RULES_TAGS_NO_RULES := $(BUILD_DIR ) /$(NORM_RULE_TAGS_NO_RULES_OUTPUT_FNAME )
79+ BUILT_PARAMS_JSON := $(BUILD_DIR ) /$(PARAMS_JSON_OUTPUT_FNAME )
80+ BUILT_PARAMS_HTML := $(BUILD_DIR ) /$(PARAMS_HTML_OUTPUT_FNAME )
7181
7282# Combine separate fnames into lists.
7383BUILT_TEST_HTML_FNAMES := $(BUILT_TEST_CH1_HTML_FNAME ) $(BUILT_TEST_CH2_HTML_FNAME )
@@ -79,10 +89,14 @@ EXPECTED_CH1_NORM_TAGS := $(NORM_RULE_EXPECTED_DIR)/$(TEST_CH1_NORM_TAGS_OUTPUT_
7989EXPECTED_CH2_NORM_TAGS := $(NORM_RULE_EXPECTED_DIR ) /$(TEST_CH2_NORM_TAGS_OUTPUT_FNAME )
8090EXPECTED_NORM_RULES_JSON := $(NORM_RULE_EXPECTED_DIR ) /$(NORM_RULE_JSON_OUTPUT_FNAME )
8191EXPECTED_NORM_RULES_HTML := $(NORM_RULE_EXPECTED_DIR ) /$(NORM_RULE_HTML_OUTPUT_FNAME )
92+ EXPECTED_PARAMS_JSON := $(PARAMS_EXPECTED_DIR ) /$(PARAMS_JSON_OUTPUT_FNAME )
93+ EXPECTED_PARAMS_HTML := $(PARAMS_EXPECTED_DIR ) /$(PARAMS_HTML_OUTPUT_FNAME )
8294
8395# Normative rule definition input YAML files.
8496GOOD_NORM_RULE_DEF_FILES := $(NORM_RULE_DEF_DIR ) /test-ch1.yaml $(NORM_RULE_DEF_DIR ) /test-ch2.yaml
8597BAD_NORM_RULE_DEF_FILES := $(NORM_RULE_DEF_DIR ) /missing_tag_refs.yaml
98+ PARAM_DEF_TEST_FILES := $(PARAMS_TESTS_DIR ) /test-ch1.yaml $(PARAMS_TESTS_DIR ) /test-ch2.yaml
99+ ADOC2HTML_TEST_SCRIPT := $(ADOC2HTML_TESTS_DIR ) /test_adoc_to_html.py
86100
87101# Add -t to each normative tag input filename and add prefix of "/" to make into absolute pathname.
88102NORM_TAG_FILE_ARGS := $(foreach relative_pname,$(BUILT_TEST_NORM_TAGS_FNAMES ) ,-t /$(relative_pname ) )
@@ -91,6 +105,9 @@ NORM_TAG_FILE_ARGS := $(foreach relative_pname,$(BUILT_TEST_NORM_TAGS_FNAMES),-t
91105GOOD_NORM_RULE_DEF_ARGS := $(foreach relative_pname,$(GOOD_NORM_RULE_DEF_FILES ) ,-d $(relative_pname ) )
92106BAD_NORM_RULE_DEF_ARGS := $(foreach relative_pname,$(BAD_NORM_RULE_DEF_FILES ) ,-d $(relative_pname ) )
93107
108+ # Add --param-def to each parameter definition filename
109+ PARAM_DEF_TEST_ARGS := $(foreach relative_pname,$(PARAM_DEF_TEST_FILES ) ,--param-def $(relative_pname ) )
110+
94111# Provide mapping from a stds doc norm tags JSON file to a URL that one can link to. Used to create links into stds doc.
95112NORM_RULE_DOC2URL_ARGS := $(foreach doc_name,$(DOCS ) ,-tag2url /$(BUILD_DIR ) /$(doc_name )$(DOC_NORM_TAG_SUFFIX ) $(doc_name ) .html)
96113
@@ -137,6 +154,7 @@ endif
137154WORKDIR_SETUP = \
138155 rm -rf $@ .workdir && \
139156 mkdir -p $@ .workdir && \
157+ mkdir -p $@ .workdir/$(BUILD_DIR ) && \
140158 ln -sfn ../../converters ../../tools ../../tests $@ .workdir/
141159
142160WORKDIR_TEARDOWN = \
@@ -156,19 +174,21 @@ all: test
156174
157175# Build tests and compare against expected
158176.PHONY : test
159- test : build-tests compare-tests test-tag-changes
177+ test : build-tests compare-tests test-tag-changes test-adoc2html
160178
161179# Build tests
162- .PHONY : build-tests build-test-tags build-test-norm-rules-json build-test-norm-rules-html build-test-tags-without-rules
163- build-tests : build-test-tags build-test-norm-rules-json build-test-norm-rules-html build-test-tags-without-rules
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
164182build-test-tags : $(BUILT_TEST_NORM_TAGS_FNAMES ) $(BUILT_DUPLICATE_NORM_TAGS_FNAME )
165183build-test-norm-rules-json : $(BUILT_NORM_RULES_JSON )
166184build-test-norm-rules-html : $(BUILT_NORM_RULES_HTML )
167185build-test-tags-without-rules : $(BUILT_NORM_RULES_TAGS_NO_RULES )
186+ build-test-params-json : $(BUILT_PARAMS_JSON )
187+ build-test-params-html : $(BUILT_PARAMS_HTML )
168188
169189# Compare tests against expected
170190.PHONY : compare-tests
171- compare-tests : compare-test-tags compare-test-norm-rules-json compare-test-norm-rules-html
191+ compare-tests : compare-test-tags compare-test-norm-rules-json compare-test-norm-rules-html compare-test-params-json compare-test-params-html
172192
173193.PHONY : compare-test-tags
174194compare-test-tags : compare-test-ch1-tags compare-test-ch2-tags
@@ -193,6 +213,16 @@ compare-test-norm-rules-html: $(EXPECTED_NORM_RULES_HTML) $(BUILT_NORM_RULES_HTM
193213 @echo " CHECKING HTML BUILT NORM RULES AGAINST EXPECTED NORM RULES"
194214 diff $(EXPECTED_NORM_RULES_HTML ) $(BUILT_NORM_RULES_HTML ) && echo " diff PASSED" || (echo " diff FAILED" ; exit 1)
195215
216+ .PHONY : compare-test-params-json
217+ compare-test-params-json : $(EXPECTED_PARAMS_JSON ) $(BUILT_PARAMS_JSON )
218+ @echo " CHECKING JSON BUILT PARAMS AGAINST EXPECTED PARAMS"
219+ diff $(EXPECTED_PARAMS_JSON ) $(BUILT_PARAMS_JSON ) && echo " diff PASSED" || (echo " diff FAILED" ; exit 1)
220+
221+ .PHONY : compare-test-params-html
222+ compare-test-params-html : $(EXPECTED_PARAMS_HTML ) $(BUILT_PARAMS_HTML )
223+ @echo " CHECKING HTML BUILT PARAMS AGAINST EXPECTED PARAMS"
224+ diff $(EXPECTED_PARAMS_HTML ) $(BUILT_PARAMS_HTML ) && echo " diff PASSED" || (echo " diff FAILED" ; exit 1)
225+
196226# Test tag change detection
197227.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
198228test-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
@@ -228,9 +258,15 @@ test-tag-changes-update: $(TAG_CHANGES_TEST_REFERENCE_PATH)
228258 @python3 -c ' import json; data = json.load(open("$(BUILD_DIR)/test-reference.json")); exit(0 if "norm:added-only-tag" in data["tags"] else 1)' || (echo " test-tag-changes-update FAILED (tag not added)" ; exit 1)
229259 @$(DETECT_TAG_CHANGES_PYTHON ) $(BUILD_DIR ) /test-reference.json $(TAG_CHANGES_TESTS_DIR ) /additions-only.json > /dev/null 2>&1 && echo " test-tag-changes-update PASSED" || (echo " test-tag-changes-update FAILED (differences detected after update)" ; exit 1)
230260
261+ # Test Adoc2HTML converter behavior in isolation.
262+ .PHONY : test-adoc2html
263+ test-adoc2html : $(ADOC2HTML_TEST_SCRIPT ) $(TOOLS_DIR ) /adoc_to_html.py
264+ @echo " TESTING ADOC2HTML CONVERSION"
265+ python3 $(ADOC2HTML_TEST_SCRIPT ) && echo " test-adoc2html PASSED" || (echo " test-adoc2html FAILED" ; exit 1)
266+
231267# Update expected files from built files
232268.PHONY : update-expected
233- update-expected : update-test-tags update-test-norm-rules-json update-test-norm-rules-html
269+ update-expected : update-test-tags update-test-norm-rules-json update-test-norm-rules-html update-test-params-json update-test-params-html
234270
235271.PHONY : update-test-tags
236272update-test-tags : update-test-ch1-tags update-test-ch2-tags
@@ -251,6 +287,16 @@ update-test-norm-rules-json: $(BUILT_NORM_RULES_JSON)
251287update-test-norm-rules-html : $(BUILT_NORM_RULES_HTML )
252288 cp -f $(BUILT_NORM_RULES_HTML ) $(EXPECTED_NORM_RULES_HTML )
253289
290+ .PHONY : update-test-params-json
291+ update-test-params-json : $(BUILT_PARAMS_JSON )
292+ mkdir -p $(PARAMS_EXPECTED_DIR )
293+ cp -f $(BUILT_PARAMS_JSON ) $(EXPECTED_PARAMS_JSON )
294+
295+ .PHONY : update-test-params-html
296+ update-test-params-html : $(BUILT_PARAMS_HTML )
297+ mkdir -p $(PARAMS_EXPECTED_DIR )
298+ cp -f $(BUILT_PARAMS_HTML ) $(EXPECTED_PARAMS_HTML )
299+
254300# Build normative tags with ch1 adoc input
255301$(BUILT_TEST_CH1_NORM_TAGS_FNAME ) : $(NORM_RULE_TESTS_DIR ) /$(TEST_CH1_INPUT_ADOC_FNAME ) $(CONVERTERS_DIR ) /$(TAGS_BACKEND )
256302 $(WORKDIR_SETUP )
@@ -274,29 +320,39 @@ $(BUILT_DUPLICATE_NORM_TAGS_FNAME): $(TAGS_TESTS_DIR)/$(DUPLICATE_TEST_ADOC_INPU
274320$(BUILT_NORM_RULES_JSON ) : $(BUILT_TEST_NORM_TAGS_FNAMES ) $(GOOD_NORM_RULE_DEF_FILES )
275321 $(WORKDIR_SETUP )
276322 cp -f $(BUILT_TEST_NORM_TAGS_FNAMES ) $@ .workdir
277- mkdir -p $@ .workdir/build
278323 $(DOCKER_CMD ) $(DOCKER_QUOTE ) $(CREATE_NORM_RULE_TOOL ) -j $(NORM_TAG_FILE_ARGS ) $(GOOD_NORM_RULE_DEF_ARGS ) $(NORM_RULE_DOC2URL_ARGS ) $@ $(DOCKER_QUOTE )
279324 $(WORKDIR_TEARDOWN )
280325
326+ # Build params JSON output from generated normative rules JSON and parameter definitions.
327+ $(BUILT_PARAMS_JSON ) : $(BUILT_NORM_RULES_JSON ) $(PARAM_DEF_TEST_FILES ) $(CREATE_PARAMS_TOOL )
328+ $(WORKDIR_SETUP )
329+ cp -f $(BUILT_NORM_RULES_JSON ) $@ .workdir/$(BUILD_DIR )
330+ $(DOCKER_CMD ) $(DOCKER_QUOTE ) $(CREATE_PARAMS_PYTHON ) --norm-rules $(BUILT_NORM_RULES_JSON ) $(PARAM_DEF_TEST_ARGS ) --output $(BUILT_PARAMS_JSON ) $(DOCKER_QUOTE )
331+ $(WORKDIR_TEARDOWN )
332+
333+ # Build params HTML output from generated normative rules JSON and parameter definitions.
334+ $(BUILT_PARAMS_HTML ) : $(BUILT_NORM_RULES_JSON ) $(PARAM_DEF_TEST_FILES ) $(CREATE_PARAMS_TOOL )
335+ $(WORKDIR_SETUP )
336+ cp -f $(BUILT_NORM_RULES_JSON ) $@ .workdir/$(BUILD_DIR )
337+ $(DOCKER_CMD ) $(DOCKER_QUOTE ) $(CREATE_PARAMS_PYTHON ) --html --norm-rules $(BUILT_NORM_RULES_JSON ) $(PARAM_DEF_TEST_ARGS ) --output $(BUILT_PARAMS_HTML ) $(DOCKER_QUOTE )
338+ $(WORKDIR_TEARDOWN )
339+
281340# Build normative rules with HTML output format
282341$(BUILT_NORM_RULES_HTML ) : $(BUILT_TEST_NORM_TAGS_FNAMES ) $(GOOD_NORM_RULE_DEF_FILES ) $(BUILT_TEST_HTML_FNAMES )
283342 $(WORKDIR_SETUP )
284343 cp -f $(BUILT_TEST_NORM_TAGS_FNAMES ) $@ .workdir
285- mkdir -p $@ .workdir/build
286344 $(DOCKER_CMD ) $(DOCKER_QUOTE ) $(CREATE_NORM_RULE_TOOL ) --html $(NORM_TAG_FILE_ARGS ) $(GOOD_NORM_RULE_DEF_ARGS ) $(NORM_RULE_DOC2URL_ARGS ) $@ $(DOCKER_QUOTE )
287345 $(WORKDIR_TEARDOWN )
288346
289347# This is the HTML file that represents the standards doc. THe norm rule HTML links into this HTML.
290348$(BUILT_TEST_CH1_HTML_FNAME ) : $(NORM_RULE_TESTS_DIR ) /$(TEST_CH1_INPUT_ADOC_FNAME )
291349 $(WORKDIR_SETUP )
292- mkdir -p $@ .workdir/build
293350 $(DOCKER_CMD ) $(DOCKER_QUOTE ) $(ASCIIDOCTOR_HTML ) -o $@ $< $(DOCKER_QUOTE )
294351 $(WORKDIR_TEARDOWN )
295352
296353# This is the HTML file that represents the standards doc. THe norm rule HTML links into this HTML.
297354$(BUILT_TEST_CH2_HTML_FNAME ) : $(NORM_RULE_TESTS_DIR ) /$(TEST_CH2_INPUT_ADOC_FNAME )
298355 $(WORKDIR_SETUP )
299- mkdir -p $@ .workdir/build
300356 $(DOCKER_CMD ) $(DOCKER_QUOTE ) $(ASCIIDOCTOR_HTML ) -o $@ $< $(DOCKER_QUOTE )
301357 $(WORKDIR_TEARDOWN )
302358
@@ -305,7 +361,6 @@ $(BUILT_TEST_CH2_HTML_FNAME) : $(NORM_RULE_TESTS_DIR)/$(TEST_CH2_INPUT_ADOC_FNAM
305361$(BUILT_NORM_RULES_TAGS_NO_RULES ) : $(BUILT_TEST_CH1_NORM_TAGS_FNAME ) $(BAD_NORM_RULE_DEF_FILES )
306362 $(WORKDIR_SETUP )
307363 cp -f $(BUILT_TEST_CH1_NORM_TAGS_FNAME ) $@ .workdir
308- mkdir -p $@ .workdir/build
309364 $(DOCKER_CMD ) $(DOCKER_QUOTE ) $(CREATE_NORM_RULE_TOOL ) $(NORM_TAG_FILE_ARGS ) $(BAD_NORM_RULE_DEF_ARGS ) $(NORM_RULE_DOC2URL_ARGS ) $(BUILD_DIR ) /bogus || touch $(BUILT_NORM_RULES_TAGS_NO_RULES ) $(DOCKER_QUOTE )
310365 $(WORKDIR_TEARDOWN )
311366
0 commit comments