@@ -9,14 +9,11 @@ import (
99 "os"
1010 "regexp"
1111 "testing"
12- "time"
1312
1413 "github.com/coder/envbuilder"
15- "github.com/coder/envbuilder/gittest"
14+ "github.com/coder/envbuilder/testutil/ gittest"
1615 "github.com/go-git/go-billy/v5"
1716 "github.com/go-git/go-billy/v5/memfs"
18- "github.com/go-git/go-git/v5"
19- "github.com/go-git/go-git/v5/plumbing/object"
2017 githttp "github.com/go-git/go-git/v5/plumbing/transport/http"
2118 "github.com/stretchr/testify/require"
2219)
@@ -77,13 +74,16 @@ func TestCloneRepo(t *testing.T) {
7774
7875 // We do not overwrite a repo if one is already present.
7976 t .Run ("AlreadyCloned" , func (t * testing.T ) {
80- srvURL := setupGit (t , tc .srvUsername , tc .srvPassword )
77+ srvFS := memfs .New ()
78+ _ = gittest .NewRepo (t , srvFS , gittest .Commit (t , "README.md" , "Hello, world!" , "Wow!" ))
79+ authMW := gittest .BasicAuthMW (tc .srvUsername , tc .srvPassword )
80+ srv := httptest .NewServer (authMW (gittest .NewServer (srvFS )))
8181 clientFS := memfs .New ()
8282 // A repo already exists!
8383 _ = gittest .NewRepo (t , clientFS )
8484 cloned , err := envbuilder .CloneRepo (context .Background (), envbuilder.CloneRepoOptions {
8585 Path : "/" ,
86- RepoURL : srvURL ,
86+ RepoURL : srv . URL ,
8787 Storage : clientFS ,
8888 })
8989 require .NoError (t , err )
@@ -93,12 +93,15 @@ func TestCloneRepo(t *testing.T) {
9393 // Basic Auth
9494 t .Run ("BasicAuth" , func (t * testing.T ) {
9595 t .Parallel ()
96- srvURL := setupGit (t , tc .srvUsername , tc .srvPassword )
96+ srvFS := memfs .New ()
97+ _ = gittest .NewRepo (t , srvFS , gittest .Commit (t , "README.md" , "Hello, world!" , "Wow!" ))
98+ authMW := gittest .BasicAuthMW (tc .srvUsername , tc .srvPassword )
99+ srv := httptest .NewServer (authMW (gittest .NewServer (srvFS )))
97100 clientFS := memfs .New ()
98101
99102 cloned , err := envbuilder .CloneRepo (context .Background (), envbuilder.CloneRepoOptions {
100103 Path : "/workspace" ,
101- RepoURL : srvURL ,
104+ RepoURL : srv . URL ,
102105 Storage : clientFS ,
103106 RepoAuth : & githttp.BasicAuth {
104107 Username : tc .username ,
@@ -117,14 +120,18 @@ func TestCloneRepo(t *testing.T) {
117120 require .Equal (t , "Hello, world!" , readme )
118121 gitConfig := mustRead (t , clientFS , "/workspace/.git/config" )
119122 // Ensure we do not modify the git URL that folks pass in.
120- require .Regexp (t , fmt .Sprintf (`(?m)^\s+url\s+=\s+%s\s*$` , regexp .QuoteMeta (srvURL )), gitConfig )
123+ require .Regexp (t , fmt .Sprintf (`(?m)^\s+url\s+=\s+%s\s*$` , regexp .QuoteMeta (srv . URL )), gitConfig )
121124 })
122125
123126 // In-URL-style auth e.g. http://user:password@host:port
124127 t .Run ("InURL" , func (t * testing.T ) {
125128 t .Parallel ()
126- srvURL := setupGit (t , tc .srvUsername , tc .srvPassword )
127- authURL , err := url .Parse (srvURL )
129+ srvFS := memfs .New ()
130+ _ = gittest .NewRepo (t , srvFS , gittest .Commit (t , "README.md" , "Hello, world!" , "Wow!" ))
131+ authMW := gittest .BasicAuthMW (tc .srvUsername , tc .srvPassword )
132+ srv := httptest .NewServer (authMW (gittest .NewServer (srvFS )))
133+
134+ authURL , err := url .Parse (srv .URL )
128135 require .NoError (t , err )
129136 authURL .User = url .UserPassword (tc .username , tc .password )
130137 clientFS := memfs .New ()
@@ -160,28 +167,3 @@ func mustRead(t *testing.T, fs billy.Filesystem, path string) string {
160167 require .NoError (t , err )
161168 return string (content )
162169}
163-
164- func setupGit (t * testing.T , user , pass string ) (url string ) {
165- serverFS := memfs .New ()
166- repo := gittest .NewRepo (t , serverFS )
167- tree , err := repo .Worktree ()
168- require .NoError (t , err )
169-
170- gittest .WriteFile (t , serverFS , "README.md" , "Hello, world!" )
171- _ , err = tree .Add ("README.md" )
172- require .NoError (t , err )
173- commit , err := tree .Commit ("Wow!" , & git.CommitOptions {
174- Author : & object.Signature {
175- Name : "Example" ,
176- Email : "in@tests.com" ,
177- When : time .Now (),
178- },
179- })
180- require .NoError (t , err )
181- _ , err = repo .CommitObject (commit )
182- require .NoError (t , err )
183-
184- authMW := gittest .BasicAuthMW (user , pass )
185- srv := httptest .NewServer (authMW (gittest .NewServer (serverFS )))
186- return srv .URL
187- }
0 commit comments