From 3246d05431d07128db422c735624448d1dd1475d Mon Sep 17 00:00:00 2001 From: danimtb Date: Thu, 4 Mar 2021 18:19:44 +0100 Subject: [PATCH 1/6] Add config install test with .gitlab folder --- .../functional/command/config_install_test.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/conans/test/functional/command/config_install_test.py b/conans/test/functional/command/config_install_test.py index 920067c99b6..47e8049f3b0 100644 --- a/conans/test/functional/command/config_install_test.py +++ b/conans/test/functional/command/config_install_test.py @@ -9,6 +9,7 @@ import six from mock import patch +from client.tools import environment_append from conans.client.cache.remote_registry import Remote from conans.client.conf import ConanClientConfigParser from conans.client.conf.config_installer import _hide_password, _ConfigOrigin @@ -752,3 +753,18 @@ def test_config_install_remove_config_repo(self): self.assertNotIn("Repo cloned!", self.client.out) # ... and updates the next schedule self.assertGreater(os.path.getmtime(self.client.cache.config_install_file), last_change) + + def test_config_fails_git_folder(self): + folder = os.path.join(temp_folder(), ".gitlab-conan", ".conan") + client = TestClient(cache_folder=folder) + assert ".gitlab-conan" in client.cache_folder + assert os.path.basename(client.cache_folder) == ".conan" + with self.client.chdir(self.folder): + self.client.run_command('git init .') + self.client.run_command('git add .') + self.client.run_command('git config user.name myname') + self.client.run_command('git config user.email myname@mycompany.com') + self.client.run_command('git commit -m "mymsg"') + client.run("config install '%s'" % self.folder) + conf = load(client.cache.conan_conf_path) + assert "config_install_interval = 5m" in conf From d6fd0e3a5b088b1979af2430052ed3b8e9bfc18f Mon Sep 17 00:00:00 2001 From: danimtb Date: Thu, 4 Mar 2021 18:26:20 +0100 Subject: [PATCH 2/6] assert --- conans/test/functional/command/config_install_test.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/conans/test/functional/command/config_install_test.py b/conans/test/functional/command/config_install_test.py index 47e8049f3b0..718abe58297 100644 --- a/conans/test/functional/command/config_install_test.py +++ b/conans/test/functional/command/config_install_test.py @@ -759,6 +759,8 @@ def test_config_fails_git_folder(self): client = TestClient(cache_folder=folder) assert ".gitlab-conan" in client.cache_folder assert os.path.basename(client.cache_folder) == ".conan" + conf = load(client.cache.conan_conf_path) + assert "config_install_interval = 5m" not in conf with self.client.chdir(self.folder): self.client.run_command('git init .') self.client.run_command('git add .') From 82ca275c81cffa03a0393c5dc9c042b7bf6c2f80 Mon Sep 17 00:00:00 2001 From: danimtb Date: Thu, 4 Mar 2021 18:57:37 +0100 Subject: [PATCH 3/6] remove import --- conans/test/functional/command/config_install_test.py | 1 - 1 file changed, 1 deletion(-) diff --git a/conans/test/functional/command/config_install_test.py b/conans/test/functional/command/config_install_test.py index 718abe58297..043f40304f0 100644 --- a/conans/test/functional/command/config_install_test.py +++ b/conans/test/functional/command/config_install_test.py @@ -9,7 +9,6 @@ import six from mock import patch -from client.tools import environment_append from conans.client.cache.remote_registry import Remote from conans.client.conf import ConanClientConfigParser from conans.client.conf.config_installer import _hide_password, _ConfigOrigin From b53b900b75c5b1dfb1dfc78553eb559195350b81 Mon Sep 17 00:00:00 2001 From: czoido Date: Fri, 5 Mar 2021 12:23:54 +0100 Subject: [PATCH 4/6] fix test --- .../test/functional/command/config_install_test.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/conans/test/functional/command/config_install_test.py b/conans/test/functional/command/config_install_test.py index 043f40304f0..2da5058dda6 100644 --- a/conans/test/functional/command/config_install_test.py +++ b/conans/test/functional/command/config_install_test.py @@ -760,12 +760,12 @@ def test_config_fails_git_folder(self): assert os.path.basename(client.cache_folder) == ".conan" conf = load(client.cache.conan_conf_path) assert "config_install_interval = 5m" not in conf - with self.client.chdir(self.folder): - self.client.run_command('git init .') - self.client.run_command('git add .') - self.client.run_command('git config user.name myname') - self.client.run_command('git config user.email myname@mycompany.com') - self.client.run_command('git commit -m "mymsg"') - client.run("config install '%s'" % self.folder) + with client.chdir(self.folder): + client.run_command('git init .') + client.run_command('git add .') + client.run_command('git config user.name myname') + client.run_command('git config user.email myname@mycompany.com') + client.run_command('git commit -m "mymsg"') + client.run('config install "%s/.git" --type git' % self.folder) conf = load(client.cache.conan_conf_path) assert "config_install_interval = 5m" in conf From a4c513ad12dba08143c4aafccf4094b50169c4f3 Mon Sep 17 00:00:00 2001 From: danimtb Date: Mon, 8 Mar 2021 11:18:11 +0100 Subject: [PATCH 5/6] Fix for .git folder in conan config install --- conans/client/conf/config_installer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conans/client/conf/config_installer.py b/conans/client/conf/config_installer.py index 7c0f4e48d5d..5bffdeeb221 100644 --- a/conans/client/conf/config_installer.py +++ b/conans/client/conf/config_installer.py @@ -130,7 +130,7 @@ def _process_folder(config, folder, cache, output): folder = os.path.join(folder, config.source_folder) for root, dirs, files in walk(folder): dirs[:] = [d for d in dirs if d != ".git"] - if ".git" in root: + if os.path.join(".git", "") in root: continue for f in files: _process_file(root, f, config, cache, output, folder) From c34d90046da09d5f538e83f40887fa4a5cd484d6 Mon Sep 17 00:00:00 2001 From: danimtb Date: Tue, 9 Mar 2021 16:34:07 +0100 Subject: [PATCH 6/6] review --- conans/client/conf/config_installer.py | 2 -- conans/test/functional/command/config_install_test.py | 11 +++++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/conans/client/conf/config_installer.py b/conans/client/conf/config_installer.py index 5bffdeeb221..a2aae34fdb4 100644 --- a/conans/client/conf/config_installer.py +++ b/conans/client/conf/config_installer.py @@ -130,8 +130,6 @@ def _process_folder(config, folder, cache, output): folder = os.path.join(folder, config.source_folder) for root, dirs, files in walk(folder): dirs[:] = [d for d in dirs if d != ".git"] - if os.path.join(".git", "") in root: - continue for f in files: _process_file(root, f, config, cache, output, folder) diff --git a/conans/test/functional/command/config_install_test.py b/conans/test/functional/command/config_install_test.py index 2da5058dda6..7c31ac81b69 100644 --- a/conans/test/functional/command/config_install_test.py +++ b/conans/test/functional/command/config_install_test.py @@ -754,18 +754,21 @@ def test_config_install_remove_config_repo(self): self.assertGreater(os.path.getmtime(self.client.cache.config_install_file), last_change) def test_config_fails_git_folder(self): + # https://github.com/conan-io/conan/issues/8594 folder = os.path.join(temp_folder(), ".gitlab-conan", ".conan") client = TestClient(cache_folder=folder) - assert ".gitlab-conan" in client.cache_folder - assert os.path.basename(client.cache_folder) == ".conan" - conf = load(client.cache.conan_conf_path) - assert "config_install_interval = 5m" not in conf with client.chdir(self.folder): client.run_command('git init .') client.run_command('git add .') client.run_command('git config user.name myname') client.run_command('git config user.email myname@mycompany.com') client.run_command('git commit -m "mymsg"') + assert ".gitlab-conan" in client.cache_folder + assert os.path.basename(client.cache_folder) == ".conan" + conf = load(client.cache.conan_conf_path) + assert "config_install_interval = 5m" not in conf client.run('config install "%s/.git" --type git' % self.folder) conf = load(client.cache.conan_conf_path) assert "config_install_interval = 5m" in conf + dirs = os.listdir(client.cache.cache_folder) + assert ".git" not in dirs