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
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)
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
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)
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)
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)