From 60a49c5ef4afbd1ac61c389cf37680bfb42c41ae Mon Sep 17 00:00:00 2001 From: Steven Hahn Date: Wed, 18 Mar 2026 16:18:31 -0400 Subject: [PATCH] Update permissions to get tests passing on my local machine Signed-off-by: Steven Hahn --- tests/test_helpers.py | 8 +++++++- tests/translators_loggers/test_translators_loggers.py | 6 ++---- tests/wfbench/test_wfbench.py | 5 +++++ 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/tests/test_helpers.py b/tests/test_helpers.py index 3f45290c..724425f8 100644 --- a/tests/test_helpers.py +++ b/tests/test_helpers.py @@ -20,6 +20,11 @@ from wfcommons.common import Workflow +def _recursive_chmod(dirpath, permissions): + for directory, directory_name, filenames in os.walk(dirpath): + os.chmod(directory, permissions) + for filename in filenames: + os.chmod(os.path.join(directory, filename), permissions) def _create_fresh_local_dir(path: str) -> pathlib.Path: dirpath = pathlib.Path(path) @@ -89,6 +94,7 @@ def _start_docker_container(backend, mounted_dir, working_dir, bin_dir, command= volumes={mounted_dir: {'bind': mounted_dir, 'mode': 'rw'}}, working_dir=working_dir, user="wfcommons", + privileged=True, tty=True, detach=True ) @@ -165,4 +171,4 @@ def _compare_workflows(workflow_1: Workflow, workflow_2: Workflow): # sys.stderr.write(f"WORKFLOW2 OUTPUT FILE: {output_file.file_id} {output_file.size}\n") workflow2_output_bytes += output_file.size assert (workflow1_input_bytes == workflow2_input_bytes) - assert (workflow1_output_bytes == workflow2_output_bytes) \ No newline at end of file + assert (workflow1_output_bytes == workflow2_output_bytes) diff --git a/tests/translators_loggers/test_translators_loggers.py b/tests/translators_loggers/test_translators_loggers.py index b929b94e..2eccca46 100644 --- a/tests/translators_loggers/test_translators_loggers.py +++ b/tests/translators_loggers/test_translators_loggers.py @@ -17,6 +17,7 @@ import re import os +from tests.test_helpers import _recursive_chmod from tests.test_helpers import _create_fresh_local_dir from tests.test_helpers import _remove_local_dir_if_it_exists from tests.test_helpers import _start_docker_container @@ -304,10 +305,7 @@ def test_translator(self, backend) -> None: # Make the directory that holds the translation world-writable, # so that we don't have any permission shenanigans - for directory, directory_name, filenames in os.walk(dirpath): - os.chmod(directory, 0o777) - for filename in filenames: - os.chmod(os.path.join(directory, filename), 0o777) + _recursive_chmod(dirpath, 0o777) # Start the Docker container container = _start_docker_container(backend if backend != "nextflow_subworkflow" else "nextflow", str_dirpath, str_dirpath, str_dirpath + "bin/") diff --git a/tests/wfbench/test_wfbench.py b/tests/wfbench/test_wfbench.py index 07593690..ea86809f 100644 --- a/tests/wfbench/test_wfbench.py +++ b/tests/wfbench/test_wfbench.py @@ -15,6 +15,7 @@ import json import networkx +from tests.test_helpers import _recursive_chmod from tests.test_helpers import _create_fresh_local_dir from tests.test_helpers import _start_docker_container from tests.test_helpers import _shutdown_docker_container_and_remove_image @@ -158,6 +159,10 @@ def test_create_from_recipe(self) -> None: translator = BashTranslator(benchmark.workflow) translator.translate(output_folder=dirpath) + # Make the directory world-writable so that + # we don't have any permission shenanigans + _recursive_chmod(dirpath, 0o777) + # Start the Docker container sys.stderr.write("Starting Docker container...\n") container = _start_docker_container("bash", str_dirpath, str_dirpath, str_dirpath + "bin/")