8000 Merge pull request #1314 from eric-wieser/patch-1 · CoderboticsAI/GitPython@ea1a03a · GitHub
[go: up one dir, main page]

Skip to content

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit ea1a03a

Browse files
authored
Merge pull request gitpython-developers#1314 from eric-wieser/patch-1
Do not call get_user_id if it is not needed
2 parents 8e226ed + ec04ea0 commit ea1a03a

File tree

2 files changed

+35
-13
lines changed

2 files changed

+35
-13
lines changed

git/util.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -705,7 +705,11 @@ def default_name() -> str:
705705
setattr(actor, attr, val)
706706
except KeyError:
707707
if config_reader is not None:
708-
setattr(actor, attr, config_reader.get_value('user', cvar, default()))
708+
try:
709+
val = config_reader.get('user', cvar)
710+
except Exception:
711+
val = default()
712+
setattr(actor, attr, val)
709713
# END config-reader handling
710714
if not getattr(actor, attr):
711715
setattr(actor, attr, default())

test/test_util.py

Lines changed: 30 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,10 @@
2222
parse_date,
2323
tzoffset,
2424
from_timestamp)
25-
from test.lib import TestBase
25+
from test.lib import (
26+
TestBase,
27+
with_rw_repo,
28+
)
2629
from git.util import (
2730
LockFile,
2831
BlockingLockFile,
@@ -217,16 +220,31 @@ def test_actor(self):
217220
self.assertIsInstance(Actor.author(cr), Actor)
218221
# END assure config reader is handled
219222

223+
@with_rw_repo('HEAD')
220224
@mock.patch("getpass.getuser")
221-
def test_actor_get_uid_laziness_not_called(self, mock_get_uid):
225+
def test_actor_get_uid_laziness_not_called(self, rwrepo, mock_get_uid):
226+
with rwrepo.config_writer() as cw:
227+
cw.set_value("user", "name", "John Config Doe")
228+
cw.set_value("user", "email", "jcdoe@example.com")
229+
230+
cr = rwrepo.config_reader()
231+
committer = Actor.committer(cr)
232+
author = Actor.author(cr)
233+
234+
self.assertEqual(committer.name, 'John Config Doe')
235+
self.assertEqual(committer.email, 'jcdoe@example.com')
236+
self.assertEqual(author.name, 'John Config Doe')
237+
self.assertEqual(author.email, 'jcdoe@example.com')
238+
self.assertFalse(mock_get_uid.called)
239+
222240
env = {
223241
"GIT_AUTHOR_NAME": "John Doe",
224242
"GIT_AUTHOR_EMAIL": "jdoe@example.com",
225243
"GIT_COMMITTER_NAME": "Jane Doe",
226244
"GIT_COMMITTER_EMAIL": "jane@example.com",
227245
}
228246
os.environ.update(env)
229-
for cr in (None, self.rorepo.config_reader()):
247+
for cr in (None, rwrepo.config_reader()):
230248
committer = Actor.committer(cr)
231249
author = Actor.author(cr)
232250
self.assertEqual(committer.name, 'Jane Doe')
@@ -238,16 +256,16 @@ def test_actor_get_uid_laziness_not_called(self, mock_get_uid):
238256
@mock.patch("getpass.getuser")
239257
def test_actor_get_uid_laziness_called(self, mock_get_uid):
240258
mock_get_uid.return_value = "user"
241-
for cr in (None, self.rorepo.config_reader()):
242-
committer = Actor.committer(cr)
243-
author = Actor.author(cr)
244-
if cr is None: # otherwise, use value from config_reader
245-
self.assertEqual(committer.name, 'user')
246-
self.assertTrue(committer.email.startswith('user@'))
247-
self.assertEqual(author.name, 'user')
248-
self.assertTrue(committer.email.startswith('user@'))
259+
committer = Actor.committer(None)
260+
author = Actor.author(None)
261+
# We can't test with `self.rorepo.config_reader()` here, as the uuid laziness
262+
# depends on whether the user running the test has their global user.name config set.
263+
self.assertEqual(committer.name, 'user')
264+
self.assertTrue(committer.email.startswith('user@'))
265+
self.assertEqual(author.name, 'user')
266+
self.assertTrue(committer.email.startswith('user@'))
249267
self.assertTrue(mock_get_uid.called)
250-
self.assertEqual(mock_get_uid.call_count, 4)
268+
self.assertEqual(mock_get_uid.call_count, 2)
251269

252270
def test_actor_from_string(self):
253271
self.assertEqual(Actor._from_string("name"), Actor("name", None))

0 commit comments

Comments
 (0)
0