From edbe39a26d6535516aeafd0dca705c1ee02ad5b9 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Thu, 17 May 2018 15:54:17 +0200 Subject: pkg/git: extract relevant email addresses from commits Update #501 --- pkg/git/git_test.go | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) (limited to 'pkg/git/git_test.go') diff --git a/pkg/git/git_test.go b/pkg/git/git_test.go index 66159107f..86f033acf 100644 --- a/pkg/git/git_test.go +++ b/pkg/git/git_test.go @@ -7,8 +7,73 @@ import ( "reflect" "strings" "testing" + "time" ) +func TestParseCommit(t *testing.T) { + tests := map[string]*Commit{ + `2075b16e32c26e4031b9fd3cbe26c54676a8fcb5 +rbtree: include rcu.h +foobar@foobar.de +Fri May 11 16:02:14 2018 -0700 +Since commit c1adf20052d8 ("Introduce rb_replace_node_rcu()") +rbtree_augmented.h uses RCU related data structures but does not include +the header file. It works as long as it gets somehow included before +that and fails otherwise. + +Link: http://lkml.kernel.org/r/20180504103159.19938-1-bigeasy@linutronix.de +Signed-off-by: Foo Bad Baz +Reviewed-by: +Cc: Unrelated Guy +Acked-by: Subsystem reviewer +Reported-and-tested-by: and@me.com +Reported-and-Tested-by: Name-name +Tested-by: Must be correct +Signed-off-by: Linux Master +`: &Commit{ + Hash: "2075b16e32c26e4031b9fd3cbe26c54676a8fcb5", + Title: "rbtree: include rcu.h", + Author: "foobar@foobar.de", + CC: []string{ + "and@me.com", + "foobar@foobar.de", + "mustbe@correct.com", + "name@name.com", + "subsystem@reviewer.com", + "yetanother@email.org", + }, + Date: time.Date(2018, 5, 11, 16, 02, 14, 0, time.FixedZone("", -7*60*60)), + }, + } + for input, com := range tests { + res, err := parseCommit([]byte(input)) + if err != nil && com != nil { + t.Fatalf("want %+v, got error: %v", com, err) + } + if err == nil && com == nil { + t.Fatalf("want error, got commit %+v", res) + } + if com == nil { + continue + } + if com.Hash != res.Hash { + t.Fatalf("want hash %q, got %q", com.Hash, res.Hash) + } + if com.Title != res.Title { + t.Fatalf("want title %q, got %q", com.Title, res.Title) + } + if com.Author != res.Author { + t.Fatalf("want author %q, got %q", com.Author, res.Author) + } + if !reflect.DeepEqual(com.CC, res.CC) { + t.Fatalf("want CC %q, got %q", com.CC, res.CC) + } + if !com.Date.Equal(res.Date) { + t.Fatalf("want date %v, got %v", com.Date, res.Date) + } + } +} + func TestCanonicalizeCommit(t *testing.T) { tests := map[string]string{ "foo bar": "foo bar", -- cgit mrf-deployment