def _loader(self, current_path=None, user_settings_values=None, package_settings=None, user_options_values=None, scopes=None, env_values=None, use_conaninfo=True): # The disk settings definition, already including the default disk values settings = self._client_cache.settings conaninfo_scopes = Scopes() user_options = OptionsValues(user_options_values) mixed_env_values = EnvValues() mixed_env_values.update(env_values) if current_path: conan_info_path = os.path.join(current_path, CONANINFO) if use_conaninfo and os.path.exists(conan_info_path): existing_info = ConanInfo.load_file(conan_info_path) settings.values = existing_info.full_settings options = existing_info.full_options # Take existing options from conaninfo.txt options.update(user_options) user_options = options conaninfo_scopes = existing_info.scope # Update with info (prioritize user input) mixed_env_values.update(existing_info.env_values) if user_settings_values: aux_values = Values.from_list(user_settings_values) settings.values = aux_values if scopes: conaninfo_scopes.update_scope(scopes) self._current_scopes = conaninfo_scopes return ConanFileLoader(self._runner, settings, package_settings=package_settings, options=user_options, scopes=conaninfo_scopes, env_values=mixed_env_values)
def test_update_concat(self): env_info = EnvInfo() env_info.path.append("SOME/PATH") deps_info = DepsEnvInfo() deps_info.update(env_info, "lib") deps_info2 = DepsEnvInfo() deps_info2.update(env_info, "lib2") env = EnvValues() env.add("PATH", ["MYPATH"]) env.update(deps_info) self.assertEquals(env.env_dicts(None), ({}, {'PATH': ['MYPATH', 'SOME/PATH']})) env.update(deps_info2) self.assertEquals(env.env_dicts(None), ({}, {'PATH': ['MYPATH', 'SOME/PATH', 'SOME/PATH']}))
def test_update_concat(self): env_info = EnvInfo() env_info.path.append("SOME/PATH") deps_info = DepsEnvInfo() deps_info.update(env_info, "lib") deps_info2 = DepsEnvInfo() deps_info2.update(env_info, "lib2") env = EnvValues() env.add("PATH", ["MYPATH"]) env.update(deps_info) self.assertEqual(env.env_dicts(None), ({}, {'PATH': ['MYPATH', 'SOME/PATH']})) env.update(deps_info2) self.assertEqual(env.env_dicts(None), ({}, {'PATH': ['MYPATH', 'SOME/PATH', 'SOME/PATH']}))
def test_update_priority(self): env = EnvValues() env.add("VAR", "VALUE1") env2 = EnvValues() env2.add("VAR", "VALUE2") env.update(env2) # Already set by env, discarded new value self.assertEqual(env.env_dicts(None), ({'VAR': 'VALUE1'}, {})) # Updates with lists and values env = EnvValues() env.add("VAR", ["1"]) env.add("VAR", "2") self.assertEqual(env.env_dicts(None), ({}, {'VAR': ['1', '2']})) # If the first value is not a list won't append env = EnvValues() env.add("VAR", "1") env.add("VAR", ["2"]) self.assertEqual(env.env_dicts(None), ({'VAR': '1'}, {}))
def update_priority_test(self): env = EnvValues() env.add("VAR", "VALUE1") env2 = EnvValues() env2.add("VAR", "VALUE2") env.update(env2) # Already set by env, discarded new value self.assertEquals(env.env_dicts(None), ({'VAR': 'VALUE1'}, {})) # Updates with lists and values env = EnvValues() env.add("VAR", ["1"]) env.add("VAR", "2") self.assertEquals(env.env_dicts(None), ({}, {'VAR': ['1', '2']})) # If the first value is not a list won't append env = EnvValues() env.add("VAR", "1") env.add("VAR", ["2"]) self.assertEquals(env.env_dicts(None), ({'VAR': '1'}, {}))
def test_update_concat(self): env_info = EnvInfo() env_info.path.append("SOME/PATH") deps_info = DepsEnvInfo() deps_info.update(env_info, ConanFileReference.loads("lib/1.0@lasote/stable")) deps_info2 = DepsEnvInfo() deps_info2.update(env_info, ConanFileReference.loads("lib2/1.0@lasote/stable")) env = EnvValues() env.add("PATH", ["MYPATH"]) env.update(deps_info) self.assertEquals(env.env_dicts(None), ({}, { 'PATH': ['MYPATH', 'SOME/PATH'] })) env.update(deps_info2) self.assertEquals(env.env_dicts(None), ({}, { 'PATH': ['MYPATH', 'SOME/PATH', 'SOME/PATH'] }))