Index: src/trusted/validator_arm/dgen_test_output.py |
=================================================================== |
--- src/trusted/validator_arm/dgen_test_output.py (revision 10678) |
+++ src/trusted/validator_arm/dgen_test_output.py (working copy) |
@@ -375,6 +375,7 @@ |
#include "native_client/src/trusted/validator_arm/baseline_classes.h" |
#include "native_client/src/trusted/validator_arm/named_class_decoder.h" |
#include "%(FILENAME_BASE)s_actuals.h" |
+ |
#include "%(FILENAME_BASE)s_named_bases.h" |
""" |
@@ -752,6 +753,7 @@ |
#include "gtest/gtest.h" |
#include "native_client/src/trusted/validator_arm/actual_vs_baseline.h" |
+#include "native_client/src/trusted/validator_arm/baseline_vs_baseline.h" |
#include "native_client/src/trusted/validator_arm/actual_classes.h" |
#include "native_client/src/trusted/validator_arm/baseline_classes.h" |
#include "native_client/src/trusted/validator_arm/inst_classes_testers.h" |
@@ -893,6 +895,17 @@ |
} |
""" |
+TEST_FUNCTION_BASELINE_VS_BASELINE=""" |
+// %(row_comment)s |
+TEST_F(%(decoder_name)sTests, |
+ BvB_%(decoder_tester)s_Test%(test_pattern)s) { |
+ %(decoder_tester)s old_baseline_tester; |
+ Named%(gen_decoder)s gen_baseline; |
+ BaselineVsBaselineTester b_vs_b_tester(gen_baseline, old_baseline_tester); |
+ b_vs_b_tester.Test("%(pattern)s"); |
+} |
+""" |
+ |
TEST_CC_FOOTER=""" |
} // namespace nacl_arm_test |
@@ -918,6 +931,9 @@ |
decoder = dgen_baselines.AddBaselinesToDecoder(decoder, tables) |
+ baselines = cl_args.get('test-base') |
+ if not baselines: baselines = [] |
+ |
decoder = _decoder_restricted_to_tables(decoder, tables) |
values = { |
@@ -929,7 +945,7 @@ |
_generate_constraint_testers(decoder, values, out) |
_generate_rule_testers(decoder, values, out) |
out.write(TEST_HARNESS % values) |
- _generate_test_patterns(decoder, values, out) |
+ _generate_test_patterns_with_baseline_tests(decoder, values, out, baselines) |
out.write(TEST_CC_FOOTER % values) |
def _filter_test_action(action, with_patterns, with_rules): |
@@ -1091,7 +1107,14 @@ |
new_decoder.set_class_defs(decoder.get_class_defs()) |
return new_decoder |
-def _generate_test_patterns(decoder, values, out): |
+def _generate_test_patterns_with_baseline_tests( |
+ decoder, values, out, baseline_test_tables): |
+ _generate_test_patterns(decoder, values, out, False) |
+ _generate_test_patterns( |
+ _decoder_restricted_to_tables(decoder, baseline_test_tables), |
+ values, out, True) |
+ |
+def _generate_test_patterns(decoder, values, out, add_baseline_tests): |
"""Generates a test function for each row having a pattern associated |
with the table row. |
""" |
@@ -1101,7 +1124,11 @@ |
_install_row_cases(r, values) |
row = _row_filter_interesting_patterns(r) |
action = _install_test_row(row, decoder, values, with_patterns=True) |
- if action.actual() == action.baseline(): |
+ if add_baseline_tests: |
+ if action.find('generated_baseline'): |
+ values['gen_decoder'] = action.find('generated_baseline') |
+ out.write(TEST_FUNCTION_BASELINE_VS_BASELINE % values) |
+ elif action.actual() == action.baseline(): |
out.write(TEST_FUNCTION_BASELINE % values) |
else: |
out.write(TEST_FUNCTION_ACTUAL_VS_BASELINE % values) |