From 1f869c88f1e1e0ef746083374df385f1c049730b Mon Sep 17 00:00:00 2001 From: Stefan Hengl Date: Thu, 4 Mar 2021 16:54:45 +0100 Subject: [PATCH 1/2] search: add tests for search_streaming.go Note: This adds a new dependency on autogold to src-cli --- cmd/src/search_stream_test.go | 165 +++++++++++++++++++ cmd/src/testdata/TestCommitTemplate.golden | 6 + cmd/src/testdata/TestFileTemplate.golden | 5 + cmd/src/testdata/TestProgressTemplate.golden | 2 + cmd/src/testdata/TestRepoTemplate.golden | 2 + cmd/src/testdata/TestSymbolTemplate.golden | 5 + go.mod | 9 +- go.sum | 57 +++++-- 8 files changed, 235 insertions(+), 16 deletions(-) create mode 100644 cmd/src/search_stream_test.go create mode 100644 cmd/src/testdata/TestCommitTemplate.golden create mode 100644 cmd/src/testdata/TestFileTemplate.golden create mode 100644 cmd/src/testdata/TestProgressTemplate.golden create mode 100644 cmd/src/testdata/TestRepoTemplate.golden create mode 100644 cmd/src/testdata/TestSymbolTemplate.golden diff --git a/cmd/src/search_stream_test.go b/cmd/src/search_stream_test.go new file mode 100644 index 0000000000..33fd7e25cd --- /dev/null +++ b/cmd/src/search_stream_test.go @@ -0,0 +1,165 @@ +package main + +import ( + "bytes" + "testing" + + "github.com/hexops/autogold" + + "github.com/sourcegraph/src-cli/internal/streaming" +) + +func TestRepoTemplate(t *testing.T) { + v, err := parseTemplate(streamingTemplate) + if err != nil { + t.Fatal(err) + } + + repo := &streaming.EventRepoMatch{ + Type: streaming.RepoMatchType, + Repository: "sourcegraph/sourcegraph", + Branches: []string{}, + } + + got := new(bytes.Buffer) + err = v.ExecuteTemplate(got, "repo", struct { + SourcegraphEndpoint string + *streaming.EventRepoMatch + }{ + SourcegraphEndpoint: "https://sourcegraph.com", + EventRepoMatch: repo, + }) + if err != nil { + t.Fatal(err) + } + + autogold.Equal(t, string(got.Bytes())) +} + +func TestFileTemplate(t *testing.T) { + v, err := parseTemplate(streamingTemplate) + if err != nil { + t.Fatal(err) + } + + file := &streaming.EventFileMatch{ + Type: streaming.FileMatchType, + Path: "path/to/file", + Repository: "org/repo", + Branches: nil, + Version: "", + LineMatches: []streaming.EventLineMatch{ + { + Line: "foo bar", + LineNumber: 4, + OffsetAndLengths: [][2]int32{{4, 3}}, + }, + }, + } + + got := new(bytes.Buffer) + err = v.ExecuteTemplate(got, "file", struct { + Query string + *streaming.EventFileMatch + }{ + Query: "bar", + EventFileMatch: file, + }) + if err != nil { + t.Fatal(err) + } + + autogold.Equal(t, string(got.Bytes())) +} + +func TestSymbolTemplate(t *testing.T) { + v, err := parseTemplate(streamingTemplate) + if err != nil { + t.Fatal(err) + } + + symbol := &streaming.EventSymbolMatch{ + Type: streaming.FileMatchType, + Path: "path/to/file", + Repository: "org/repo", + Branches: nil, + Version: "", + Symbols: []streaming.Symbol{{ + URL: "github.com/sourcegraph/sourcegraph/-/blob/cmd/frontend/graphqlbackend/search_results.go#L1591:26-1591:35", + Name: "doResults", + ContainerName: "", + Kind: "FUNCTION", + }}, + } + + got := new(bytes.Buffer) + err = v.ExecuteTemplate(got, "symbol", struct { + SourcegraphEndpoint string + *streaming.EventSymbolMatch + }{ + SourcegraphEndpoint: "https://sourcegraph.com", + EventSymbolMatch: symbol, + }) + if err != nil { + t.Fatal(err) + } + + autogold.Equal(t, string(got.Bytes())) +} + +func TestCommitTemplate(t *testing.T) { + v, err := parseTemplate(streamingTemplate) + if err != nil { + t.Fatal(err) + } + + commit := &streaming.EventCommitMatch{ + Type: streaming.CommitMatchType, + Icon: "", + Label: "[sourcegraph/sourcegraph-atom](/github.com/sourcegraph/sourcegraph-atom) › [Stephen Gutekanst](/github.com/sourcegraph/sourcegraph-atom/-/commit/5b098d7fed963d88e23057ed99d73d3c7a33ad89): [all: release v1.0.5](/github.com/sourcegraph/sourcegraph-atom/-/commit/5b098d7fed963d88e23057ed99d73d3c7a33ad89)^", + URL: "", + Detail: "", + Content: "```COMMIT_EDITMSG\nfoo bar\n```", + Ranges: [][3]int32{ + {1, 3, 3}, + }, + } + + got := new(bytes.Buffer) + err = v.ExecuteTemplate(got, "commit", struct { + SourcegraphEndpoint string + *streaming.EventCommitMatch + }{ + SourcegraphEndpoint: "https://sourcegraph.com", + EventCommitMatch: commit, + }) + if err != nil { + t.Fatal(err) + } + + autogold.Equal(t, string(got.Bytes())) +} + +func TestProgressTemplate(t *testing.T) { + v, err := parseTemplate(streamingTemplate) + if err != nil { + t.Fatal(err) + } + + repoCount := 42 + progress := streaming.Progress{ + Done: true, + RepositoriesCount: &repoCount, + MatchCount: 17, + DurationMs: 421, + Skipped: nil, + } + + got := new(bytes.Buffer) + err = v.ExecuteTemplate(got, "progress", progress) + if err != nil { + t.Fatal(err) + } + + autogold.Equal(t, string(got.Bytes())) +} diff --git a/cmd/src/testdata/TestCommitTemplate.golden b/cmd/src/testdata/TestCommitTemplate.golden new file mode 100644 index 0000000000..0fc7641044 --- /dev/null +++ b/cmd/src/testdata/TestCommitTemplate.golden @@ -0,0 +1,6 @@ +`(https://sourcegraph.com) +sourcegraph/sourcegraph-atom > Stephen Gutekanst : all: release v1.0.5 (1 match) +-------------------------------------------------------------------------------- + oo bar + +` diff --git a/cmd/src/testdata/TestFileTemplate.golden b/cmd/src/testdata/TestFileTemplate.golden new file mode 100644 index 0000000000..d3f64866dd --- /dev/null +++ b/cmd/src/testdata/TestFileTemplate.golden @@ -0,0 +1,5 @@ +`org/repo › path/to/file (1 match) +-------------------------------------------------------------------------------- +  5 | foo bar + +` diff --git a/cmd/src/testdata/TestProgressTemplate.golden b/cmd/src/testdata/TestProgressTemplate.golden new file mode 100644 index 0000000000..59ca50f74a --- /dev/null +++ b/cmd/src/testdata/TestProgressTemplate.golden @@ -0,0 +1,2 @@ +`✱ 17 results in 421ms from 42 Repositories +` diff --git a/cmd/src/testdata/TestRepoTemplate.golden b/cmd/src/testdata/TestRepoTemplate.golden new file mode 100644 index 0000000000..2a35caeea7 --- /dev/null +++ b/cmd/src/testdata/TestRepoTemplate.golden @@ -0,0 +1,2 @@ +`sourcegraph/sourcegraph (https://sourcegraph.com/sourcegraph/sourcegraph) (1 match) +` diff --git a/cmd/src/testdata/TestSymbolTemplate.golden b/cmd/src/testdata/TestSymbolTemplate.golden new file mode 100644 index 0000000000..7b8c0df410 --- /dev/null +++ b/cmd/src/testdata/TestSymbolTemplate.golden @@ -0,0 +1,5 @@ +`org/repo › path/to/file (1 match) +-------------------------------------------------------------------------------- +doResults(FUNCTION) (https://sourcegraph.com/github.com/sourcegraph/sourcegraph/-/blob/cmd/frontend/graphqlbackend/search_results.go#L1591:26-1591:35) + +` diff --git a/go.mod b/go.mod index 48678ee787..8817d5f348 100644 --- a/go.mod +++ b/go.mod @@ -7,9 +7,10 @@ require ( github.com/dustin/go-humanize v1.0.0 github.com/efritz/pentimento v0.0.0-20190429011147-ade47d831101 github.com/gobwas/glob v0.2.3 - github.com/google/go-cmp v0.5.2 + github.com/google/go-cmp v0.5.4 github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.0 + github.com/hexops/autogold v1.3.0 github.com/jig/teereadcloser v0.0.0-20181016160506-953720c48e05 github.com/json-iterator/go v1.1.10 github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 @@ -26,9 +27,9 @@ require ( github.com/sourcegraph/jsonx v0.0.0-20200629203448-1a936bd500cf github.com/ssor/bom v0.0.0-20170718123548-6386211fdfcf // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect - golang.org/x/net v0.0.0-20200625001655-4c5254603344 - golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e - golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4 + golang.org/x/net v0.0.0-20201021035429-f5854403a974 + golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9 + golang.org/x/sys v0.0.0-20210218084038-e8e29180ff58 gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 jaytaylor.com/html2text v0.0.0-20200412013138-3577fbdbcff7 ) diff --git a/go.sum b/go.sum index 236b4d6364..1b98846cbb 100644 --- a/go.sum +++ b/go.sum @@ -1,6 +1,5 @@ github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= -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= @@ -10,23 +9,34 @@ github.com/efritz/pentimento v0.0.0-20190429011147-ade47d831101 h1:RylpU+KNJJNEJ github.com/efritz/pentimento v0.0.0-20190429011147-ade47d831101/go.mod h1:5ALWO82UZwfAtNRUtwzsWimcrcuYzyieTyyXOXrP6EQ= 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/google/go-cmp v0.4.1 h1:/exdXoGamhu5ONeUJH0deniYLWYvQwW66yvlfiiKTu0= github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.4 h1:L8R9j+yAqZuZjsqh/z+F1NCffTKKLShY6zXTItVIZ8M= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-multierror v1.1.0 h1:B9UzwGQJehnUY1yNrnwREHc3fGbC2xefo8g4TbElacI= github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= +github.com/hexops/autogold v0.8.1/go.mod h1:97HLDXyG23akzAoRYJh/2OBs3kd80eHyKPvZw0S5ZBY= +github.com/hexops/autogold v1.3.0 h1:IEtGNPxBeBu8RMn8eKWh/Ll9dVNgSnJ7bp/qHgMQ14o= +github.com/hexops/autogold v1.3.0/go.mod h1:d4hwi2rid66Sag+BVuHgwakW/EmaFr8vdTSbWDbrDRI= +github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= +github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= +github.com/hexops/valast v1.4.0 h1:sFzyxPDP0riFQUzSBXTCCrAbbIndHPWMndxuEjXdZlc= +github.com/hexops/valast v1.4.0/go.mod h1:uVjKZ0smVuYlgCSPz9NRi5A04sl7lp6GtFWsROKDgEs= github.com/jig/teereadcloser v0.0.0-20181016160506-953720c48e05 h1:dSwwtWuwMyarzsbVWOq4QJ8xVy9wgcNomvWyGtrKe+E= github.com/jig/teereadcloser v0.0.0-20181016160506-953720c48e05/go.mod h1:sRUFlj+HCejvoCRpuhU0EYnNw5FG+YJpz8UFfCf0F2U= github.com/json-iterator/go v1.1.10 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= @@ -38,6 +48,8 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742 h1:Esafd1046DLD github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/neelance/parallel v0.0.0-20160708114440-4de9ce63d14c h1:NZOii9TDGRAfCS5VM16XnF4K7afoLQmIiZX8EkKnxtE= github.com/neelance/parallel v0.0.0-20160708114440-4de9ce63d14c/go.mod h1:eTBvSIlRgLo+CNFFQRQTwUGTZOEdvXIKeZS/xG+D2yU= +github.com/nightlyone/lockfile v1.0.0 h1:RHep2cFKK4PonZJDdEl4GmkabuhbsRMgk/k3uAmxBiA= +github.com/nightlyone/lockfile v1.0.0/go.mod h1:rywoIealpdNse2r832aiD9jRk8ErCatROs6LzC841CI= github.com/nsf/termbox-go v0.0.0-20200418040025-38ba6e5628f1 h1:lh3PyZvY+B9nFliSGTn5uFuqQQJGuNrD0MLCokv09ag= github.com/nsf/termbox-go v0.0.0-20200418040025-38ba6e5628f1/go.mod h1:IuKpRQcYE1Tfu+oAQqaLisqDeXgjyyltCfsaoYN18NQ= github.com/olekukonko/tablewriter v0.0.4 h1:vHD/YYe1Wolo78koG299f7V/VAS08c6IpCLn+Ejf/w8= @@ -48,8 +60,11 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= 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/rogpeppe/go-internal v1.6.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= +github.com/shurcooL/go-goon v0.0.0-20210110234559-7585751d9a17 h1:lRAUE0dIvigSSFAmaM2dfg7OH8T+a8zJ5smEh09a/GI= +github.com/shurcooL/go-goon v0.0.0-20210110234559-7585751d9a17/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= github.com/sourcegraph/campaignutils v0.0.0-20210209103213-27e58c3ce8d3 h1:yXTWFqaMCMgjG3zVRGXjvuaUDfw2XnI6JD5Rh4V04e4= github.com/sourcegraph/campaignutils v0.0.0-20210209103213-27e58c3ce8d3/go.mod h1:xm6i78Mk2t4DBLQDqEFc/3x6IPf7yYZCgbNaTQGhJHA= github.com/sourcegraph/codeintelutils v0.0.0-20210118231003-6698e102a8a1 h1:IPWruUo+BwPJqCHBVgjKxK6zTxMkOhwCSYpQ/jZHG/w= @@ -73,40 +88,55 @@ github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1: github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1 h1:Kvvh58BN8Y9/lBi7hTekvtMpm07eUZ0ck5pRHpsMWrY= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= 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-20190424112056-4829fb13d2c6/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200625001655-4c5254603344 h1:vGXIOMxbNfDTk/aXCmfdLgkrSV+Z2tcbze+pEc3v5W4= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974 h1:IX6qOQeG5uLjB/hjjwjedwfjND0hgjPMMyO1RoIXQNI= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e h1:vcxGaoTs7kV8m5Np9uUNQin4BrLOthgV7252N8V+FwY= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9 h1:SQFwaSi55rU7vdNs9Yr0Z324VNlrF+0wMqRXT4St8ck= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 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-20190428183149-804c0c7841b5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4 h1:5/PjkGUjvEU5Gl6BxmvKRPpqo2uNMv4rcHBMwzk/st8= -golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210218084038-e8e29180ff58 h1:N2Q5yuZ0byDifTuPuxUuOhvRvDfxR4QKSQ99HhdnDQc= +golang.org/x/sys v0.0.0-20210218084038-e8e29180ff58/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190428024724-550556f78a90/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200624163319-25775e59acb7/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20210101214203-2dba1e4ea05c/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0 h1:po9/4sTYwZU9lPhi1tOrb4hCv3qrhiQ77LZfGa2OjwY= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -114,3 +144,6 @@ gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 h1:tQIYjPdBoyREyB9XMu+nnTclp gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= jaytaylor.com/html2text v0.0.0-20200412013138-3577fbdbcff7 h1:mub0MmFLOn8XLikZOAhgLD1kXJq8jgftSrrv7m00xFo= jaytaylor.com/html2text v0.0.0-20200412013138-3577fbdbcff7/go.mod h1:OxvTsCwKosqQ1q7B+8FwXqg4rKZ/UG9dUW+g/VL2xH4= +mvdan.cc/gofumpt v0.0.0-20210107193838-d24d34e18d44/go.mod h1:yXG1r1WqZVKWbVRtBWKWX9+CxGYfA51nSomhM0woR48= +mvdan.cc/gofumpt v0.1.0 h1:hsVv+Y9UsZ/mFZTxJZuHVI6shSQCtzZ11h1JEFPAZLw= +mvdan.cc/gofumpt v0.1.0/go.mod h1:yXG1r1WqZVKWbVRtBWKWX9+CxGYfA51nSomhM0woR48= From 4d3495f19e54f61d1c3d0270bba3e766dd6805e4 Mon Sep 17 00:00:00 2001 From: Stefan Hengl Date: Fri, 5 Mar 2021 09:57:24 +0100 Subject: [PATCH 2/2] more tests --- cmd/src/search_stream_test.go | 33 ++++++++++++++++++++++++ cmd/src/testdata/TestDiffTemplate.golden | 11 ++++++++ 2 files changed, 44 insertions(+) create mode 100644 cmd/src/testdata/TestDiffTemplate.golden diff --git a/cmd/src/search_stream_test.go b/cmd/src/search_stream_test.go index 33fd7e25cd..fd805ff794 100644 --- a/cmd/src/search_stream_test.go +++ b/cmd/src/search_stream_test.go @@ -163,3 +163,36 @@ func TestProgressTemplate(t *testing.T) { autogold.Equal(t, string(got.Bytes())) } + +func TestDiffTemplate(t *testing.T) { + v, err := parseTemplate(streamingTemplate) + if err != nil { + t.Fatal(err) + } + + commit := &streaming.EventCommitMatch{ + Type: streaming.CommitMatchType, + Icon: "", + Label: "[sourcegraph/sourcegraph-atom](/github.com/sourcegraph/sourcegraph-atom) › [Stephen Gutekanst](/github.com/sourcegraph/sourcegraph-atom/-/commit/5b098d7fed963d88e23057ed99d73d3c7a33ad89): [all: release v1.0.5](/github.com/sourcegraph/sourcegraph-atom/-/commit/5b098d7fed963d88e23057ed99d73d3c7a33ad89)^", + URL: "", + Detail: "", + Content: "```diff\nsrc/data.ts src/data.ts\n@@ -0,0 +11,4 @@\n+ return of({\n+ title: 'Acme Corp open-source code search',\n+ summary: 'Instant code search across all Acme Corp open-source code.',\n+ githubOrgs: ['sourcegraph'],\n```", + Ranges: [][3]int32{ + {4, 44, 6}, + }, + } + + got := new(bytes.Buffer) + err = v.ExecuteTemplate(got, "commit", struct { + SourcegraphEndpoint string + *streaming.EventCommitMatch + }{ + SourcegraphEndpoint: "https://sourcegraph.com", + EventCommitMatch: commit, + }) + if err != nil { + t.Fatal(err) + } + + autogold.Equal(t, string(got.Bytes())) +} diff --git a/cmd/src/testdata/TestDiffTemplate.golden b/cmd/src/testdata/TestDiffTemplate.golden new file mode 100644 index 0000000000..27adc02adf --- /dev/null +++ b/cmd/src/testdata/TestDiffTemplate.golden @@ -0,0 +1,11 @@ +`(https://sourcegraph.com) +sourcegraph/sourcegraph-atom > Stephen Gutekanst : all: release v1.0.5 (1 match) +-------------------------------------------------------------------------------- + src/data.ts src/data.ts + @@ -0,0 +11,4 @@ + + return of({ + + title: 'Acme Corp open-source code search', + + summary: 'Instant code search across all Acme Corp open-source code.', + + githubOrgs: ['sourcegraph'], + +`