changeset 8987:d6d3cb5991e2 stable

tests: stabilize Git committer in test_vcs_operations Git tries to find out name and email in this order: 1. The author can be set e.g. via the `--author` option of `git commit`. 2. If set, the environment variables GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL, GIT_COMMITTER_NAME and GIT_COMMITTER_EMAIL are taken. 3. If set, various (global) config files are considered. 4. Unless disabled by the user.useconfigonly config, the names and emails are inferred from various system sources such as various fields from /etc/passwd, /etc/mailname and the environment variable EMAIL. The author can be provided on the command line (1), but that is not possible for the committer. It is not an option to modify Git’s configuration files, so the result of (3) depends on the system the tests run on, which should be avoided. A follow-up patch will try to instruct Git to not read the system Git configuration files. (4) is also system-dependent. On some systems, (4) is disabled in the Git configuration. If enabled, Git will try to infer the committer name from the gecko field in /etc/passwd, but will fail if it is empty. The previous code passed the environment variable EMAIL to provide the corresponding email address. By passing the names and emails via (2), we can set the author and committer name and email uniformly and prevent Git from using the system-dependent ways (3) and (4). This will replace the use of of EMAIL. The environment variables were introduced in 2005, so there should be no backwards compatibility problems. The tests will specify --author explicitly in the cases where the actual name matters. We just need default values that can be used for committing when we don't care. We set it as static defaults to: Author: test_regular <test_regular@example.com> Commit: test_admin <test_admin@example.com> Based on changes and research by Manuel Jacob <me@manueljacob.de>.
author Mads Kiilerich <mads@kiilerich.com>
date Thu, 20 Apr 2023 00:30:29 +0200
parents 0a9ddb8cd8c1
children 511b20a6475d
files kallithea/tests/other/test_vcs_operations.py
diffstat 1 files changed, 6 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/kallithea/tests/other/test_vcs_operations.py	Thu Apr 13 13:54:24 2023 +0200
+++ b/kallithea/tests/other/test_vcs_operations.py	Thu Apr 20 00:30:29 2023 +0200
@@ -150,6 +150,10 @@
         testenv['LANGUAGE'] = 'en_US:en'
         testenv['HGPLAIN'] = ''
         testenv['HGRCPATH'] = ''
+        testenv['GIT_COMMITTER_NAME'] = base.TEST_USER_ADMIN_LOGIN
+        testenv['GIT_COMMITTER_EMAIL'] = base.TEST_USER_ADMIN_EMAIL
+        testenv['GIT_AUTHOR_NAME'] = base.TEST_USER_REGULAR_LOGIN
+        testenv['GIT_AUTHOR_EMAIL'] = base.TEST_USER_REGULAR_EMAIL
         testenv.update(environ)
         p = Popen(command, shell=True, stdout=PIPE, stderr=PIPE, cwd=self.cwd, env=testenv)
         stdout, stderr = p.communicate()
@@ -195,8 +199,7 @@
             cmd = """git commit -m "committed new %s" --author "%s" "%s" """ % (
                 i, author_str, added_file
             )
-        # git commit needs EMAIL on some machines
-        Command(dest_dir).execute(cmd, EMAIL=email)
+        Command(dest_dir).execute(cmd)
 
 def _add_files_and_push(webserver, vt, dest_dir, clone_url, ignoreReturnCode=False, files_no=3):
     _add_files(vt.repo_type, dest_dir, files_no=files_no)
@@ -618,7 +621,7 @@
         # add submodule
         stdout, stderr = Command(base.TESTS_TMP_PATH).execute('git clone', fork_url, dest_dir)
         stdout, stderr = Command(dest_dir).execute('git submodule add', clone_url, 'testsubmodule')
-        stdout, stderr = Command(dest_dir).execute('git commit -am "added testsubmodule pointing to', clone_url, '"', EMAIL=base.TEST_USER_ADMIN_EMAIL)
+        stdout, stderr = Command(dest_dir).execute('git commit -am "added testsubmodule pointing to', clone_url, '"')
         stdout, stderr = Command(dest_dir).execute('git push', fork_url, 'master')
 
         # check for testsubmodule link in files page