Unverified Commit 759065dc authored by Marius van den Beek's avatar Marius van den Beek Committed by GitHub
Browse files

Merge pull request #14100 from mvdbeek/upload_dir_fix

[22.05] Write temporary files created within celery tasks to working directory
parents 88163ff5 1b4bbe09
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -485,7 +485,7 @@ def _has_src_to_path(upload_config, item, is_dataset=False) -> Tuple[str, str]:
    if src == "url":
        url = item.get("url")
        try:
            path = stream_url_to_file(url, file_sources=upload_config.file_sources)
            path = stream_url_to_file(url, file_sources=upload_config.file_sources, dir=upload_config.working_directory)
        except Exception as e:
            raise Exception(f"Failed to fetch url {url}. {str(e)}")

+30 −0
Original line number Diff line number Diff line
import json
import os
import tempfile
from contextlib import contextmanager
from os import environ
from shutil import rmtree
@@ -35,6 +36,30 @@ def test_simple_path_get():
        assert output


def test_simple_uri_get():
    with _execute_context() as execute_context:
        request = {
            "targets": [
                {
                    "destination": {
                        "type": "hdas",
                    },
                    "elements": [
                        {
                            "src": "url",
                            "url": "https://raw.githubusercontent.com/galaxyproject/galaxy/dev/test-data/1.bed",
                        }
                    ],
                }
            ]
        }
        execute_context.execute_request(request)
        output = _unnamed_output(execute_context)
        hda_result = output["elements"][0]
        assert hda_result["state"] == "ok"
        assert hda_result["ext"] == "bed"


def test_deferred_uri_get():
    with _execute_context() as execute_context:
        request = {
@@ -222,8 +247,13 @@ def test_hdca_failed_expansion():
def _execute_context():
    job_directory = mkdtemp()
    try:
        # temporarily set tempdir to non-existing location
        # to make sure all intermediate files are created in the working
        # directory
        tempfile.tempdir = "/abcdefgh123456"
        yield ExecuteContext(job_directory)
    finally:
        tempfile.tempdir = None
        rmtree(job_directory)