diff --git a/Changelog.md b/Changelog.md index d746537e..2ef0a01d 100644 --- a/Changelog.md +++ b/Changelog.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented here. ## [unreleased] - Add tidyverse as a default R tester package (#512) +- haskell tester: make stack resolver a setting (#515) ## [v2.4.2] - Ensure _env_status is updated to "setup" earlier when a request to update test settings is made (#499) diff --git a/docker-compose.yml b/docker-compose.yml index 90b52b1c..351e49a6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -19,6 +19,7 @@ services: - SUPERVISOR_URL=127.0.0.1:9001 - AUTOTESTER_CONFIG=/app/.dockerfiles/docker-config.yml - STACK_ROOT=/home/docker/.autotesting/.stack + - STACK_RESOLVER=lts-16.17 depends_on: - postgres - redis diff --git a/server/autotest_server/__init__.py b/server/autotest_server/__init__.py index 217421e3..4d26d1b4 100644 --- a/server/autotest_server/__init__.py +++ b/server/autotest_server/__init__.py @@ -396,6 +396,8 @@ def update_test_settings(user, settings_id, test_settings, file_url): default_env = os.path.join(TEST_SCRIPT_DIR, DEFAULT_ENV_DIR) if not os.path.isdir(default_env): subprocess.run([sys.executable, "-m", "venv", default_env], check=True) + requirements_path = os.path.join(os.path.dirname(__file__), "../requirements.txt") + subprocess.run([f"{default_env}/bin/pip", "install", "-r", requirements_path], check=True) try: tester_settings["_env"] = tester_install.create_environment(tester_settings, env_dir, default_env) except Exception as e: diff --git a/server/autotest_server/settings.yml b/server/autotest_server/settings.yml index 0325289b..4d32c71f 100644 --- a/server/autotest_server/settings.yml +++ b/server/autotest_server/settings.yml @@ -1,6 +1,7 @@ workspace: !ENV ${WORKSPACE} redis_url: !ENV ${REDIS_URL} supervisor_url: !ENV ${SUPERVISOR_URL} +stack_resolver: !ENV ${STACK_RESOLVER} workers: - user: !ENV ${USER} queues: diff --git a/server/autotest_server/testers/haskell/haskell_tester.py b/server/autotest_server/testers/haskell/haskell_tester.py index 754e3c25..f22c0718 100644 --- a/server/autotest_server/testers/haskell/haskell_tester.py +++ b/server/autotest_server/testers/haskell/haskell_tester.py @@ -6,8 +6,9 @@ from ..tester import Tester, Test, TestError from ..specs import TestSpecs +from config import config -STACK_OPTIONS = ["--resolver=lts-16.17", "--system-ghc", "--allow-different-user"] +STACK_OPTIONS = [f"--resolver={config['stack_resolver']}", "--system-ghc", "--allow-different-user"] class HaskellTest(Test): diff --git a/server/autotest_server/testers/haskell/setup.py b/server/autotest_server/testers/haskell/setup.py index 43f8090c..77e4ab9d 100644 --- a/server/autotest_server/testers/haskell/setup.py +++ b/server/autotest_server/testers/haskell/setup.py @@ -1,13 +1,13 @@ import os import json import subprocess - +from ...config import config HASKELL_TEST_DEPS = ["tasty-discover", "tasty-quickcheck"] def create_environment(_settings, _env_dir, default_env_dir): - resolver = "lts-16.17" + resolver = config["stack_resolver"] cmd = ["stack", "build", "--resolver", resolver, "--system-ghc", *HASKELL_TEST_DEPS] subprocess.run(cmd, check=True) @@ -16,7 +16,7 @@ def create_environment(_settings, _env_dir, default_env_dir): def install(): subprocess.run(os.path.join(os.path.dirname(os.path.realpath(__file__)), "requirements.system"), check=True) - resolver = "lts-16.17" + resolver = config["stack_resolver"] cmd = ["stack", "build", "--resolver", resolver, "--system-ghc", *HASKELL_TEST_DEPS] subprocess.run(cmd, check=True) subprocess.run(