output = output.decode()
features = []
+ disabled_features = []
for line in output.split('\n'):
tokens = [t.strip() for t in line.split(':')]
if len(tokens) == 2:
key, value = tokens
if value == 'yes':
features.append(key)
+ elif value == 'no':
+ disabled_features.append(key)
- return features
+ return features, disabled_features
def logic_supported_with_proofs(logic):
if not os.path.isfile(benchmark_path):
sys.exit('"{}" does not exist or is not a file'.format(benchmark_path))
- cvc4_features = get_cvc4_features(cvc4_binary)
+ cvc4_features, cvc4_disabled_features = get_cvc4_features(cvc4_binary)
basic_command_line_args = []
return (EXIT_SKIP if use_skip_return_code else EXIT_OK)
for req_feature in requires:
+ is_negative = False
if req_feature.startswith("no-"):
- inv_feature = req_feature[len("no-"):]
- if inv_feature in cvc4_features:
+ req_feature = req_feature[len("no-"):]
+ is_negative = True
+ if req_feature not in (cvc4_features + cvc4_disabled_features):
+ print(
+ 'Illegal requirement in regression: {}\nAllowed requirements: {}'
+ .format(req_feature,
+ ' '.join(cvc4_features + cvc4_disabled_features)))
+ return EXIT_FAILURE
+ if is_negative:
+ if req_feature in cvc4_features:
print('1..0 # Skipped regression: not valid with {}'.format(
- inv_feature))
+ req_feature))
return (EXIT_SKIP if use_skip_return_code else EXIT_OK)
elif req_feature not in cvc4_features:
print('1..0 # Skipped regression: {} not supported'.format(