Skip to content

Commit fa9cb46

Browse files
vecchiot-awstedinski
authored andcommitted
Added check for cbmc-viewer version. (rust-lang#174)
1 parent 6728ed8 commit fa9cb46

File tree

2 files changed

+55
-0
lines changed

2 files changed

+55
-0
lines changed
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
#!/usr/bin/env python3
2+
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3+
# SPDX-License-Identifier: Apache-2.0 OR MIT
4+
5+
import argparse
6+
import re
7+
import sys
8+
import subprocess
9+
10+
11+
EXIT_CODE_SUCCESS = 0
12+
EXIT_CODE_MISMATCH = 1
13+
EXIT_CODE_FAIL = 2
14+
15+
16+
def cbmc_viewer_version():
17+
cmd = ["cbmc-viewer", "--version"]
18+
try:
19+
version = subprocess.run(cmd,
20+
capture_output=True, text=True, check=True)
21+
except (OSError, subprocess.SubprocessError) as error:
22+
print(error)
23+
print(f"Can't run command '{' '.join(cmd)}'")
24+
sys.exit(EXIT_CODE_FAIL)
25+
26+
match = re.match("CBMC viewer ([0-9]+).([0-9]+)", version.stdout)
27+
if not match:
28+
print(f"Can't parse CBMC-viewer version string: '{version.stdout.strip()}'")
29+
sys.exit(EXIT_CODE_FAIL)
30+
31+
return match.groups()
32+
33+
def complete_version(*version):
34+
numbers = [int(num) if num else 0 for num in version]
35+
return (numbers + [0, 0])[:2]
36+
37+
def main():
38+
parser = argparse.ArgumentParser(
39+
description='Check CBMC-viewer version matches major/minor')
40+
parser.add_argument('--major', required=True)
41+
parser.add_argument('--minor', required=True)
42+
args = parser.parse_args()
43+
44+
current_version = complete_version(*cbmc_viewer_version())
45+
desired_version = complete_version(args.major, args.minor)
46+
47+
if desired_version > current_version:
48+
version_string = '.'.join([str(num) for num in current_version])
49+
desired_version_string = '.'.join([str(num) for num in desired_version])
50+
print(f'ERROR: CBMC-viewer version is {version_string}, expected at least {desired_version_string}')
51+
sys.exit(EXIT_CODE_MISMATCH)
52+
53+
if __name__ == "__main__":
54+
main()

scripts/rmc-regression.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ EXTRA_X_PY_BUILD_ARGS="${EXTRA_X_PY_BUILD_ARGS:-}"
1616

1717
# Required dependencies
1818
check-cbmc-version.py --major 5 --minor 30
19+
check-cbmc-viewer-version.py --major 2 --minor 5
1920

2021
# Formatting check
2122
./x.py fmt --check

0 commit comments

Comments
 (0)