]> git.lizzy.rs Git - rust.git/blob - src/ci/docker/x86_64-gnu-tools/checkregression.py
Regressions ok for miri too
[rust.git] / src / ci / docker / x86_64-gnu-tools / checkregression.py
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3
4 import sys
5 import json
6
7 # Regressions for these tools does not cause failure
8 REGRESSION_OK = ["rustc-guide", "miri"]
9
10 if __name__ == '__main__':
11     os_name = sys.argv[1]
12     toolstate_file = sys.argv[2]
13     current_state = sys.argv[3]
14     verb = sys.argv[4] # 'regressed' or 'changed'
15
16     with open(toolstate_file, 'r') as f:
17         toolstate = json.load(f)
18     with open(current_state, 'r') as f:
19         current = json.load(f)
20
21     regressed = False
22     for cur in current:
23         tool = cur['tool']
24         state = cur[os_name]
25         new_state = toolstate.get(tool, '')
26         if verb == 'regressed':
27             updated = new_state < state
28         elif verb == 'changed':
29             updated = new_state != state
30         else:
31             print('Unknown verb {}'.format(updated))
32             sys.exit(2)
33         if updated:
34             print(
35                 'The state of "{}" has {} from "{}" to "{}"'
36                 .format(tool, verb, state, new_state)
37             )
38             if tool not in REGRESSION_OK:
39                 regressed = True
40
41     if regressed:
42         sys.exit(1)