diff options
Diffstat (limited to 'pylint/testutils/get_test_info.py')
-rw-r--r-- | pylint/testutils/get_test_info.py | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/pylint/testutils/get_test_info.py b/pylint/testutils/get_test_info.py new file mode 100644 index 000000000..3b63a8e55 --- /dev/null +++ b/pylint/testutils/get_test_info.py @@ -0,0 +1,45 @@ +# Licensed under the GPL: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html +# For details: https://github.com/PyCQA/pylint/blob/main/LICENSE + +from glob import glob +from os.path import basename, join, splitext + +from pylint.testutils.constants import SYS_VERS_STR + + +def _get_tests_info(input_dir, msg_dir, prefix, suffix): + """get python input examples and output messages + + We use following conventions for input files and messages: + for different inputs: + test for python >= x.y -> input = <name>_pyxy.py + test for python < x.y -> input = <name>_py_xy.py + for one input and different messages: + message for python >= x.y -> message = <name>_pyxy.txt + lower versions -> message with highest num + """ + result = [] + for fname in glob(join(input_dir, prefix + "*" + suffix)): + infile = basename(fname) + fbase = splitext(infile)[0] + # filter input files : + pyrestr = fbase.rsplit("_py", 1)[-1] # like _26 or 26 + if pyrestr.isdigit(): # '24', '25'... + if pyrestr.isdigit() and int(SYS_VERS_STR) < int(pyrestr): + continue + if pyrestr.startswith("_") and pyrestr[1:].isdigit(): + # skip test for higher python versions + if pyrestr[1:].isdigit() and int(SYS_VERS_STR) >= int(pyrestr[1:]): + continue + messages = glob(join(msg_dir, fbase + "*.txt")) + # the last one will be without ext, i.e. for all or upper versions: + if messages: + for outfile in sorted(messages, reverse=True): + py_rest = outfile.rsplit("_py", 1)[-1][:-4] + if py_rest.isdigit() and int(SYS_VERS_STR) >= int(py_rest): + break + else: + # This will provide an error message indicating the missing filename. + outfile = join(msg_dir, fbase + ".txt") + result.append((infile, outfile)) + return result |