diff --git a/util/remaining-gnu-error.py b/util/remaining-gnu-error.py new file mode 100755 index 000000000..79f1ae790 --- /dev/null +++ b/util/remaining-gnu-error.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python3 +# This script lists the GNU failing tests by size +# Just like with util/run-gnu-test.sh, we expect the gnu sources +# to be in ../ +import urllib.request + +import urllib +import os +import glob +import json + +base = "../gnu/tests/" +urllib.request.urlretrieve( + "https://raw.githubusercontent.com/uutils/coreutils-tracking/main/gnu-full-result.json", + "result.json", +) + +tests = glob.glob(base + "/*/*.sh") +tests_pl = glob.glob(base + "/*/*.pl") +tests_xpl = glob.glob(base + "/*/*.xpl") +tests = tests + tests_pl + tests_xpl + +# sort by size +list_of_files = sorted(tests, key=lambda x: os.stat(x).st_size) + +with open("result.json", "r") as json_file: + data = json.load(json_file) + +for d in data: + for e in data[d]: + # Not all the tests are .sh files, rename them if not. + script = e.replace(".log", ".sh") + a = "%s%s/%s" % (base, d, script) + if not os.path.exists(a): + a = a.replace(".sh", ".pl") + if not os.path.exists(a): + a = a.replace(".pl", ".xpl") + + # the tests pass, we don't care anymore + if data[d][e] == "PASS": + list_of_files.remove(a) + +# Remove the factor tests and reverse the list (bigger first) +tests = list(filter(lambda k: "factor" not in k, list_of_files)) + +for f in reversed(tests): + print("%s: %s" % (f, os.stat(f).st_size)) +print("") +print("%s tests remaining" % len(tests))