def check_run_main(dirname):
        from os.path import abspath as real_abspath

        def mock_abspath(path):
            if path == ".":
                return dirname
            else:
                return real_abspath(path)

        monkeypatch.setattr('os.path.abspath', mock_abspath)

        project_dir_disable_dedicated_env(dirname)
        # double hyphen lets us specify "--foo" as a command name
        result = _parse_args_and_run_subcommand(['anaconda-project', 'run', '--directory', dirname, '--', '--foo',
                                                 '--bar'])

        assert 1 == result
        assert 'file' in executed
        assert 'args' in executed
        assert 'env' in executed
        assert executed['file'].endswith(python_exe)
        assert executed['args'][0].endswith(python_exe)
        assert len(executed['args']) == 3
        assert '--version' == executed['args'][1]
        assert '--bar' == executed['args'][2]
    def check(dirname):
        project_dir_disable_dedicated_env(dirname)

        def mock_is_interactive():
            return True

        monkeypatch.setattr(
            'anaconda_project.internal.cli.console_utils.stdin_is_interactive',
            mock_is_interactive)

        def mock_console_input(prompt, encrypted):
            raise Exception("should not have been called")

        monkeypatch.setattr(
            'anaconda_project.internal.cli.console_utils.console_input',
            mock_console_input)

        res = _parse_args_and_run_subcommand(
            ['anaconda-project', 'prepare', '--directory', dirname])
        assert res == 0

        out, err = capsys.readouterr()

        assert """Potential issues with this project:
  * anaconda-project.yml: Unknown field name 'weird_field'

The project is ready to run commands.
Use `anaconda-project list-commands` to see what's available.
""" == out
        assert '' == err
Example #3
0
 def check(dirname):
     project_dir_disable_dedicated_env(dirname)
     code = _parse_args_and_run_subcommand([
         'anaconda-project', 'activate', '--directory', dirname,
         '--command', 'nope'
     ])
     assert code == 1
    def check(dirname):
        project_dir_disable_dedicated_env(dirname)

        def mock_is_interactive():
            return True

        monkeypatch.setattr(
            'anaconda_project.internal.cli.console_utils.stdin_is_interactive',
            mock_is_interactive)

        def mock_console_input(prompt, encrypted):
            raise Exception("should not have been called")

        monkeypatch.setattr(
            'anaconda_project.internal.cli.console_utils.console_input',
            mock_console_input)

        res = _parse_args_and_run_subcommand(
            ['anaconda-project', 'prepare', '--directory', dirname])
        assert res == 1

        out, err = capsys.readouterr()

        assert err.endswith(
            "Conda environment is missing packages: nonexistent_package_name\n"
        )
    def check(dirname):
        project_dir_disable_dedicated_env(dirname)

        def mock_is_interactive():
            return True

        monkeypatch.setattr(
            'anaconda_project.internal.cli.console_utils.stdin_is_interactive',
            mock_is_interactive)

        inputs = ["    ", "foo", "bar"]

        def mock_console_input(prompt, encrypted):
            return inputs.pop(0)

        monkeypatch.setattr(
            'anaconda_project.internal.cli.console_utils.console_input',
            mock_console_input)

        res = _parse_args_and_run_subcommand(
            ['anaconda-project', 'prepare', '--directory', dirname])
        assert res == 0

        local_state = LocalStateFile.load_for_directory(dirname)
        assert local_state.get_value(['variables', 'FOO']) == 'foo'
        assert local_state.get_value(['variables', 'BAR']) == 'bar'
    def check_run_main(dirname):
        from os.path import abspath as real_abspath

        def mock_abspath(path):
            if path == ".":
                return dirname
            else:
                return real_abspath(path)

        monkeypatch.setattr('os.path.abspath', mock_abspath)

        project_dir_disable_dedicated_env(dirname)

        for n, i in enumerate(command_line):
            if i == '<DIRNAME>':
                command_line[n] = dirname

        result = _parse_args_and_run_subcommand(command_line)

        assert 1 == result
        assert 'file' in executed
        assert 'args' in executed
        assert 'env' in executed
        file_assertion(executed['file'])

        out, err = capsys.readouterr()
        assert "" == out
        assert "" == err

        return executed['args'][1:]
    def check(dirname):
        project_dir_disable_dedicated_env(dirname)

        def mock_is_interactive():
            return True

        monkeypatch.setattr(
            'anaconda_project.internal.cli.console_utils.stdin_is_interactive',
            mock_is_interactive)

        inputs = ["foo", "bar"]

        def mock_console_input(prompt, encrypted):
            return inputs.pop(0)

        monkeypatch.setattr(
            'anaconda_project.internal.cli.console_utils.console_input',
            mock_console_input)

        def mock_set_variables(project, env_spec_name, vars_and_values,
                               prepare_result):
            return SimpleStatus(success=False,
                                description="Set variables FAIL")

        monkeypatch.setattr('anaconda_project.project_ops.set_variables',
                            mock_set_variables)

        res = _parse_args_and_run_subcommand(
            ['anaconda-project', 'prepare', '--directory', dirname])
        assert res == 1

        out, err = capsys.readouterr()

        assert err == _foo_and_bar_missing + "Set variables FAIL\n"
    def check_run_main(dirname):
        from os.path import abspath as real_abspath

        def mock_abspath(path):
            if path == ".":
                return dirname
            else:
                return real_abspath(path)

        monkeypatch.setattr('os.path.abspath', mock_abspath)

        def mock_execvpe(file, args, env):
            assert file == 'nope'
            assert args == ['nope']
            raise OSError("no such file nope")

        monkeypatch.setattr('os.execvpe', mock_execvpe)

        project_dir_disable_dedicated_env(dirname)
        result = _parse_args_and_run_subcommand(['anaconda-project', 'run', '--directory', dirname, 'nope'])

        assert 1 == result

        out, err = capsys.readouterr()
        assert "" == out
        assert "Failed to execute 'nope'" in err
    def check_run_main(dirname):
        from os.path import abspath as real_abspath

        def mock_abspath(path):
            if path == ".":
                return dirname
            else:
                return real_abspath(path)

        monkeypatch.setattr('os.path.abspath', mock_abspath)

        project_dir_disable_dedicated_env(dirname)
        result = _parse_args_and_run_subcommand(['anaconda-project', '--verbose', 'run', '--directory', dirname,
                                                 'default'])

        assert 1 == result
        assert 'file' in executed
        assert 'args' in executed
        assert 'env' in executed
        assert executed['file'].endswith(python_exe)
        assert executed['args'][0].endswith(python_exe)
        assert len(executed['args']) == 2
        assert '--version' == executed['args'][1]

        # conda info is cached so may not be here depending on
        # which other tests run
        log_lines = ["$ conda info --json", "$ %s --version" % executed['args'][0]]
        log_lines_without_conda_info = log_lines[1:]

        def nl(lines):
            return ("\n".join(lines) + "\n")

        out, err = capsys.readouterr()
        assert "" == out
        assert nl(log_lines) == err or nl(log_lines_without_conda_info) == err
    def check(dirname):
        project_dir_disable_dedicated_env(dirname)

        def mock_is_interactive():
            return True

        monkeypatch.setattr(
            'anaconda_project.internal.cli.console_utils.stdin_is_interactive',
            mock_is_interactive)

        def mock_console_input(prompt, encrypted):
            raise Exception("Should not have called this, prompt " + prompt)

        monkeypatch.setattr(
            'anaconda_project.internal.cli.console_utils.console_input',
            mock_console_input)

        res = _parse_args_and_run_subcommand(
            ['anaconda-project', 'prepare', '--directory', dirname])
        assert res == 1

        out, err = capsys.readouterr()

        assert out == ""
        assert err == (
            "%s: env_specs should be a dictionary from environment name to environment attributes, not 42\n"
            "Unable to load the project.\n") % DEFAULT_PROJECT_FILENAME
    def check_run_main(dirname):
        from os.path import abspath as real_abspath

        def mock_abspath(path):
            if path == ".":
                return dirname
            else:
                return real_abspath(path)

        monkeypatch.setattr('os.path.abspath', mock_abspath)

        project_dir_disable_dedicated_env(dirname)
        result = _parse_args_and_run_subcommand(['anaconda-project', 'run', '--directory', dirname, 'default', 'foo',
                                                 '$PATH', '--something'])

        assert 1 == result
        assert 'file' in executed
        assert 'args' in executed
        assert 'env' in executed
        assert executed['file'].endswith(python_exe)
        assert executed['args'][0].endswith(python_exe)
        assert len(executed['args']) == 5
        assert '--version' == executed['args'][1]
        assert 'foo' == executed['args'][2]
        assert '$PATH' == executed['args'][3]
        assert '--something' == executed['args'][4]
 def prepare_redis_url(dirname):
     project_dir_disable_dedicated_env(dirname)
     result = prepare_command(dirname,
                              ui_mode,
                              conda_environment=None,
                              command_name=None)
     assert can_connect_args['port'] == 6379
     assert result
 def check_run_no_app_entry(dirname):
     project_dir_disable_dedicated_env(dirname)
     result = run_command(dirname,
                          UI_MODE_TEXT_ASSUME_YES_DEVELOPMENT,
                          conda_environment=None,
                          command_name=None,
                          extra_command_args=None)
     assert result is None
Example #14
0
 def activate_foo(dirname):
     project_dir_disable_dedicated_env(dirname)
     result = activate(dirname,
                       UI_MODE_TEXT_ASSUME_YES_DEVELOPMENT,
                       conda_environment=None,
                       command_name=None)
     result = _filter_activate_result(result, ('FOO', 'PROJECT_DIR'))
     assert result == ("'$! boo'", quote(dirname))
Example #15
0
 def activate_redis_url(dirname):
     project_dir_disable_dedicated_env(dirname)
     result = activate(dirname,
                       UI_MODE_TEXT_ASSUME_YES_DEVELOPMENT,
                       conda_environment=None,
                       command_name=None)
     assert can_connect_args['port'] == 6379
     result = _filter_activate_result(result, ('PROJECT_DIR', 'REDIS_URL'))
     assert result == (quote(dirname), 'redis://localhost:6379')
 def check_conda_default_env_is_bogus(dirname):
     requirement = _empty_default_requirement()
     project_dir_disable_dedicated_env(dirname)
     local_state = LocalStateFile.load_for_directory(dirname)
     status = requirement.check_status(
         minimal_environ_no_conda_env(**{'PROJECT_DIR': dirname}),
         local_state, 'default',
         UserConfigOverrides(inherited_env="not_a_real_env_anyone_has"))
     expected = "'not_a_real_env_anyone_has' doesn't look like it contains a Conda environment yet."
     assert expected == status.status_description
 def check_conda_default_env_not_set(dirname):
     requirement = _empty_default_requirement()
     project_dir_disable_dedicated_env(dirname)
     local_state = LocalStateFile.load_for_directory(dirname)
     status = requirement.check_status(
         minimal_environ_no_conda_env(PROJECT_DIR=dirname), local_state,
         'default', UserConfigOverrides())
     expected = "'{}' doesn't look like it contains a Conda environment yet.".format(
         os.path.join(dirname, 'envs', 'default'))
     assert expected == status.status_description
    def check_run_main(dirname):
        project_dir_disable_dedicated_env(dirname)
        result = main(Args(directory=dirname))

        assert 1 == result
        assert 'file' in executed
        assert 'args' in executed
        assert 'env' in executed
        assert executed['file'].endswith(python_exe)
        assert executed['args'][0].endswith(python_exe)
        assert '--version' == executed['args'][1]
 def check_missing_package(dirname):
     requirement = CondaEnvRequirement(
         registry=RequirementsRegistry(),
         env_specs=dict(default=EnvSpec(
             'default', ['boguspackage', 'boguspackage2'], [])))
     project_dir_disable_dedicated_env(dirname)
     local_state = LocalStateFile.load_for_directory(dirname)
     environ = minimal_environ(PROJECT_DIR=dirname)
     status = requirement.check_status(
         environ, local_state, 'default',
         UserConfigOverrides(inherited_env=environ.get(conda_env_var)))
     assert "Conda environment is missing packages: boguspackage, boguspackage2" == status.status_description
Example #20
0
    def main_redis_url(dirname):
        from os.path import abspath as real_abspath

        def mock_abspath(path):
            if path == ".":
                return dirname
            else:
                return real_abspath(path)

        monkeypatch.setattr('os.path.abspath', mock_abspath)
        project_dir_disable_dedicated_env(dirname)
        code = _parse_args_and_run_subcommand(['anaconda-project', 'activate'])
        assert code == 0
    def check_prepare_choose_environment_does_not_exist(dirname):
        project_dir_disable_dedicated_env(dirname)
        result = _parse_args_and_run_subcommand([
            'anaconda-project', 'prepare', '--directory', dirname,
            '--env-spec=nope'
        ])
        assert result == 1

        expected_error = (
            "Environment name 'nope' is not in %s, these names were found: bar, foo"
            % os.path.join(dirname, DEFAULT_PROJECT_FILENAME))
        out, err = capsys.readouterr()
        assert out == ""
        assert expected_error in err
 def activate_foo(dirname):
     project_dir_disable_dedicated_env(dirname)
     result = activate(dirname,
                       UI_MODE_TEXT_ASSUME_YES_DEVELOPMENT,
                       conda_environment=None,
                       command_name=None)
     assert result is not None
     if platform.system() == 'Windows':
         result = [
             line for line in result if not line.startswith("export PATH")
         ]
         print("activate changed PATH on Windows and ideally it would not.")
     assert ["export FOO='$! boo'",
             'export PROJECT_DIR=' + quote(dirname)] == result
    def check_run(dirname):
        project_dir_disable_dedicated_env(dirname)

        result = run_command(dirname,
                             UI_MODE_TEXT_ASSUME_YES_DEVELOPMENT,
                             conda_environment=None,
                             command_name=None,
                             extra_command_args=None)
        assert result is None
        assert 'file' in executed
        assert 'args' in executed
        assert 'env' in executed
        assert executed['file'].endswith(python_exe)
        assert executed['args'][0].endswith(python_exe)
        assert '--version' == executed['args'][1]
        assert 'bar' == executed['env']['FOO']
 def activate_redis_url(dirname):
     project_dir_disable_dedicated_env(dirname)
     result = activate(dirname,
                       UI_MODE_TEXT_ASSUME_YES_DEVELOPMENT,
                       conda_environment=None,
                       command_name=None)
     assert can_connect_args['port'] == 6379
     assert result is not None
     if platform.system() == 'Windows':
         result = [
             line for line in result if not line.startswith("export PATH")
         ]
         print("activate changed PATH on Windows and ideally it would not.")
     if len(result) > 2:
         import os
         print("os.environ=" + repr(os.environ))
         print("result=" + repr(result))
     assert [
         'export PROJECT_DIR=' + quote(dirname),
         'export REDIS_URL=redis://localhost:6379'
     ] == result
    def check(dirname):
        project_dir_disable_dedicated_env(dirname)
        result = _parse_args_and_run_subcommand([
            'anaconda-project', 'prepare', '--directory', dirname,
            '--command=with_bar'
        ])
        assert result == 1

        out, err = capsys.readouterr()
        assert 'nonexistent_bar' in err
        assert 'nonexistent_foo' not in err

        result = _parse_args_and_run_subcommand([
            'anaconda-project', 'prepare', '--directory', dirname,
            '--command=with_foo'
        ])
        assert result == 1

        out, err = capsys.readouterr()
        assert 'nonexistent_foo' in err
        assert 'nonexistent_bar' not in err
    def check_fails_while_listing_installed(dirname):
        def sabotaged_installed_command(prefix):
            from anaconda_project.internal import conda_api
            raise conda_api.CondaError("sabotage!")

        monkeypatch.setattr('anaconda_project.internal.conda_api.installed',
                            sabotaged_installed_command)

        project_dir_disable_dedicated_env(dirname)
        local_state = LocalStateFile.load_for_directory(dirname)

        requirement = CondaEnvRequirement(
            registry=RequirementsRegistry(),
            env_specs=dict(
                default=EnvSpec('default', ['not_a_real_package'], [])))
        environ = minimal_environ(PROJECT_DIR=dirname)
        status = requirement.check_status(
            environ, local_state, 'default',
            UserConfigOverrides(inherited_env=environ.get(conda_env_var)))
        assert status.status_description.startswith(
            "Conda failed while listing installed packages in ")
        assert status.status_description.endswith(": sabotage!")
    def check(dirname):
        project_dir_disable_dedicated_env(dirname)

        def mock_is_interactive():
            return False

        monkeypatch.setattr(
            'anaconda_project.internal.cli.console_utils.stdin_is_interactive',
            mock_is_interactive)

        def mock_console_input(prompt, encrypted):
            raise Exception("should not have been called")

        monkeypatch.setattr(
            'anaconda_project.internal.cli.console_utils.console_input',
            mock_console_input)

        res = _parse_args_and_run_subcommand(
            ['anaconda-project', 'prepare', '--directory', dirname])
        assert res == 1

        out, err = capsys.readouterr()

        assert err == _foo_and_bar_missing
    def check_run_main(dirname):
        project_dir_disable_dedicated_env(dirname)
        result = main(Args(directory=dirname))

        assert 1 == result
Example #29
0
 def main_redis_url(dirname):
     project_dir_disable_dedicated_env(dirname)
     code = _parse_args_and_run_subcommand(
         ['anaconda-project', 'activate', '--directory', dirname])
     assert code == 0
 def main_redis_url(dirname):
     project_dir_disable_dedicated_env(dirname)
     code = main(Args(directory=dirname, all=False))
     assert 1 == code