Пример #1
0
 def prepare_bad_provide_mode(dirname):
     with pytest.raises(ValueError) as excinfo:
         project = project_no_dedicated_env(dirname)
         environ = minimal_environ()
         prepare_in_stages(project,
                           mode="BAD_PROVIDE_MODE",
                           environ=environ)
     assert "invalid provide mode" in repr(excinfo.value)
    def check(dirname):
        envs_dir = os.path.join(dirname, "envs")

        project = Project(dirname)
        environ = minimal_environ(PROJECT_DIR=dirname)
        stage = prepare_in_stages(project, environ=environ)

        prepare_context = stage.configure()

        status = _conda_env_status(prepare_context)
        req = status.requirement
        provider = status.provider

        # check initial config

        config = provider.read_config(req, prepare_context.environ,
                                      prepare_context.local_state_file,
                                      prepare_context.default_env_spec_name,
                                      prepare_context.overrides)

        assert dict(env_name='default',
                    source='project',
                    value=os.path.join(envs_dir, 'default')) == config

        # set inherited mode

        config['source'] = 'inherited'

        provider.set_config_values_as_strings(
            req, prepare_context.environ, prepare_context.local_state_file,
            prepare_context.default_env_spec_name, prepare_context.overrides,
            config)

        config = provider.read_config(req, prepare_context.environ,
                                      prepare_context.local_state_file,
                                      prepare_context.default_env_spec_name,
                                      prepare_context.overrides)

        assert dict(env_name='default',
                    source='inherited',
                    value=os.environ.get(req.env_var)) == config

        # disable inherited mode again

        config['source'] = 'project'
        config['env_name'] = 'default'

        provider.set_config_values_as_strings(
            req, prepare_context.environ, prepare_context.local_state_file,
            prepare_context.default_env_spec_name, prepare_context.overrides,
            config)

        config = provider.read_config(req, prepare_context.environ,
                                      prepare_context.local_state_file,
                                      prepare_context.default_env_spec_name,
                                      prepare_context.overrides)

        assert dict(env_name='default',
                    source='project',
                    value=os.path.join(envs_dir, 'default')) == config
Пример #3
0
    def prepare_some_env_var_keep_going(dirname):
        project = project_no_dedicated_env(dirname)
        environ = minimal_environ(BAR='bar')
        stage = prepare_in_stages(project,
                                  environ=environ,
                                  keep_going_until_success=True)
        assert "Set up project." == stage.description_of_action
        assert ['FOO', 'CONDA_PREFIX'] == [
            status.requirement.env_var
            for status in stage.statuses_before_execute
        ]

        # there's an initial stage to set the conda env
        next_stage = stage.execute()
        assert ['FOO', 'CONDA_PREFIX'] == [
            status.requirement.env_var
            for status in stage.statuses_after_execute
        ]
        assert not stage.failed
        assert stage.environ['PROJECT_DIR'] == dirname
        assert "Set up project." == next_stage.description_of_action
        assert ['FOO', 'CONDA_PREFIX'] == [
            status.requirement.env_var
            for status in next_stage.statuses_before_execute
        ]
        stage = next_stage

        for i in range(1, 10):
            next_stage = stage.execute()
            assert next_stage is not None
            assert stage.failed
            assert stage.environ['PROJECT_DIR'] == dirname
            stage = next_stage
        assert dict(BAR='bar') == strip_environ(environ)
Пример #4
0
    def check(dirname):
        envs_dir = os.path.join(dirname, "envs")

        project = Project(dirname)
        environ = minimal_environ(PROJECT_DIR=dirname)
        stage = prepare_in_stages(project, environ=environ)

        prepare_context = stage.configure()

        status = _conda_bootstrap_env_status(prepare_context)
        req = status.requirement
        provider = status.provider

        config = provider.read_config(req, prepare_context.environ, prepare_context.local_state_file,
                                      prepare_context.default_env_spec_name, prepare_context.overrides)
        assert dict(env_name='bootstrap-env', source='project', value=os.path.join(envs_dir, 'bootstrap-env')) == config

        config['env_name'] = 'bar'

        provider.set_config_values_as_strings(req, prepare_context.environ, prepare_context.local_state_file,
                                              prepare_context.default_env_spec_name, prepare_context.overrides, config)

        config = provider.read_config(req, prepare_context.environ, prepare_context.local_state_file,
                                      prepare_context.default_env_spec_name, prepare_context.overrides)
        assert dict(env_name='bar', source='project', value=os.path.join(envs_dir, 'bar')) == config

        assert os.path.join(envs_dir, 'bar') == prepare_context.local_state_file.get_value(['variables', req.env_var])
    def check(dirname):
        @gen.coroutine
        def mock_downloader_run(self, loop):
            class Res:
                pass

            res = Res()
            res.code = 200
            with open(os.path.join(dirname, 'data.csv'), 'w') as out:
                out.write('data')
            self._hash = '12345abcdef'
            raise gen.Return(res)

        monkeypatch.setattr("anaconda_project.internal.http_client.FileDownloader.run", mock_downloader_run)

        project = project_no_dedicated_env(dirname)
        environ = minimal_environ(PROJECT_DIR=dirname)
        stage = prepare_in_stages(project, environ=environ)
        status = None
        while status is None and stage is not None:
            prepare_context = stage.configure()
            status = _download_status(prepare_context)
            if status is None:
                stage = stage.execute()

        assert status is not None

        req = status.requirement
        provider = status.provider

        # check initial config

        config = provider.read_config(req, prepare_context.environ, prepare_context.local_state_file,
                                      prepare_context.default_env_spec_name, prepare_context.overrides)

        assert dict(source='download') == config

        config['source'] = 'environ'
        config['value'] = 'abc.txt'

        provider.set_config_values_as_strings(req, prepare_context.environ, prepare_context.local_state_file,
                                              prepare_context.default_env_spec_name, prepare_context.overrides, config)

        config = provider.read_config(req, prepare_context.environ, prepare_context.local_state_file,
                                      prepare_context.default_env_spec_name, prepare_context.overrides)

        assert dict(source='download', value='abc.txt') == config

        config['source'] = 'variables'
        config['value'] = 'qrs.txt'
        provider.set_config_values_as_strings(req, prepare_context.environ, prepare_context.local_state_file,
                                              prepare_context.default_env_spec_name, prepare_context.overrides, config)

        config = provider.read_config(req, prepare_context.environ, prepare_context.local_state_file,
                                      prepare_context.default_env_spec_name, prepare_context.overrides)

        assert dict(source='variables', value='qrs.txt') == config
Пример #6
0
    def prepare_some_env_var_keep_going(dirname):
        project = project_no_dedicated_env(dirname)
        environ = minimal_environ(BAR='bar')
        stage = prepare_in_stages(project, environ=environ, keep_going_until_success=True)

        # there's an initial stage to set the conda env
        next_stage = stage.execute()
        assert not stage.failed
        assert stage.environ['PROJECT_DIR'] == dirname
        stage = next_stage

        for i in range(1, 10):
            next_stage = stage.execute()
            assert next_stage is not None
            assert stage.failed
            assert stage.environ['PROJECT_DIR'] == dirname
            stage = next_stage
        assert dict(BAR='bar') == strip_environ(environ)
Пример #7
0
 def early_status_grab(dirname):
     project = project_no_dedicated_env(dirname)
     first_stage = prepare_in_stages(project)
     with pytest.raises(RuntimeError) as excinfo:
         first_stage.statuses_after_execute
     assert "statuses_after_execute isn't available" in repr(excinfo.value)
Пример #8
0
 def early_result_grab(dirname):
     project = project_no_dedicated_env(dirname)
     first_stage = prepare_in_stages(project)
     with pytest.raises(RuntimeError) as excinfo:
         first_stage.result
     assert "result property isn't available" in repr(excinfo.value)