| 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)
|
|
|