# Convert stdout bytes to utf-8 stdout = "" stderr = "" try: stdout = b_stdout.decode('utf-8') stderr = b_stderr.decode('utf-8') except: pass # Comparison with answer and output here try: with open('answer', 'r') as file1, open('output', 'r') as file2: answer = str(file1.read()) output = str(file2.read()) file1.close() file2.close() # Delete output os.remove('output') # Built in tester.py function assertequals(expected, actual, info='') # If True, passes. If false, fails and gives expected != actual and and specified info. # parameters: # - expected(required): the answer that was expected # - actual(required): the output from the user's code # - info(optional): any additional info you want printed if it fails assertequals(answer, output, stdout + "\n" + stderr) except FileNotFoundError: failtest(stdout + "\n" + stderr)
# Import tester from tester import failtest, passtest, assertequals, runcmd, preparefile, runcmdsafe ############# END UNTOUCHABLE CODE ############# ##################################################### ################################### # Write your testing script below # ################################### python_bin = sys.executable # prepare necessary files preparefile('./test.py') # run test file b_stdout, b_stderr, b_exitcode = runcmdsafe(f'{python_bin} ./test.py') # convert stdout bytes to utf-8 stdout = "" stderr = "" try: stdout = b_stdout.decode('utf-8') stderr = b_stderr.decode('utf-8') except: pass if stdout.strip() == "True": passtest('') else: failtest('incorrect solution: ' + stdout + "\n\n\n" + stderr)
# Import tester from tester import failtest, passtest, assertequals, runcmd, preparefile, runcmdsafe ############# END UNTOUCHABLE CODE ############# ##################################################### ################################### # Write your testing script below # ################################### python_bin = sys.executable # prepare necessary files preparefile('./test.py') # run test file b_stdout, b_stderr, b_exitcode = runcmdsafe(f'{python_bin} ./test.py') # convert stdout bytes to utf-8 stdout = "" stderr = "" try: stdout = b_stdout.decode('utf-8') stderr = b_stderr.decode('utf-8') except: pass if stdout.strip() == "False": passtest('') else: failtest('incorrect number of solutions: ' + stdout + "\n\n\n" + stderr)
preparefile('./Cargo.toml') preparefile('./Cargo.lock') preparefile('./src') preparefile('./src/main.rs') # run test file b_stdout, b_stderr, b_exitcode = runcmdsafe(f'cargo run') # convert stdout bytes to utf-8 stdout = "" stderr = "" try: stdout = b_stdout.decode('utf-8') stderr = b_stderr.decode('utf-8') except: pass try: with open('answer', 'r') as file1, open('output', 'r') as file2: answer = file1.read() output = file2.read() file1.close() file2.close() os.remove('output') assertequals(answer, output, f'{stdout}\n{stderr}') except FileNotFoundError: failtest(f'{stdout}\n{stderr}')
#!/usr/bin/python3 ##################################################### ############# LEAVE CODE BELOW ALONE ############# # Include base directory into path import os, sys sys.path.append( os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..'))) # Import tester from tester import failtest, passtest, assertequals, runcmd, preparefile, runcmdsafe ############# END UNTOUCHABLE CODE ############# ##################################################### ################################### # Write your testing script below # ################################### python_bin = sys.executable preparefile('./test.py') preparefile('./test.while') b_stdout, b_stderr, b_exitcode = runcmdsafe(f'{python_bin} ./test.py') if b_exitcode == 0: passtest('') else: failtest(b_stdout.decode('utf-8'))
b_stdout, b_stderr, b_exitcode = runcmdsafe(f'cargo run') # convert stdout bytes to utf-8 stdout = "" stderr = "" try: stdout = b_stdout.decode('utf-8') stderr = b_stderr.decode('utf-8') except: pass try: with open('output', 'r') as file1: output = file1.read() file1.close() os.remove('output') # Compare without an answer file. # In some situations, the answer may be an approximate value, # so this way would be preferred. if 2 < int(output) < 4: passtest('') else: failtest( f'Expected a value between 2 and 4, but got {result}.\n{stdout}\n{stderr}' ) except FileNotFoundError: failtest(stdout + "\n\n" + stderr)