@@ -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,33 @@ 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 , false )
154+ require .Nil (t , err )
155+ assert .NotNil (t , files .Files ["node_modules/root-package" ])
156+ assert .NotNil (t , files .Files ["more/node_modules/inner-package" ])
157+
158+ // When deploy directory == build directory, ignore node_modules in deploy directory root.
159+ files , err = walk (dir , mockObserver {}, false , true )
160+ require .Nil (t , err )
161+ assert .Nil (t , files .Files ["node_modules/root-package" ])
162+ assert .NotNil (t , files .Files ["more/node_modules/inner-package" ])
163+ }
164+
134165func TestReadZipRuntime (t * testing.T ) {
135166 runtime , err := readZipRuntime ("../internal/data/hello-rs-function-test.zip" )
136167 if err != nil {
@@ -141,3 +172,18 @@ func TestReadZipRuntime(t *testing.T) {
141172 t .Fatalf ("unexpected runtime value, expected='rs', got='%s'" , runtime )
142173 }
143174}
175+
176+ type mockObserver struct {}
177+
178+ func (m mockObserver ) OnSetupWalk () error { return nil }
179+ func (m mockObserver ) OnSuccessfulStep (* FileBundle ) error { return nil }
180+ func (m mockObserver ) OnSuccessfulWalk (* models.DeployFiles ) error { return nil }
181+ func (m mockObserver ) OnFailedWalk () {}
182+
183+ func (m mockObserver ) OnSetupDelta (* models.DeployFiles ) error { return nil }
184+ func (m mockObserver ) OnSuccessfulDelta (* models.DeployFiles , * models.Deploy ) error { return nil }
185+ func (m mockObserver ) OnFailedDelta (* models.DeployFiles ) {}
186+
187+ func (m mockObserver ) OnSetupUpload (* FileBundle ) error { return nil }
188+ func (m mockObserver ) OnSuccessfulUpload (* FileBundle ) error { return nil }
189+ func (m mockObserver ) OnFailedUpload (* FileBundle ) {}
0 commit comments