From 991117c8cb3386b85e295b15bd1d125c2173f02d Mon Sep 17 00:00:00 2001 From: Christopher Mancini Date: Wed, 28 Aug 2019 16:52:08 -0400 Subject: [PATCH 1/5] append logs, cleanup old logs, add events to meta data --- .gitignore | 1 + in.go | 1 + in_test.go | 13 ++++++------- log/clean.go | 29 +++++++++++++++++++++++++++++ log/log.go | 5 ++++- 5 files changed, 41 insertions(+), 8 deletions(-) create mode 100644 log/clean.go diff --git a/.gitignore b/.gitignore index a00137e..ff011c5 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ build/* # Taskfile .task +*.log diff --git a/in.go b/in.go index ad4fa00..b3f3a68 100644 --- a/in.go +++ b/in.go @@ -73,6 +73,7 @@ func Get(request GetRequest, github Github, git Git, outputDir string) (*GetResp metadata.Add("base_sha", baseSHA) metadata.Add("message", pull.HeadRef.Message) metadata.Add("author", pull.HeadRef.Author) + metadata.Add("events", fmt.Sprintf("%v", pull.Events)) // Write version and metadata for reuse in PUT path := filepath.Join(outputDir, ".git", "resource") diff --git a/in_test.go b/in_test.go index c8df14b..2f4b6fa 100644 --- a/in_test.go +++ b/in_test.go @@ -13,7 +13,6 @@ import ( ) func TestGet(t *testing.T) { - tests := []struct { description string source resource.Source @@ -39,7 +38,7 @@ func TestGet(t *testing.T) { parameters: resource.GetParameters{}, pullRequest: createTestPR(1, "master", false, false, false, false), versionString: `{"pr":"1","commit":"commit1","updated":"0001-01-01T00:00:00Z"}`, - metadataString: `[{"name":"pr","value":"1"},{"name":"url","value":"pr1 url"},{"name":"head_name","value":"pr1"},{"name":"head_sha","value":"oid1"},{"name":"head_short_sha","value":"oid1"},{"name":"base_name","value":"master"},{"name":"base_sha","value":"sha"},{"name":"message","value":"commit message1"},{"name":"author","value":"login1"}]`, + metadataString: `[{"name":"pr","value":"1"},{"name":"url","value":"pr1 url"},{"name":"head_name","value":"pr1"},{"name":"head_sha","value":"oid1"},{"name":"head_short_sha","value":"oid1"},{"name":"base_name","value":"master"},{"name":"base_sha","value":"sha"},{"name":"message","value":"commit message1"},{"name":"author","value":"login1"},{"name":"events","value":"[]"}]`, }, { description: "get supports unlocking with git crypt", @@ -56,7 +55,7 @@ func TestGet(t *testing.T) { parameters: resource.GetParameters{}, pullRequest: createTestPR(1, "master", false, false, false, false), versionString: `{"pr":"1","commit":"commit1","updated":"0001-01-01T00:00:00Z"}`, - metadataString: `[{"name":"pr","value":"1"},{"name":"url","value":"pr1 url"},{"name":"head_name","value":"pr1"},{"name":"head_sha","value":"oid1"},{"name":"head_short_sha","value":"oid1"},{"name":"base_name","value":"master"},{"name":"base_sha","value":"sha"},{"name":"message","value":"commit message1"},{"name":"author","value":"login1"}]`, + metadataString: `[{"name":"pr","value":"1"},{"name":"url","value":"pr1 url"},{"name":"head_name","value":"pr1"},{"name":"head_sha","value":"oid1"},{"name":"head_short_sha","value":"oid1"},{"name":"base_name","value":"master"},{"name":"base_sha","value":"sha"},{"name":"message","value":"commit message1"},{"name":"author","value":"login1"},{"name":"events","value":"[]"}]`, }, { description: "get supports rebasing", @@ -74,7 +73,7 @@ func TestGet(t *testing.T) { }, pullRequest: createTestPR(1, "master", false, false, false, false), versionString: `{"pr":"1","commit":"commit1","updated":"0001-01-01T00:00:00Z"}`, - metadataString: `[{"name":"pr","value":"1"},{"name":"url","value":"pr1 url"},{"name":"head_name","value":"pr1"},{"name":"head_sha","value":"oid1"},{"name":"head_short_sha","value":"oid1"},{"name":"base_name","value":"master"},{"name":"base_sha","value":"sha"},{"name":"message","value":"commit message1"},{"name":"author","value":"login1"}]`, + metadataString: `[{"name":"pr","value":"1"},{"name":"url","value":"pr1 url"},{"name":"head_name","value":"pr1"},{"name":"head_sha","value":"oid1"},{"name":"head_short_sha","value":"oid1"},{"name":"base_name","value":"master"},{"name":"base_sha","value":"sha"},{"name":"message","value":"commit message1"},{"name":"author","value":"login1"},{"name":"events","value":"[]"}]`, }, { description: "get supports checkout", @@ -92,7 +91,7 @@ func TestGet(t *testing.T) { }, pullRequest: createTestPR(1, "master", false, false, false, false), versionString: `{"pr":"1","commit":"commit1","updated":"0001-01-01T00:00:00Z"}`, - metadataString: `[{"name":"pr","value":"1"},{"name":"url","value":"pr1 url"},{"name":"head_name","value":"pr1"},{"name":"head_sha","value":"oid1"},{"name":"head_short_sha","value":"oid1"},{"name":"base_name","value":"master"},{"name":"base_sha","value":"sha"},{"name":"message","value":"commit message1"},{"name":"author","value":"login1"}]`, + metadataString: `[{"name":"pr","value":"1"},{"name":"url","value":"pr1 url"},{"name":"head_name","value":"pr1"},{"name":"head_sha","value":"oid1"},{"name":"head_short_sha","value":"oid1"},{"name":"base_name","value":"master"},{"name":"base_sha","value":"sha"},{"name":"message","value":"commit message1"},{"name":"author","value":"login1"},{"name":"events","value":"[]"}]`, }, { description: "get supports git_depth", @@ -110,7 +109,7 @@ func TestGet(t *testing.T) { }, pullRequest: createTestPR(1, "master", false, false, false, false), versionString: `{"pr":"1","commit":"commit1","updated":"0001-01-01T00:00:00Z"}`, - metadataString: `[{"name":"pr","value":"1"},{"name":"url","value":"pr1 url"},{"name":"head_name","value":"pr1"},{"name":"head_sha","value":"oid1"},{"name":"head_short_sha","value":"oid1"},{"name":"base_name","value":"master"},{"name":"base_sha","value":"sha"},{"name":"message","value":"commit message1"},{"name":"author","value":"login1"}]`, + metadataString: `[{"name":"pr","value":"1"},{"name":"url","value":"pr1 url"},{"name":"head_name","value":"pr1"},{"name":"head_sha","value":"oid1"},{"name":"head_short_sha","value":"oid1"},{"name":"base_name","value":"master"},{"name":"base_sha","value":"sha"},{"name":"message","value":"commit message1"},{"name":"author","value":"login1"},{"name":"events","value":"[]"}]`, }, { description: "get supports list_changed_files", @@ -129,7 +128,7 @@ func TestGet(t *testing.T) { pullRequest: createTestPR(1, "master", false, false, false, false), files: []string{"README.md", "Other.md"}, versionString: `{"pr":"1","commit":"commit1","updated":"0001-01-01T00:00:00Z"}`, - metadataString: `[{"name":"pr","value":"1"},{"name":"url","value":"pr1 url"},{"name":"head_name","value":"pr1"},{"name":"head_sha","value":"oid1"},{"name":"head_short_sha","value":"oid1"},{"name":"base_name","value":"master"},{"name":"base_sha","value":"sha"},{"name":"message","value":"commit message1"},{"name":"author","value":"login1"}]`, + metadataString: `[{"name":"pr","value":"1"},{"name":"url","value":"pr1 url"},{"name":"head_name","value":"pr1"},{"name":"head_sha","value":"oid1"},{"name":"head_short_sha","value":"oid1"},{"name":"base_name","value":"master"},{"name":"base_sha","value":"sha"},{"name":"message","value":"commit message1"},{"name":"author","value":"login1"},{"name":"events","value":"[]"}]`, filesString: "README.md\nOther.md\n", }, } diff --git a/log/clean.go b/log/clean.go new file mode 100644 index 0000000..10b5e34 --- /dev/null +++ b/log/clean.go @@ -0,0 +1,29 @@ +package log + +import ( + "fmt" + "io/ioutil" + "os" + "strings" + "time" +) + +func cleanStaleLogs(dir string) error { + tmpfiles, err := ioutil.ReadDir(dir) + if err != nil { + return err + } + + for _, file := range tmpfiles { + if strings.HasPrefix(file.Name(), "resource-") && file.Mode().IsRegular() { + if time.Now().Sub(file.ModTime()) > 72*time.Hour { + err = os.Remove(fmt.Sprintf("%s%v%s", dir, os.PathSeparator, file.Name())) + if err != nil { + return err + } + } + } + } + + return nil +} diff --git a/log/log.go b/log/log.go index 4c6d00a..3ce56b8 100644 --- a/log/log.go +++ b/log/log.go @@ -5,6 +5,7 @@ import ( "io/ioutil" "log" "os" + "time" ) var ( @@ -23,7 +24,9 @@ func init() { debug = true } - f, err := os.OpenFile(fmt.Sprintf("%s/github-pr-resource.log", dir), os.O_RDWR|os.O_CREATE, 0666) + cleanStaleLogs(dir) + + f, err := os.OpenFile(fmt.Sprintf("%s/resource-%s.log", dir, time.Now().Format("2006-01-02")), os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) if err != nil { log.Fatalf("error opening file: %v", err) } From cd056e78a3b3ffaf9fdf8f88cd4d8ebf7ec32e7c Mon Sep 17 00:00:00 2001 From: Christopher Mancini Date: Wed, 28 Aug 2019 17:00:41 -0400 Subject: [PATCH 2/5] remove flawed logic for empty versions --- check.go | 2 +- check_test.go | 12 ++------ fakes/fake_github.go | 69 -------------------------------------------- github.go | 6 ---- 4 files changed, 3 insertions(+), 86 deletions(-) diff --git a/check.go b/check.go index d430e68..c851602 100644 --- a/check.go +++ b/check.go @@ -11,7 +11,7 @@ import ( func findPulls(since time.Time, gh Github) ([]pullrequest.PullRequest, error) { if since.IsZero() { - return gh.GetLatestOpenPullRequest() + since = time.Now().AddDate(-3, 0, 0) } return gh.ListOpenPullRequests(since) } diff --git a/check_test.go b/check_test.go index b485d31..06a5a59 100644 --- a/check_test.go +++ b/check_test.go @@ -110,11 +110,7 @@ func TestCheck(t *testing.T) { t.Run(tc.description, func(t *testing.T) { github := new(fakes.FakeGithub) - if tc.version.UpdatedDate.IsZero() { - github.GetLatestOpenPullRequestReturns(tc.pullRequests, nil) - } else { - github.ListOpenPullRequestsReturns(tc.pullRequests, nil) - } + github.ListOpenPullRequestsReturns(tc.pullRequests, nil) for i, file := range tc.files { github.GetChangedFilesReturnsOnCall(i, file, nil) @@ -126,11 +122,7 @@ func TestCheck(t *testing.T) { if assert.NoError(t, err) { assert.Equal(t, tc.expected, output) } - if tc.version.UpdatedDate.IsZero() { - assert.Equal(t, 1, github.GetLatestOpenPullRequestCallCount()) - } else { - assert.Equal(t, 1, github.ListOpenPullRequestsCallCount()) - } + assert.Equal(t, 1, github.ListOpenPullRequestsCallCount()) }) } } diff --git a/fakes/fake_github.go b/fakes/fake_github.go index dd3f32e..deea3ad 100644 --- a/fakes/fake_github.go +++ b/fakes/fake_github.go @@ -23,18 +23,6 @@ type FakeGithub struct { result1 []string result2 error } - GetLatestOpenPullRequestStub func() ([]pullrequest.PullRequest, error) - getLatestOpenPullRequestMutex sync.RWMutex - getLatestOpenPullRequestArgsForCall []struct { - } - getLatestOpenPullRequestReturns struct { - result1 []pullrequest.PullRequest - result2 error - } - getLatestOpenPullRequestReturnsOnCall map[int]struct { - result1 []pullrequest.PullRequest - result2 error - } GetPullRequestStub func(int, string) (pullrequest.PullRequest, error) getPullRequestMutex sync.RWMutex getPullRequestArgsForCall []struct { @@ -157,61 +145,6 @@ func (fake *FakeGithub) GetChangedFilesReturnsOnCall(i int, result1 []string, re }{result1, result2} } -func (fake *FakeGithub) GetLatestOpenPullRequest() ([]pullrequest.PullRequest, error) { - fake.getLatestOpenPullRequestMutex.Lock() - ret, specificReturn := fake.getLatestOpenPullRequestReturnsOnCall[len(fake.getLatestOpenPullRequestArgsForCall)] - fake.getLatestOpenPullRequestArgsForCall = append(fake.getLatestOpenPullRequestArgsForCall, struct { - }{}) - fake.recordInvocation("GetLatestOpenPullRequest", []interface{}{}) - fake.getLatestOpenPullRequestMutex.Unlock() - if fake.GetLatestOpenPullRequestStub != nil { - return fake.GetLatestOpenPullRequestStub() - } - if specificReturn { - return ret.result1, ret.result2 - } - fakeReturns := fake.getLatestOpenPullRequestReturns - return fakeReturns.result1, fakeReturns.result2 -} - -func (fake *FakeGithub) GetLatestOpenPullRequestCallCount() int { - fake.getLatestOpenPullRequestMutex.RLock() - defer fake.getLatestOpenPullRequestMutex.RUnlock() - return len(fake.getLatestOpenPullRequestArgsForCall) -} - -func (fake *FakeGithub) GetLatestOpenPullRequestCalls(stub func() ([]pullrequest.PullRequest, error)) { - fake.getLatestOpenPullRequestMutex.Lock() - defer fake.getLatestOpenPullRequestMutex.Unlock() - fake.GetLatestOpenPullRequestStub = stub -} - -func (fake *FakeGithub) GetLatestOpenPullRequestReturns(result1 []pullrequest.PullRequest, result2 error) { - fake.getLatestOpenPullRequestMutex.Lock() - defer fake.getLatestOpenPullRequestMutex.Unlock() - fake.GetLatestOpenPullRequestStub = nil - fake.getLatestOpenPullRequestReturns = struct { - result1 []pullrequest.PullRequest - result2 error - }{result1, result2} -} - -func (fake *FakeGithub) GetLatestOpenPullRequestReturnsOnCall(i int, result1 []pullrequest.PullRequest, result2 error) { - fake.getLatestOpenPullRequestMutex.Lock() - defer fake.getLatestOpenPullRequestMutex.Unlock() - fake.GetLatestOpenPullRequestStub = nil - if fake.getLatestOpenPullRequestReturnsOnCall == nil { - fake.getLatestOpenPullRequestReturnsOnCall = make(map[int]struct { - result1 []pullrequest.PullRequest - result2 error - }) - } - fake.getLatestOpenPullRequestReturnsOnCall[i] = struct { - result1 []pullrequest.PullRequest - result2 error - }{result1, result2} -} - func (fake *FakeGithub) GetPullRequest(arg1 int, arg2 string) (pullrequest.PullRequest, error) { fake.getPullRequestMutex.Lock() ret, specificReturn := fake.getPullRequestReturnsOnCall[len(fake.getPullRequestArgsForCall)] @@ -470,8 +403,6 @@ func (fake *FakeGithub) Invocations() map[string][][]interface{} { defer fake.invocationsMutex.RUnlock() fake.getChangedFilesMutex.RLock() defer fake.getChangedFilesMutex.RUnlock() - fake.getLatestOpenPullRequestMutex.RLock() - defer fake.getLatestOpenPullRequestMutex.RUnlock() fake.getPullRequestMutex.RLock() defer fake.getPullRequestMutex.RUnlock() fake.listOpenPullRequestsMutex.RLock() diff --git a/github.go b/github.go index 3a33362..1ffe4a5 100644 --- a/github.go +++ b/github.go @@ -22,7 +22,6 @@ import ( // Github for testing purposes. //go:generate go run github.com/maxbrunsfeld/counterfeiter/v6 -o fakes/fake_github.go . Github type Github interface { - GetLatestOpenPullRequest() ([]pullrequest.PullRequest, error) ListOpenPullRequests(prSince time.Time) ([]pullrequest.PullRequest, error) PostComment(int, string) error GetPullRequest(int, string) (pullrequest.PullRequest, error) @@ -105,11 +104,6 @@ func NewGithubClient(s *Source) (*GithubClient, error) { }, nil } -// GetLatestOpenPullRequest gets the last commit on the latest open pull request -func (m *GithubClient) GetLatestOpenPullRequest() ([]pullrequest.PullRequest, error) { - return m.searchOpenPullRequests(time.Now().AddDate(-3, 0, 0), 3) -} - // ListOpenPullRequests gets the last commit on all open pull requests func (m *GithubClient) ListOpenPullRequests(since time.Time) ([]pullrequest.PullRequest, error) { return m.searchOpenPullRequests(since, 100) From f8946e87725629a1b5e7649f9b5ff9c6506f7351 Mon Sep 17 00:00:00 2001 From: Christopher Mancini Date: Wed, 28 Aug 2019 17:04:13 -0400 Subject: [PATCH 3/5] fix file path --- log/clean.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/log/clean.go b/log/clean.go index 10b5e34..acf197a 100644 --- a/log/clean.go +++ b/log/clean.go @@ -1,7 +1,7 @@ package log import ( - "fmt" + "filepath" "io/ioutil" "os" "strings" @@ -17,7 +17,7 @@ func cleanStaleLogs(dir string) error { for _, file := range tmpfiles { if strings.HasPrefix(file.Name(), "resource-") && file.Mode().IsRegular() { if time.Now().Sub(file.ModTime()) > 72*time.Hour { - err = os.Remove(fmt.Sprintf("%s%v%s", dir, os.PathSeparator, file.Name())) + err = os.Remove(filepath.Join(dir, file.Name())) if err != nil { return err } From 36531a69b37d28e0ecb7b1096714e55b7ec159c4 Mon Sep 17 00:00:00 2001 From: Christopher Mancini Date: Wed, 28 Aug 2019 17:13:49 -0400 Subject: [PATCH 4/5] fix import --- log/clean.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/log/clean.go b/log/clean.go index acf197a..a419e0a 100644 --- a/log/clean.go +++ b/log/clean.go @@ -1,9 +1,9 @@ package log import ( - "filepath" "io/ioutil" "os" + "path/filepath" "strings" "time" ) From ddcfe3c137516e4731a4e48e0f28f263e36034cb Mon Sep 17 00:00:00 2001 From: Christopher Mancini Date: Thu, 29 Aug 2019 12:42:53 -0400 Subject: [PATCH 5/5] cherry pick feature branch of glob repo --- github.go | 4 +- go.mod | 24 +++++++----- go.sum | 57 ++++++++++++++++++---------- pullrequest/functional_test.go | 68 +++++++++++++++++++++++----------- 4 files changed, 98 insertions(+), 55 deletions(-) diff --git a/github.go b/github.go index 1ffe4a5..2cc685b 100644 --- a/github.go +++ b/github.go @@ -130,9 +130,7 @@ func (m *GithubClient) searchOpenPullRequests(since time.Time, number int) ([]pu "c": (*githubv4.String)(nil), "s": githubv4.DateTime{Time: since}, "n": githubv4.Int(number), - "q": githubv4.String( - fmt.Sprintf("is:pr is:open repo:%s/%s updated:>%s sort:updated", m.Owner, m.Repository, since.Format(time.RFC3339)), - ), + "q": githubv4.String(fmt.Sprintf("is:pr is:open repo:%s/%s updated:>%s sort:updated", m.Owner, m.Repository, since.Format(time.RFC3339))), } var response []pullrequest.PullRequest diff --git a/go.mod b/go.mod index 6549464..85f38a9 100644 --- a/go.mod +++ b/go.mod @@ -1,17 +1,21 @@ module github.com/telia-oss/github-pr-resource require ( - github.com/gobwas/glob v0.2.3 + github.com/davecgh/go-spew v1.1.1 // indirect + //github.com/gobwas/glob v0.2.3 + github.com/gobwas/glob v0.2.4-0.20190312191541-bcbbef0a8d85 + github.com/golang/protobuf v1.3.2 // indirect github.com/google/go-github v17.0.0+incompatible github.com/google/go-querystring v1.0.0 // indirect github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2 - github.com/shurcooL/githubv4 v0.0.0-20180925043049-51d7b505e2e9 - github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e // indirect - github.com/shurcooL/graphql v0.0.0-20180924043259-e4a3a37e6d42 // indirect - github.com/stretchr/testify v1.3.0 - golang.org/x/net v0.0.0-20190724013045-ca1201d0de80 // indirect - golang.org/x/oauth2 v0.0.0-20181031022657-8527f56f7107 - golang.org/x/sys v0.0.0-20190804053845-51ab0e2deafa // indirect - golang.org/x/tools v0.0.0-20190806215303-88ddfcebc769 // indirect - google.golang.org/appengine v1.2.0 // indirect + github.com/onsi/ginkgo v1.10.0 // indirect + github.com/onsi/gomega v1.7.0 // indirect + github.com/shurcooL/githubv4 v0.0.0-20190718010115-4ba037080260 + github.com/shurcooL/graphql v0.0.0-20181231061246-d48a9a75455f // indirect + github.com/stretchr/testify v1.4.0 + golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297 // indirect + golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 + golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456 // indirect + golang.org/x/tools v0.0.0-20190829160515-d151469ab045 // indirect + google.golang.org/appengine v1.6.2 // indirect ) diff --git a/go.sum b/go.sum index 7c67ee4..5d5f92d 100644 --- a/go.sum +++ b/go.sum @@ -1,13 +1,18 @@ +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= -github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= +github.com/gobwas/glob v0.2.4-0.20190312191541-bcbbef0a8d85 h1:RM2Sbxa9YdXbehwmp10871wgAgXpzfotHqP0/1c6caY= +github.com/gobwas/glob v0.2.4-0.20190312191541-bcbbef0a8d85/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/google/go-github v17.0.0+incompatible h1:N0LgJ1j65A7kfXrZnUDaYCs/Sf4rEjNlfyDHW9dolSY= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk= @@ -27,54 +32,66 @@ github.com/onsi/ginkgo v1.6.0 h1:Ix8l273rp3QzYgXSR+c8d1fTG7UPgYkOSELPhiY/YGw= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.8.0 h1:VkHVNpR4iVnU8XQR6DBm8BqYjN7CRzw+xKUbVVbbW9w= github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.10.0 h1:XaTQmdKecIbwNHpzOIy0XMoEG5bmv/n0OVyaF1NKUdo= +github.com/onsi/ginkgo v1.10.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v1.5.0 h1:izbySO9zDPmjJ8rDjLvkA2zJHIo+HkYXHnf7eN7SSyo= github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.0 h1:XPnZz8VVBHjVsy1vzJmRwIcSwiUO+JFfrv/xGiigmME= +github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/sclevine/spec v1.2.0 h1:1Jwdf9jSfDl9NVmt8ndHqbTZ7XCCPbh1jI3hkDBHVYA= github.com/sclevine/spec v1.2.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24q7p+U= -github.com/shurcooL/githubv4 v0.0.0-20180925043049-51d7b505e2e9 h1:cppRIvEpuZcSdhbhyJZ/3ThCPYlx6xuZg8Qid/0+bz0= -github.com/shurcooL/githubv4 v0.0.0-20180925043049-51d7b505e2e9/go.mod h1:hAF0iLZy4td2EX+/8Tw+4nodhlMrwN3HupfaXj3zkGo= -github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e h1:MZM7FHLqUHYI0Y/mQAt3d2aYa0SiNms/hFqC9qJYolM= -github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= -github.com/shurcooL/graphql v0.0.0-20180924043259-e4a3a37e6d42 h1:YIoQLhvoRcfiL0pyxqkESFZXa7jQrcfLTUSSUeyYMO8= -github.com/shurcooL/graphql v0.0.0-20180924043259-e4a3a37e6d42/go.mod h1:AuYgA5Kyo4c7HfUmvRGs/6rGlMMV/6B1bVnB9JxJEEg= +github.com/shurcooL/githubv4 v0.0.0-20190718010115-4ba037080260 h1:xKXiRdBUtMVp64NaxACcyX4kvfmHJ9KrLU+JvyB1mdM= +github.com/shurcooL/githubv4 v0.0.0-20190718010115-4ba037080260/go.mod h1:hAF0iLZy4td2EX+/8Tw+4nodhlMrwN3HupfaXj3zkGo= +github.com/shurcooL/graphql v0.0.0-20181231061246-d48a9a75455f h1:tygelZueB1EtXkPI6mQ4o9DQ0+FKW41hTbunoXZCTqk= +github.com/shurcooL/graphql v0.0.0-20181231061246-d48a9a75455f/go.mod h1:AuYgA5Kyo4c7HfUmvRGs/6rGlMMV/6B1bVnB9JxJEEg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7 h1:rTIdg5QFRR7XCaK4LCjBiPbx8j4DQRpdYMnGn/bJUEU= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80 h1:Ao/3l156eZf2AW5wK8a7/smtodRU+gha3+BeqJ69lRk= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/oauth2 v0.0.0-20181031022657-8527f56f7107 h1:63fpDttzclb8owmRoxSaFNbnT1CG25L0Yvnhh9lU1SE= -golang.org/x/oauth2 v0.0.0-20181031022657-8527f56f7107/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297 h1:k7pJ2yAPLPgbskkFdhRCsA77k2fySZ1zf2zCjvQCiIM= +golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f h1:wMNYb4v58l5UBM7MYRLPG6ZhfOqbKu7X5eyFl8ZhKvA= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb h1:fgwFCsaw9buMuxNd6+DQfAuSFqbNiQZpcgJQAgJsK6k= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190804053845-51ab0e2deafa h1:KIDDMLT1O0Nr7TSxp8xM5tJcdn8tgyAONntO829og1M= -golang.org/x/sys v0.0.0-20190804053845-51ab0e2deafa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456 h1:ng0gs1AKnRRuEMZoTLLlbOd+C17zUDepwGQBb/n+JVg= +golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190706070813-72ffa07ba3db h1:9hRk1xeL9LTT3yX/941DqeBz87XgHAQuj+TbimYJuiw= golang.org/x/tools v0.0.0-20190706070813-72ffa07ba3db/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= -golang.org/x/tools v0.0.0-20190806215303-88ddfcebc769 h1:D/+0wZ7qKh5vQqpbxJGPnaMv1tuCCKmn6heUpPt3FOk= -golang.org/x/tools v0.0.0-20190806215303-88ddfcebc769/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190829160515-d151469ab045 h1:o+pIF6uzINCXKaUZDQ59OMBSBPTSh56PpddD7XqAQmo= +golang.org/x/tools v0.0.0-20190829160515-d151469ab045/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7 h1:9zdDQZ7Thm29KFXgAX/+yaf3eVbP7djjWp/dXAppNCc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/appengine v1.2.0 h1:S0iUepdCWODXRvtE+gcRDd15L+k+k1AiHlMiMjefH24= -google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.2 h1:j8RI1yW0SkI+paT6uGwMlrMI/6zwYA6/CFil8rxOzGI= +google.golang.org/appengine v1.6.2/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= diff --git a/pullrequest/functional_test.go b/pullrequest/functional_test.go index fe3997f..acf1fb5 100644 --- a/pullrequest/functional_test.go +++ b/pullrequest/functional_test.go @@ -593,17 +593,17 @@ func TestFiles(t *testing.T) { }, expect: true, }, - /* { - description: "no match txt files @ root level", - patterns: []string{"*.txt"}, - invert: false, - pull: pullrequest.PullRequest{ - Files: []string{ - "test/file2.txt", - }, + /*{ + description: "no match txt files @ root level", + patterns: []string{"*.txt"}, + invert: false, + pull: pullrequest.PullRequest{ + Files: []string{ + "test/file2.txt", }, - expect: false, - },*/ + }, + expect: false, + },*/ { description: "match txt files at any level", patterns: []string{"**/*.txt"}, @@ -629,19 +629,19 @@ func TestFiles(t *testing.T) { }, expect: true, }, - /* { - description: "no match any file in test dir", - patterns: []string{"test/*"}, - invert: false, - pull: pullrequest.PullRequest{ - Files: []string{ - "file1.txt", - "test/testing/file2.txt", - "test/testing/tested/file2.txt", - }, + /*{ + description: "no match any file in test dir", + patterns: []string{"test/*"}, + invert: false, + pull: pullrequest.PullRequest{ + Files: []string{ + "file1.txt", + "test/testing/file2.txt", + "test/testing/tested/file2.txt", }, - expect: false, - },*/ + }, + expect: false, + },*/ { description: "match any file recursively in test dir", patterns: []string{"test/**"}, @@ -668,6 +668,30 @@ func TestFiles(t *testing.T) { }, expect: true, }, + { + description: "match /**/*", + patterns: []string{"docode/src/do/teams/cns/network/ha-agent/**/*"}, + invert: false, + pull: pullrequest.PullRequest{ + Files: []string{ + "docode/src/do/teams/cns/network/ha-agent/README.md", + "docode/src/do/teams/cns/network/ha-agent/ci/pipeline.yml", + }, + }, + expect: true, + }, + { + description: "match multiple files 2", + patterns: []string{"docode/src/do/teams/cns/network/ha-agent/**/*", "docode/src/do/teams/cns/network/ha-agent/*"}, + invert: false, + pull: pullrequest.PullRequest{ + Files: []string{ + "docode/src/do/teams/cns/network/ha-agent/README.md", + "docode/src/do/teams/cns/network/ha-agent/ci/pipeline.yml", + }, + }, + expect: true, + }, } for _, tc := range tests {