@@ -6,13 +6,17 @@ import (
66 "net/http"
77 "net/http/httptest"
88 "net/url"
9+ "os"
10+ "path/filepath"
911 "strings"
1012 "testing"
1113
1214 "github.com/go-openapi/runtime"
1315 apiClient "github.com/go-openapi/runtime/client"
1416 "github.com/go-openapi/strfmt"
17+ "github.com/netlify/open-api/go/models"
1518 "github.com/netlify/open-api/go/plumbing/operations"
19+ "github.com/stretchr/testify/assert"
1620 "github.com/stretchr/testify/require"
1721)
1822
@@ -131,6 +135,42 @@ func TestConcurrentFileUpload(t *testing.T) {
131135 }
132136}
133137
138+ func TestWalk_IgnoreNodeModulesInRoot (t * testing.T ) {
139+ dir , err := ioutil .TempDir ("" , "deploy" )
140+ require .Nil (t , err )
141+ defer os .RemoveAll (dir )
142+
143+ err = os .Mkdir (filepath .Join (dir , "node_modules" ), os .ModePerm )
144+ require .Nil (t , err )
145+ err = ioutil .WriteFile (filepath .Join (dir , "node_modules" , "root-package" ), []byte {}, 0644 )
146+ require .Nil (t , err )
147+
148+ err = os .MkdirAll (filepath .Join (dir , "more" , "node_modules" ), os .ModePerm )
149+ require .Nil (t , err )
150+ err = ioutil .WriteFile (filepath .Join (dir , "more" , "node_modules" , "inner-package" ), []byte {}, 0644 )
151+ require .Nil (t , err )
152+
153+ files , err := walk (dir , mockObserver {}, false )
154+ require .Nil (t , err )
155+
156+ // When deploy directory != build directory, always deploy node_modules.
157+ assert .NotNil (t , files .Files ["node_modules/root-package" ])
158+ assert .NotNil (t , files .Files ["more/node_modules/inner-package" ])
159+
160+ cwd , err := os .Getwd ()
161+ require .Nil (t , err )
162+ err = os .Chdir (dir )
163+ require .Nil (t , err )
164+ defer os .Chdir (cwd )
165+
166+ files , err = walk (dir , mockObserver {}, false )
167+ require .Nil (t , err )
168+
169+ // When deploy directory == build directory, ignore node_modules in deploy directory root.
170+ assert .Nil (t , files .Files ["node_modules/root-package" ])
171+ assert .NotNil (t , files .Files ["more/node_modules/inner-package" ])
172+ }
173+
134174func TestReadZipRuntime (t * testing.T ) {
135175 runtime , err := readZipRuntime ("../internal/data/hello-rs-function-test.zip" )
136176 if err != nil {
@@ -141,3 +181,18 @@ func TestReadZipRuntime(t *testing.T) {
141181 t .Fatalf ("unexpected runtime value, expected='rs', got='%s'" , runtime )
142182 }
143183}
184+
185+ type mockObserver struct {}
186+
187+ func (m mockObserver ) OnSetupWalk () error { return nil }
188+ func (m mockObserver ) OnSuccessfulStep (* FileBundle ) error { return nil }
189+ func (m mockObserver ) OnSuccessfulWalk (* models.DeployFiles ) error { return nil }
190+ func (m mockObserver ) OnFailedWalk () {}
191+
192+ func (m mockObserver ) OnSetupDelta (* models.DeployFiles ) error { return nil }
193+ func (m mockObserver ) OnSuccessfulDelta (* models.DeployFiles , * models.Deploy ) error { return nil }
194+ func (m mockObserver ) OnFailedDelta (* models.DeployFiles ) {}
195+
196+ func (m mockObserver ) OnSetupUpload (* FileBundle ) error { return nil }
197+ func (m mockObserver ) OnSuccessfulUpload (* FileBundle ) error { return nil }
198+ func (m mockObserver ) OnFailedUpload (* FileBundle ) {}
0 commit comments