From d9d3b47c31c1e9348ced035b79747b84ac1d267e Mon Sep 17 00:00:00 2001 From: Renato Alves Date: Thu, 31 Jul 2014 17:03:49 +0100 Subject: [PATCH] Unittest - default to ../src/ as location for task/taskd binaries --- test/basetest/task.py | 6 ++++-- test/basetest/taskd.py | 11 ++++++----- test/basetest/utils.py | 20 ++++++++++++++++++++ 3 files changed, 30 insertions(+), 7 deletions(-) diff --git a/test/basetest/task.py b/test/basetest/task.py index 6cf9a92e4..e9c1953df 100644 --- a/test/basetest/task.py +++ b/test/basetest/task.py @@ -5,7 +5,7 @@ import tempfile import shutil import atexit import unittest -from .utils import run_cmd_wait, run_cmd_wait_nofail, which +from .utils import run_cmd_wait, run_cmd_wait_nofail, which, binary_location from .exceptions import CommandError @@ -20,7 +20,9 @@ class Task(object): A taskw client should not be used after being destroyed. """ - def __init__(self, taskd=None, taskw="task"): + DEFAULT_TASK = binary_location("task") + + def __init__(self, taskd=None, taskw=DEFAULT_TASK): """Initialize a Task warrior (client) that can interact with a taskd server. The task client runs in a temporary folder. diff --git a/test/basetest/taskd.py b/test/basetest/taskd.py index 3354c1f81..3ce07e354 100644 --- a/test/basetest/taskd.py +++ b/test/basetest/taskd.py @@ -8,7 +8,7 @@ import atexit from time import sleep from subprocess import Popen from .utils import (find_unused_port, release_port, port_used, run_cmd_wait, - which, parse_datafile) + which, parse_datafile, CURRENT_DIR, binary_location) from .exceptions import CommandError try: @@ -16,9 +16,10 @@ try: except ImportError: DEVNULL = open(os.devnull, 'w') -# Location relative to current script location -_curdir = os.path.dirname(os.path.abspath(__file__)) -DEFAULT_CERT_PATH = os.path.abspath(os.path.join(_curdir, "..", "test_certs")) +# Directory relative to basetest module location +DEFAULT_CERT_PATH = os.path.abspath( + os.path.join(CURRENT_DIR, "..", "test_certs") +) class Taskd(object): @@ -34,7 +35,7 @@ class Taskd(object): A server can be stopped and started multiple times, but should not be started or stopped after being destroyed. """ - DEFAULT_TASKD = "taskd" + DEFAULT_TASKD = binary_location("taskd") def __init__(self, taskd=DEFAULT_TASKD, certpath=None, address="127.0.0.1"): diff --git a/test/basetest/utils.py b/test/basetest/utils.py index 5936e100f..7f1f1bf91 100644 --- a/test/basetest/utils.py +++ b/test/basetest/utils.py @@ -18,9 +18,29 @@ from .exceptions import CommandError USED_PORTS = set() ON_POSIX = 'posix' in sys.builtin_module_names +# Directory relative to basetest module location +CURRENT_DIR = os.path.dirname(os.path.abspath(__file__)) + +# Location of binary files (usually the src/ folder) +BIN_PREFIX = os.path.abspath( + os.path.join(CURRENT_DIR, "..", "..", "src") +) + # Environment flags to control skipping of task and taskd tests TASKW_SKIP = os.environ.get("TASKW_SKIP", False) TASKD_SKIP = os.environ.get("TASKD_SKIP", False) +# Environment flags to control use of PATH or in-tree binaries +USE_PATH = os.environ.get("USE_PATH", False) + + +def binary_location(cmd): + """If USE_PATH is set rely on PATH to look for task/taskd binaries. + Otherwise ../src/ is used by default. + """ + if USE_PATH: + return cmd + else: + return os.path.join(BIN_PREFIX, cmd) def wait_process(proc, timeout=1):