summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/gall/commit.lua2
-rw-r--r--test/test-gall.commit.lua26
2 files changed, 27 insertions, 1 deletions
diff --git a/lib/gall/commit.lua b/lib/gall/commit.lua
index b87904e..fca8ebf 100644
--- a/lib/gall/commit.lua
+++ b/lib/gall/commit.lua
@@ -49,7 +49,7 @@ local _new
--- @section end
local function parse_person(pers)
- local real, email, when, tz = pers:match("^(.-) <([^>]+)> ([0-9]+) ([+-][0-9]+)$")
+ local real, email, when, tz = pers:match("^(.-) <([^>]+)>.-([0-9]+) ([+-][0-9]+)$")
return {
realname = real,
email = email,
diff --git a/test/test-gall.commit.lua b/test/test-gall.commit.lua
index 8c79080..38eb591 100644
--- a/test/test-gall.commit.lua
+++ b/test/test-gall.commit.lua
@@ -111,6 +111,32 @@ function suite.commit_create()
local newcommit = assert(gall.commit.create(repo, commitinfo))
end
+function suite.commit_create_odd_names()
+ local repo = test_repo()
+ local head = repo:get("HEAD").content
+ local tree = head.tree
+ -- Stolen very nasty author commit content from https://perl5.git.perl.org/metaconfig.git
+ -- commit 8004414d7809df2e2574f6c149ac592bd2d5af96
+ local commit_mess = ([[
+tree %s
+parent %s
+author Todd C. Miller" <Todd.Miller at courtesan.com> <Todd C. Miller" <Todd.Miller at courtesan.com>> 1031751852 -0600
+committer H.Merijn Brand <h.m.brand@xs4all.nl> 1038300039 +0000
+
+#17171: ld flag for shrplib on OpenBSD
+From: "Todd C. Miller" <Todd.Miller at courtesan.com>
+
+p4raw-id: //depot/metaconfig@18181]]):format(tree.sha, head.sha)
+ local commitsha = repo:hash_object("commit", commit_mess, true)
+ local commit = repo:get(commitsha)
+ local person = commit.content.author
+ -- This is meant to replicate how Git parses the above horror...
+ assert(person.realname == [[Todd C. Miller"]])
+ assert(person.email == "Todd.Miller at courtesan.com")
+ assert(person.unixtime == "1031751852")
+ assert(person.timezone == "-0600")
+end
+
function suite.commit_create_no_parents_ok()
local repo = test_repo()
local head = repo:get("HEAD").content