@@ -19,6 +19,7 @@ TOOLS_DIR := tools
1919BUILD_DIR := build
2020TESTS_DIR := tests
2121NORM_RULE_TESTS_DIR := $(TESTS_DIR ) /norm-rule
22+ TAGS_TESTS_DIR := $(TESTS_DIR ) /tags
2223NORM_RULE_DEF_DIR := $(NORM_RULE_TESTS_DIR )
2324NORM_RULE_EXPECTED_DIR := $(NORM_RULE_TESTS_DIR ) /expected
2425
@@ -27,27 +28,30 @@ TAGS_BACKEND := tags.rb
2728CREATE_NORM_RULE_TOOL := create_normative_rules.rb
2829
2930# Input and output file names
30- TEST_ADOC_INPUT_FNAME := test.adoc
31- NORM_TAGS_OUTPUT_FNAME := test-norm-tags.json
31+ GOOD_TEST_ADOC_INPUT_FNAME := test.adoc
32+ BAD_TEST_ADOC_INPUT_FNAME := duplicate.adoc
33+ GOOD_NORM_TAGS_OUTPUT_FNAME := test-norm-tags.json
34+ BAD_NORM_TAGS_OUTPUT_FNAME := bad-tags.json
3235NORM_RULE_JSON_OUTPUT_FNAME := test-norm-rules.json
3336NORM_RULE_XLSX_OUTPUT_FNAME := test-norm-rules.xlsx
3437
3538# Built output files
36- BUILT_NORM_TAGS := $(BUILD_DIR ) /$(NORM_TAGS_OUTPUT_FNAME )
39+ BUILT_NORM_TAGS_GOOD := $(BUILD_DIR ) /$(GOOD_NORM_TAGS_OUTPUT_FNAME )
40+ BUILT_NORM_TAGS_BAD := $(BUILD_DIR ) /$(BAD_NORM_TAGS_OUTPUT_FNAME )
3741BUILT_NORM_RULES_JSON := $(BUILD_DIR ) /$(NORM_RULE_JSON_OUTPUT_FNAME )
3842BUILT_NORM_RULES_XLSX := $(BUILD_DIR ) /$(NORM_RULE_XLSX_OUTPUT_FNAME )
3943
4044# Copies of expected output files.
4145# Use make target "update-expected" to update from build dir contents.
42- EXPECTED_NORM_TAGS := $(NORM_RULE_EXPECTED_DIR ) /$(NORM_TAGS_OUTPUT_FNAME )
46+ EXPECTED_NORM_TAGS := $(NORM_RULE_EXPECTED_DIR ) /$(GOOD_NORM_TAGS_OUTPUT_FNAME )
4347EXPECTED_NORM_RULES_JSON := $(NORM_RULE_EXPECTED_DIR ) /$(NORM_RULE_JSON_OUTPUT_FNAME )
4448EXPECTED_NORM_RULES_XLSX := $(NORM_RULE_EXPECTED_DIR ) /$(NORM_RULE_XLSX_OUTPUT_FNAME )
4549
4650# All normative rule definition input YAML files
4751NORM_RULE_DEF_FILES := $(wildcard $(NORM_RULE_DEF_DIR ) /* .yaml)
4852
4953# Add -t to each normative tag input filename and add prefix of "/" to make into absolute pathname.
50- NORM_TAG_FILE_ARGS := $(foreach relative_pname,$(BUILT_NORM_TAGS ) ,-t /$(relative_pname ) )
54+ NORM_TAG_FILE_ARGS := $(foreach relative_pname,$(BUILT_NORM_TAGS_GOOD ) ,-t /$(relative_pname ) )
5155
5256# Add -d to each normative rule definition filename
5357NORM_RULE_DEF_ARGS := $(foreach relative_pname,$(NORM_RULE_DEF_FILES ) ,-d $(relative_pname ) )
@@ -119,17 +123,17 @@ test: build-tests compare-tests
119123# Build tests
120124.PHONY : build-tests build-test-tags build-test-norm-rules-json build-test-norm-rules-xlsx
121125build-tests : build-test-tags build-test-norm-rules-json build-test-norm-rules-xlsx
122- build-test-tags : $(BUILT_NORM_TAGS )
126+ build-test-tags : $(BUILT_NORM_TAGS_GOOD ) $( BUILT_NORM_TAGS_BAD )
123127build-test-norm-rules-json : $(BUILT_NORM_RULES_JSON )
124128build-test-norm-rules-xlsx : $(BUILT_NORM_RULES_XLSX )
125129
126130# Compare tests against expected
127131.PHONY : compare-tests
128132compare-tests : compare-test-tags compare-test-norm-rules-json
129133
130- compare-test-tags : $(EXPECTED_NORM_TAGS ) $(BUILT_NORM_TAGS )
134+ compare-test-tags : $(EXPECTED_NORM_TAGS ) $(BUILT_NORM_TAGS_GOOD )
131135 @echo " CHECKING BUILT TAGS AGAINST EXPECTED TAGS"
132- diff $(EXPECTED_NORM_TAGS ) $(BUILT_NORM_TAGS ) && echo " diff PASSED" || (echo " diff FAILED" ; exit 1)
136+ diff $(EXPECTED_NORM_TAGS ) $(BUILT_NORM_TAGS_GOOD ) && echo " diff PASSED" || (echo " diff FAILED" ; exit 1)
133137
134138compare-test-norm-rules : $(EXPECTED_NORM_RULES ) $(BUILT_NORM_RULES )
135139
@@ -141,33 +145,40 @@ compare-test-norm-rules-json: $(EXPECTED_NORM_RULES_JSON) $(BUILT_NORM_RULES_JSO
141145.PHONY : update-expected
142146update-expected : update-test-tags update-test-norm-rules-json update-test-norm-rules-xlsx
143147
144- update-test-tags : $(BUILT_NORM_TAGS )
145- cp -f $(BUILT_NORM_TAGS ) $(EXPECTED_NORM_TAGS )
148+ update-test-tags : $(BUILT_NORM_TAGS_GOOD )
149+ cp -f $(BUILT_NORM_TAGS_GOOD ) $(EXPECTED_NORM_TAGS )
146150
147151update-test-norm-rules-json : $(BUILT_NORM_RULES_JSON )
148152 cp -f $(BUILT_NORM_RULES_JSON ) $(EXPECTED_NORM_RULES_JSON )
149153
150154update-test-norm-rules-xlsx : $(BUILT_NORM_RULES_XLSX )
151155 cp -f $(BUILT_NORM_RULES_XLSX ) $(EXPECTED_NORM_RULES_XLSX )
152156
153- # Build normative tags
154- $(BUILT_NORM_TAGS ) : $(NORM_RULE_TESTS_DIR ) /$(TEST_ADOC_INPUT_FNAME ) $(CONVERTERS_DIR ) /$(TAGS_BACKEND )
157+ # Build normative tags with good adoc input
158+ $(BUILT_NORM_TAGS_GOOD ) : $(NORM_RULE_TESTS_DIR ) /$(GOOD_TEST_ADOC_INPUT_FNAME ) $(CONVERTERS_DIR ) /$(TAGS_BACKEND )
155159 $(WORKDIR_SETUP )
156160 $(DOCKER_CMD ) $(DOCKER_QUOTE ) $(ASCIIDOCTOR_TAGS ) $(OPTIONS ) -a tags-match-prefix=' norm:' -a tags-output-suffix=' -norm-tags.json' $< $(DOCKER_QUOTE )
157161 $(WORKDIR_TEARDOWN )
158162
163+ # Build normative tags with bad adoc input
164+ # Asciidoctor should exit with a non-zero status and then we just "touch" the output file so it exists and make is happy.
165+ $(BUILT_NORM_TAGS_BAD ) : $(TAGS_TESTS_DIR ) /$(BAD_TEST_ADOC_INPUT_FNAME ) $(CONVERTERS_DIR ) /$(TAGS_BACKEND )
166+ $(WORKDIR_SETUP )
167+ $(DOCKER_CMD ) $(DOCKER_QUOTE ) $(ASCIIDOCTOR_TAGS ) $(OPTIONS ) -a tags-match-prefix=' bad:' -a tags-output-suffix=' -bad-tags.json' $< || touch build/bad-tags.json $(DOCKER_QUOTE )
168+ $(WORKDIR_TEARDOWN )
169+
159170# Build normative rules with JSON output format
160- $(BUILT_NORM_RULES_JSON ) : $(BUILT_NORM_TAGS ) $(NORM_RULE_DEF_FILES )
171+ $(BUILT_NORM_RULES_JSON ) : $(BUILT_NORM_TAGS_GOOD ) $(NORM_RULE_DEF_FILES )
161172 $(WORKDIR_SETUP )
162- cp -f $(BUILT_NORM_TAGS ) $@ .workdir
173+ cp -f $(BUILT_NORM_TAGS_GOOD ) $@ .workdir
163174 mkdir -p $@ .workdir/build
164175 $(DOCKER_CMD ) $(DOCKER_QUOTE ) ruby $(TOOLS_DIR ) /$(CREATE_NORM_RULE_TOOL ) $(NORM_TAG_FILE_ARGS ) $(NORM_RULE_DEF_ARGS ) $@ $(DOCKER_QUOTE )
165176 $(WORKDIR_TEARDOWN )
166177
167178# Build normative rules with XLSX output format
168- $(BUILT_NORM_RULES_XLSX ) : $(BUILT_NORM_TAGS ) $(NORM_RULE_DEF_FILES )
179+ $(BUILT_NORM_RULES_XLSX ) : $(BUILT_NORM_TAGS_GOOD ) $(NORM_RULE_DEF_FILES )
169180 $(WORKDIR_SETUP )
170- cp -f $(BUILT_NORM_TAGS ) $@ .workdir
181+ cp -f $(BUILT_NORM_TAGS_GOOD ) $@ .workdir
171182 mkdir -p $@ .workdir/build
172183 $(DOCKER_CMD ) $(DOCKER_QUOTE ) ruby $(TOOLS_DIR ) /$(CREATE_NORM_RULE_TOOL ) -x $(NORM_TAG_FILE_ARGS ) $(NORM_RULE_DEF_ARGS ) $@ $(DOCKER_QUOTE )
173184 $(WORKDIR_TEARDOWN )
0 commit comments