File tree Expand file tree Collapse file tree 2 files changed +90
-0
lines changed Expand file tree Collapse file tree 2 files changed +90
-0
lines changed Original file line number Diff line number Diff line change
1
+ package github
2
+
3
+ import (
4
+ "errors"
5
+ "fmt"
6
+ "strings"
7
+ )
8
+
9
+ type Repo struct {
10
+ Owner string `json:"owner"`
11
+ Repo string `json:"repo"`
12
+ }
13
+
14
+ var ErrInvalidRepository = errors .New ("invalid repository" )
15
+
16
+ func ParseRepo (s string ) (Repo , error ) {
17
+ parts := strings .Split (s , "/" )
18
+ if len (parts ) != 2 || parts [0 ] == "" || parts [1 ] == "" {
19
+ return Repo {}, fmt .Errorf ("%w: %s" , ErrInvalidRepository , s )
20
+ }
21
+
22
+ return Repo {
23
+ Owner : parts [0 ],
24
+ Repo : parts [1 ],
25
+ }, nil
26
+ }
27
+
28
+ func (r Repo ) String () string {
29
+ return fmt .Sprintf ("%s/%s" , r .Owner , r .Repo )
30
+ }
31
+
32
+ func (r Repo ) PullsEndpoint () string {
33
+ return fmt .Sprintf ("repos/%s/%s/pulls?state=open" , r .Owner , r .Repo )
34
+ }
Original file line number Diff line number Diff line change
1
+ package github
2
+
3
+ import (
4
+ "errors"
5
+ "testing"
6
+ )
7
+
8
+ func TestParseRepo (t * testing.T ) {
9
+ t .Parallel ()
10
+
11
+ tests := []struct {
12
+ repo string
13
+ err error
14
+ want Repo
15
+ }{
16
+ {
17
+ err : ErrInvalidRepository ,
18
+ },
19
+ {
20
+ repo : "owner" ,
21
+ err : ErrInvalidRepository ,
22
+ },
23
+ {
24
+ repo : "/repo" ,
25
+ err : ErrInvalidRepository ,
26
+ },
27
+ {
28
+ repo : "/" ,
29
+ err : ErrInvalidRepository ,
30
+ },
31
+
32
+ {
33
+ repo : "owner/repo" ,
34
+ want : Repo {Owner : "owner" , Repo : "repo" },
35
+ },
36
+ }
37
+
38
+ for _ , test := range tests {
39
+ t .Run ("" , func (t * testing.T ) {
40
+ t .Parallel ()
41
+
42
+ got , err := ParseRepo (test .repo )
43
+ if ! errors .Is (err , test .err ) {
44
+ t .Errorf ("want %q, got %q" , test .err , err )
45
+ }
46
+
47
+ if got .Owner != test .want .Owner {
48
+ t .Errorf ("want owner %s, got %s" , test .want .Owner , got .Owner )
49
+ }
50
+
51
+ if got .Repo != test .want .Repo {
52
+ t .Errorf ("want owner %s, got %s" , test .want .Repo , got .Repo )
53
+ }
54
+ })
55
+ }
56
+ }
You can’t perform that action at this time.
0 commit comments