Skip to content

Commit e73af3c

Browse files
Merge pull request #205 from riscv/create_params
Create params
2 parents 394d032 + 44c1223 commit e73af3c

23 files changed

+3589
-502
lines changed

Makefile

Lines changed: 66 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,23 @@ TOOLS_DIR := tools
1919
BUILD_DIR := build
2020
TESTS_DIR := tests
2121
NORM_RULE_TESTS_DIR := $(TESTS_DIR)/norm-rule
22+
PARAMS_TESTS_DIR := $(TESTS_DIR)/params
2223
TAGS_TESTS_DIR := $(TESTS_DIR)/tags
2324
TAG_CHANGES_TESTS_DIR := $(TESTS_DIR)/tag-changes
25+
ADOC2HTML_TESTS_DIR := $(TESTS_DIR)/adoc2html
2426
NORM_RULE_DEF_DIR := $(NORM_RULE_TESTS_DIR)
2527
NORM_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.
2832
TAGS_BACKEND := tags.rb
2933
CREATE_NORM_RULE_TOOL := $(TOOLS_DIR)/create_normative_rules.py
3034
CREATE_NORM_RULE_PYTHON := python3 $(CREATE_NORM_RULE_TOOL)
3135
DETECT_TAG_CHANGES_TOOL := $(TOOLS_DIR)/detect_tag_changes.py
3236
DETECT_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.
3541
DOCS = test-ch1 test-ch2
@@ -48,6 +54,8 @@ TEST_CH2_NORM_TAGS_OUTPUT_FNAME := test-ch2$(DOC_NORM_TAG_SUFFIX)
4854
NORM_RULE_JSON_OUTPUT_FNAME := test-norm-rules.json
4955
NORM_RULE_HTML_OUTPUT_FNAME := test-norm-rules.html
5056
NORM_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
5361
DUPLICATE_TEST_ADOC_INPUT_FNAME := duplicate.adoc
@@ -68,6 +76,8 @@ BUILT_DUPLICATE_NORM_TAGS_FNAME := $(BUILD_DIR)/$(DUPLICATE_NORM_TAGS_OUTPUT_FNA
6876
BUILT_NORM_RULES_JSON := $(BUILD_DIR)/$(NORM_RULE_JSON_OUTPUT_FNAME)
6977
BUILT_NORM_RULES_HTML := $(BUILD_DIR)/$(NORM_RULE_HTML_OUTPUT_FNAME)
7078
BUILT_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.
7383
BUILT_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_
7989
EXPECTED_CH2_NORM_TAGS := $(NORM_RULE_EXPECTED_DIR)/$(TEST_CH2_NORM_TAGS_OUTPUT_FNAME)
8090
EXPECTED_NORM_RULES_JSON := $(NORM_RULE_EXPECTED_DIR)/$(NORM_RULE_JSON_OUTPUT_FNAME)
8191
EXPECTED_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.
8496
GOOD_NORM_RULE_DEF_FILES := $(NORM_RULE_DEF_DIR)/test-ch1.yaml $(NORM_RULE_DEF_DIR)/test-ch2.yaml
8597
BAD_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.
88102
NORM_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
91105
GOOD_NORM_RULE_DEF_ARGS := $(foreach relative_pname,$(GOOD_NORM_RULE_DEF_FILES),-d $(relative_pname))
92106
BAD_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.
95112
NORM_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
137154
WORKDIR_SETUP = \
138155
rm -rf $@.workdir && \
139156
mkdir -p $@.workdir && \
157+
mkdir -p $@.workdir/$(BUILD_DIR) && \
140158
ln -sfn ../../converters ../../tools ../../tests $@.workdir/
141159

142160
WORKDIR_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
164182
build-test-tags: $(BUILT_TEST_NORM_TAGS_FNAMES) $(BUILT_DUPLICATE_NORM_TAGS_FNAME)
165183
build-test-norm-rules-json: $(BUILT_NORM_RULES_JSON)
166184
build-test-norm-rules-html: $(BUILT_NORM_RULES_HTML)
167185
build-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
174194
compare-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
198228
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
@@ -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
236272
update-test-tags: update-test-ch1-tags update-test-ch2-tags
@@ -251,6 +287,16 @@ update-test-norm-rules-json: $(BUILT_NORM_RULES_JSON)
251287
update-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

Comments
 (0)