This repository has been archived on 2024-10-22. You can view files and clone it, but cannot push or open issues or pull requests.
kse-02/muttest.py

42 lines
1.3 KiB
Python
Raw Normal View History

2023-12-09 19:52:07 +00:00
import argparse
import os
import re
import sys
import instrument
ROOT_DIR = os.path.dirname(__file__)
IN_SOURCE_DIR = os.path.join(ROOT_DIR, "benchmark")
IN_TEST_DIR = os.path.join(ROOT_DIR, "tests")
OUT_DIR = os.path.join(ROOT_DIR, "tests")
def run_mutpy(test_path: str, source_path: str):
2023-12-11 14:43:53 +00:00
stream = os.popen(f'mut.py --target \'{source_path}\' --unit-test \'{test_path}\' -m')
2023-12-09 19:52:07 +00:00
output = stream.read()
2023-12-11 14:43:53 +00:00
score = re.search('Mutation score \\[.*\\]: (\d+\.\d+)\%', output).group(1)
2023-12-09 19:52:07 +00:00
print(output, file=sys.stderr)
print(f"Score is: {score}")
def main():
parser = argparse.ArgumentParser(prog='muttest.py',
description='Runs MutPy over generated test suite.')
parser.add_argument('file', type=str, help="Source file to test",
nargs="*")
files = parser.parse_args().file
if len(files) == 0:
to_test = instrument.get_benchmark().keys()
else:
to_test = [os.path.splitext(os.path.basename(file))[0] for file in files]
for filename in to_test:
source_path = os.path.join(IN_SOURCE_DIR, f"{filename}.py")
test_path = os.path.join(IN_TEST_DIR, f"test_{filename}.py")
run_mutpy(test_path, source_path)
if __name__ == "__main__":
main()