Skip to content

Combine get_valid_runs and get_task_names #635

Combine get_valid_runs and get_task_names

Combine get_valid_runs and get_task_names #635

GitHub Actions / Test Results failed Sep 19, 2024 in 0s

1 fail, 7 pass in 8s

8 tests  ±0   7 ✅ ±0   8s ⏱️ ±0s
1 suites ±0   0 💤 ±0 
1 files   ±0   1 ❌ ±0 

Results for commit 8ca7402. ± Comparison against earlier commit a5da22b.

Annotations

Check warning on line 0 in test_create_experiment

See this annotation in the file changed.

@github-actions github-actions / Test Results

test_create_experiment (test_create_experiment) failed

ci/scripts/tests/test-results.xml [took 1s]
Raw output
wxflow.executable.ProcessError: Command exited with status 1:
'/home/runner/work/global-workflow/global-workflow/workflow/create_experiment.py' '-y' '../../cases/pr/C48_S2SWA_gefs.yaml' '--overwrite'
def test_create_experiment():
    
        create_experiment_script = Executable(f'{HOMEgfs}/workflow/create_experiment.py')
        yaml_dir = yaml_dir = os.path.join(HOMEgfs, 'ci/cases/pr')
        env = os.environ.copy()
        env['RUNTESTS'] = RUNDIR
    
        for case in os.listdir(yaml_dir):
            if case.endswith('.yaml'):
                with open(os.path.join(yaml_dir, case), 'r') as file:
                    file_contents = file.read()
                    if 'ICSDIR_ROOT' not in file_contents:
                        create_experiment = copy.deepcopy(create_experiment_script)
                        create_experiment.add_default_arg(['-y', f'../../cases/pr/{case}', '--overwrite'])
                        env['pslot'] = os.path.splitext(case)[0]
>                       create_experiment(env=env)

test_create_experiment.py:26: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <exe: ['/home/runner/work/global-workflow/global-workflow/workflow/create_experiment.py', '-y', '../../cases/pr/C48_S2SWA_gefs.yaml', '--overwrite']>
args = ()
kwargs = {'env': {'ACCEPT_EULA': 'Y', 'ACTIONS_RUNNER_ACTION_ARCHIVE_CACHE': '/opt/actionarchivecache', 'AGENT_TOOLSDIRECTORY': '/opt/hostedtoolcache', 'ANDROID_HOME': '/usr/local/lib/android/sdk', ...}}
env_arg = {'ACCEPT_EULA': 'Y', 'ACTIONS_RUNNER_ACTION_ARCHIVE_CACHE': '/opt/actionarchivecache', 'AGENT_TOOLSDIRECTORY': '/opt/hostedtoolcache', 'ANDROID_HOME': '/usr/local/lib/android/sdk', ...}
env = {'ACCEPT_EULA': 'Y', 'ACTIONS_RUNNER_ACTION_ARCHIVE_CACHE': '/opt/actionarchivecache', 'AGENT_TOOLSDIRECTORY': '/opt/hostedtoolcache', 'ANDROID_HOME': '/usr/local/lib/android/sdk', ...}
fail_on_error = True, ignore_errors = (), output = None, error = None
input = None
streamify = <function Executable.__call__.<locals>.streamify at 0x7fd0038aee80>
istream = None, close_istream = False

    def __call__(self, *args, **kwargs):
        """
        Run this executable in a subprocess.
    
        Parameters:
        -----------
        *args (str): Command-line arguments to the executable to run
    
        Keyword Arguments:
        ------------------
        _dump_env : Dict
            Dict to be set to the environment actually
            used (envisaged for testing purposes only)
        env : Dict
            The environment with which to run the executable
        fail_on_error : bool
            Raise an exception if the subprocess returns
            an error. Default is True. The return code is available as
            ``exe.returncode``
        ignore_errors : int or List
            A list of error codes to ignore.
            If these codes are returned, this process will not raise
            an exception even if ``fail_on_error`` is set to ``True``
        input :
            Where to read stdin from
        output :
            Where to send stdout
        error :
            Where to send stderr
    
        Accepted values for input, output, and error:
    
        * python streams, e.g. open Python file objects, or ``os.devnull``
        * filenames, which will be automatically opened for writing
        * ``str``, as in the Python string type. If you set these to ``str``,
          output and error will be written to pipes and returned as a string.
          If both ``output`` and ``error`` are set to ``str``, then one string
          is returned containing output concatenated with error. Not valid
          for ``input``
        * ``str.split``, as in the ``split`` method of the Python string type.
          Behaves the same as ``str``, except that value is also written to
          ``stdout`` or ``stderr``.
    
        By default, the subprocess inherits the parent's file descriptors.
    
        """
        # Environment
        env_arg = kwargs.get("env", None)
    
        # Setup default environment
        env = os.environ.copy() if env_arg is None else {}
        env.update(self.default_env)
    
        # Apply env argument
        if env_arg:
            env.update(env_arg)
    
        if "_dump_env" in kwargs:
            kwargs["_dump_env"].clear()
            kwargs["_dump_env"].update(env)
    
        fail_on_error = kwargs.pop("fail_on_error", True)
        ignore_errors = kwargs.pop("ignore_errors", ())
    
        # If they just want to ignore one error code, make it a tuple.
        if isinstance(ignore_errors, int):
            ignore_errors = (ignore_errors,)
    
        output = kwargs.pop("output", None)
        error = kwargs.pop("error", None)
        input = kwargs.pop("input", None)
    
        if input is str:
            raise ValueError("Cannot use `str` as input stream.")
    
        def streamify(arg, mode):
            if isinstance(arg, str):
                return open(arg, mode), True
            elif arg in (str, str.split):
                return subprocess.PIPE, False
            else:
                return arg, False
    
        istream, close_istream = streamify(input, "r")
        ostream, close_ostream = streamify(output, "w")
        estream, close_estream = streamify(error, "w")
    
        cmd = self.exe + list(args)
    
        escaped_cmd = ["'%s'" % arg.replace("'", "'\"'\"'") for arg in cmd]
        cmd_line_string = " ".join(escaped_cmd)
    
        proc = None  # initialize to avoid lint warning
        try:
            proc = subprocess.Popen(cmd, stdin=istream, stderr=estream, stdout=ostream, env=env, close_fds=False)
            out, err = proc.communicate()
    
            result = None
            if output in (str, str.split) or error in (str, str.split):
                result = ""
                if output in (str, str.split):
                    outstr = str(out.decode("utf-8"))
                    result += outstr
                    if output is str.split:
                        sys.stdout.write(outstr)
                if error in (str, str.split):
                    errstr = str(err.decode("utf-8"))
                    result += errstr
                    if error is str.split:
                        sys.stderr.write(errstr)
    
            rc = self.returncode = proc.returncode
            if fail_on_error and rc != 0 and (rc not in ignore_errors):
                long_msg = cmd_line_string
                if result:
                    # If the output is not captured in the result, it will have
                    # been stored either in the specified files (e.g. if
                    # 'output' specifies a file) or written to the parent's
                    # stdout/stderr (e.g. if 'output' is not specified)
                    long_msg += "\n" + result
    
>               raise ProcessError(f"Command exited with status {proc.returncode}:", long_msg)
E               wxflow.executable.ProcessError: Command exited with status 1:
E               '/home/runner/work/global-workflow/global-workflow/workflow/create_experiment.py' '-y' '../../cases/pr/C48_S2SWA_gefs.yaml' '--overwrite'

wxflow/executable.py:230: ProcessError