diff options
| author | Charles <sircharlesaze@gmail.com> | 2020-06-16 13:06:33 +0200 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2020-06-16 13:13:11 +0200 |
| commit | 2fadf31a822ab204503da0c37600e3e1d233c93a (patch) | |
| tree | ae55b0424cbc4d0c8602e86aa5786bf7250b2e9f | |
| parent | b8728e933b1da49668854771340d6a308dbb245d (diff) | |
| download | minishell_test-2fadf31a822ab204503da0c37600e3e1d233c93a.tar.gz minishell_test-2fadf31a822ab204503da0c37600e3e1d233c93a.tar.bz2 minishell_test-2fadf31a822ab204503da0c37600e3e1d233c93a.zip | |
Compatibility with python3.5, remove sandbox on keyboard interrupt
| -rwxr-xr-x | main.py | 10 | ||||
| -rw-r--r-- | utils.py | 13 |
2 files changed, 13 insertions, 10 deletions
@@ -2,15 +2,19 @@ import sys import argparse +import shutil import utils import config import suites def main(): - suites.suite_quote() - suites.suite_echo() - suites.suite_redirection() + try: + suites.suite_quote() + suites.suite_echo() + suites.suite_redirection() + except KeyboardInterrupt: + shutil.rmtree(config.SANDBOX_PATH) if __name__ == "__main__": @@ -77,25 +77,25 @@ def run_sandboxed(program: str, cmd: str, setup: str = None, files: [str] = []) pass if setup is not None: try: - setup_status = subprocess.run(setup, shell=True, cwd=config.SANDBOX_PATH, check=True, text=True, capture_output=True) + setup_status = subprocess.run(setup, shell=True, cwd=config.SANDBOX_PATH, check=True) except subprocess.CalledProcessError as e: - print("Error: `{}` setup command failed for `{}`\n\twith '{}'".format(setup, cmd, e.stderr.strip())) + print("Error: `{}` setup command failed for `{}`\n\twith '{}'" + .format(setup, cmd, e.stderr.decode().strip())) sys.exit(1) # TODO: add timeout # https://docs.python.org/3/library/subprocess.html#using-the-subprocess-module process_status = subprocess.run([program, "-c", cmd], - text=True, stderr=subprocess.STDOUT, stdout=subprocess.PIPE, cwd=config.SANDBOX_PATH) - output = process_status.stdout + output = process_status.stdout.decode() output_files = [] for file_name in files: try: - with open(os.path.join(config.SANDBOX_PATH, file_name), "r") as f: - output_files.append(f.read()) + with open(os.path.join(config.SANDBOX_PATH, file_name), "rb") as f: + output_files.append(f.read().decode()) except FileNotFoundError as e: output_files.append(None) @@ -148,4 +148,3 @@ def suite(origin): origin() print() return f - |
