import os
import pathlib
from shutil import copy2
import subprocess
from behave import *
from functionals.fixtures import wsgi
def run_command(context):
def run_command_impl(command):
cmd = []
in_param = True
for part in command.split():
if in_param:
if part.startswith('\''):
cmd.append(part[1:])
in_param = False
else:
cmd.append(part)
else:
if part.endswith('\''):
in_param = True
cmd[-1] += ' ' + part[:-1]
else:
cmd[-1] += ' ' + part
return subprocess.run(
cmd,
capture_output=True,
text=True,
)
return run_command_impl
def before_all(context):
test_dir = pathlib.Path(__file__).resolve().parent.parent
test_dir.joinpath('cabot').unlink(missing_ok=True)
working_dir = test_dir.parent.parent
os.chdir(working_dir)
subprocess.run(['cargo', 'build', '--features', 'functional_tests'])
copy2(
working_dir.joinpath('target', 'debug', 'cabot'),
test_dir,
)
os.chdir(test_dir)
os.environ['PATH'] += os.pathsep + str(test_dir)
wsgi.setUp()
def before_scenario(context, scenario):
context.stash = {}
context.run = run_command(context)
def after_all(context):
wsgi.tearDown()
pathlib.Path('outfile.tmp').unlink(missing_ok=True)