Added time measurement option
This commit is contained in:
parent
4bee3f28df
commit
afc31abe30
29
ucompile
29
ucompile
@ -15,7 +15,7 @@ def check_dependencies() -> None:
|
||||
print(f"{Fore.RED}Error: {command} not found{Style.RESET_ALL}")
|
||||
return
|
||||
|
||||
def run_input_cases(program, verbose, output=False, tests_dir="."):
|
||||
def run_input_cases(program, verbose, output=False, tests_dir=".", time=False):
|
||||
input_files = glob(os.path.join(tests_dir, "*.in"))
|
||||
|
||||
if len(input_files) < 1:
|
||||
@ -34,6 +34,8 @@ def run_input_cases(program, verbose, output=False, tests_dir="."):
|
||||
with open(out_file, 'r') as f:
|
||||
expected_output = f.read()
|
||||
|
||||
if time:
|
||||
end_command = f"time {end_command}"
|
||||
result = subprocess.run(end_command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
|
||||
program_output = result.stdout
|
||||
|
||||
@ -74,29 +76,29 @@ def run_input_cases(program, verbose, output=False, tests_dir="."):
|
||||
print("-----------")
|
||||
return
|
||||
|
||||
def python_compile(file_name, verbose=False, tests_dir="."):
|
||||
run_input_cases("python3 " + file_name, verbose, tests_dir=tests_dir)
|
||||
def python_compile(file_name, verbose=False, tests_dir=".", time=False):
|
||||
run_input_cases("python3 " + file_name, verbose, tests_dir=tests_dir, time=time)
|
||||
return
|
||||
|
||||
def java_compile(file_name, maven=False, verbose=False, tests_dir="."):
|
||||
def java_compile(file_name, maven=False, verbose=False, tests_dir=".", time=False):
|
||||
if maven:
|
||||
os.system("mvn clean verify")
|
||||
os.system("java -jar target/*.jar")
|
||||
return
|
||||
os.system("javac " + file_name)
|
||||
run_input_cases("java " + file_name[:file_name.rfind(".")], verbose, tests_dir=tests_dir)
|
||||
run_input_cases("java " + file_name[:file_name.rfind(".")], verbose, tests_dir=tests_dir, time=time)
|
||||
return
|
||||
|
||||
def haskell_compile(file_name, verbose=False, tests_dir="."):
|
||||
def haskell_compile(file_name, verbose=False, tests_dir=".", time=False):
|
||||
os.system("ghc -O2 " + file_name + " -o program")
|
||||
run_input_cases("./program", verbose, tests_dir=tests_dir)
|
||||
run_input_cases("./program", verbose, tests_dir=tests_dir, time=time)
|
||||
return
|
||||
|
||||
def c_compile(file_name, verbose=False, output=False, tests_dir="."):
|
||||
def c_compile(file_name, verbose=False, output=False, tests_dir=".", time=False):
|
||||
# Style the code in Meijster's way
|
||||
os.system("astyle -A2s2cxgk3W3xbj " + file_name)
|
||||
os.system("gcc -Wall -pedantic --std=c99 -g -o program -lm -Wno-unused-result " + file_name)
|
||||
run_input_cases("./program", verbose, output, tests_dir=tests_dir)
|
||||
run_input_cases("./program", verbose, output, tests_dir=tests_dir, time=time)
|
||||
return
|
||||
|
||||
def main():
|
||||
@ -110,6 +112,7 @@ def main():
|
||||
parser.add_argument("-a", "--alternative", action="store_true", default=False, help="Uses alternative compiler to compile")
|
||||
parser.add_argument("-o", "--output", action="store_true", default=False, help="Checks diff for each .in file with .out file")
|
||||
parser.add_argument("-t", "--tests", metavar="<path>", type=str, help="Directory to run tests")
|
||||
parser.add_argument("-T", "--time", action="store_true", default=False, help="Prints time taken to run each test case")
|
||||
|
||||
args = parser.parse_args()
|
||||
file_name = args.filename
|
||||
@ -122,13 +125,13 @@ def main():
|
||||
tests_dir = args.tests if args.tests else "."
|
||||
|
||||
if file_ext == ".c":
|
||||
c_compile(file_name, args.verbose, args.output, tests_dir=tests_dir)
|
||||
c_compile(file_name, args.verbose, args.output, tests_dir=tests_dir, time=args.time)
|
||||
elif file_ext == ".py":
|
||||
python_compile(file_name, args.verbose, tests_dir=tests_dir)
|
||||
python_compile(file_name, args.verbose, tests_dir=tests_dir, time=args.time)
|
||||
elif file_ext == ".java":
|
||||
java_compile(file_name, args.alternative, args.verbose, tests_dir=tests_dir)
|
||||
java_compile(file_name, args.alternative, args.verbose, tests_dir=tests_dir, time=args.time)
|
||||
elif file_ext == ".hs":
|
||||
haskell_compile(file_name, args.verbose, tests_dir=tests_dir)
|
||||
haskell_compile(file_name, args.verbose, tests_dir=tests_dir, time=args.time)
|
||||
return
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
Loading…
x
Reference in New Issue
Block a user