aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-06-16 13:06:33 +0200
committerCharles <sircharlesaze@gmail.com>2020-06-16 13:13:11 +0200
commit2fadf31a822ab204503da0c37600e3e1d233c93a (patch)
treeae55b0424cbc4d0c8602e86aa5786bf7250b2e9f
parentb8728e933b1da49668854771340d6a308dbb245d (diff)
downloadminishell_test-2fadf31a822ab204503da0c37600e3e1d233c93a.tar.gz
minishell_test-2fadf31a822ab204503da0c37600e3e1d233c93a.tar.bz2
minishell_test-2fadf31a822ab204503da0c37600e3e1d233c93a.zip
Compatibility with python3.5, remove sandbox on keyboard interrupt
-rwxr-xr-xmain.py10
-rw-r--r--utils.py13
2 files changed, 13 insertions, 10 deletions
diff --git a/main.py b/main.py
index 97f4702..85111c0 100755
--- a/main.py
+++ b/main.py
@@ -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__":
diff --git a/utils.py b/utils.py
index fac97db..9ce5e62 100644
--- a/utils.py
+++ b/utils.py
@@ -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
-