summaryrefslogtreecommitdiffstatshomepage
path: root/tools/metrics.py
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2020-04-19 16:14:01 +1000
committerDamien George <damien.p.george@gmail.com>2020-04-22 14:02:14 +1000
commita4423570e2421c61886e7e28333298042bb349a2 (patch)
treedc4c4c36f9b6bdfac2dacfc41a1bc95fb86fae23 /tools/metrics.py
parent388d419ba39b061923d2568814195e8bf73330d4 (diff)
downloadmicropython-a4423570e2421c61886e7e28333298042bb349a2.tar.gz
micropython-a4423570e2421c61886e7e28333298042bb349a2.zip
tools/metrics.py: Add option to diff to error if delta above threshold.
Useful for things like CI where the size check is automated.
Diffstat (limited to 'tools/metrics.py')
-rwxr-xr-xtools/metrics.py14
1 files changed, 13 insertions, 1 deletions
diff --git a/tools/metrics.py b/tools/metrics.py
index ffc20befef..d08a7462aa 100755
--- a/tools/metrics.py
+++ b/tools/metrics.py
@@ -121,13 +121,20 @@ def read_build_log(filename):
def do_diff(args):
"""Compute the difference between firmware sizes."""
+ # Parse arguments.
+ error_threshold = None
+ if len(args) >= 2 and args[0] == "--error-threshold":
+ args.pop(0)
+ error_threshold = int(args.pop(0))
+
if len(args) != 2:
- print("usage: %s diff <out1> <out2>" % sys.argv[0])
+ print("usage: %s diff [--error-threshold <x>] <out1> <out2>" % sys.argv[0])
sys.exit(1)
data1 = read_build_log(args[0])
data2 = read_build_log(args[1])
+ max_delta = None
for key, value1 in data1.items():
value2 = data2[key]
for port in port_data.values():
@@ -156,6 +163,11 @@ def do_diff(args):
if warn:
warn = "[incl%s]" % warn
print("%11s: %+5u %+.3f%% %s%s" % (name, delta, percent, board, warn))
+ max_delta = delta if max_delta is None else max(max_delta, delta)
+
+ if error_threshold is not None and max_delta is not None:
+ if max_delta > error_threshold:
+ sys.exit(1)
def do_clean(args):