@@ -30,7 +30,7 @@ func TestRepoConstraintBaseURL(t *testing.T) {
3030func TestFetchConstraintsNoSourceConfigured (t * testing.T ) {
3131 // An empty base URL means no constraint host is configured; it must classify as
3232 // E_FETCH (surfaced at the fetch phase) and name the env var to set.
33- _ , err := FetchConstraints (t .Context (), "" , "serverless/serverless-v4" , t .TempDir ())
33+ _ , err := FetchConstraints (t .Context (), "" , "serverless/serverless-v4" , t .TempDir (), true )
3434 var pe * PipelineError
3535 require .ErrorAs (t , err , & pe )
3636 assert .Equal (t , ErrFetch , pe .Code )
@@ -116,14 +116,31 @@ func TestFetchConstraintsCreatesCacheDir(t *testing.T) {
116116 }))
117117 defer srv .Close ()
118118
119- _ , err := FetchConstraints (t .Context (), srv .URL , "serverless/serverless-v4" , cacheDir )
119+ _ , err := FetchConstraints (t .Context (), srv .URL , "serverless/serverless-v4" , cacheDir , true )
120120 require .NoError (t , err )
121121 // The cache file was written into the freshly created directory.
122122 written , err := os .ReadFile (filepath .Join (cacheDir , cacheFileName ("serverless/serverless-v4" )))
123123 require .NoError (t , err )
124124 assert .Equal (t , sampleToml , string (written ))
125125}
126126
127+ func TestFetchConstraintsSkipsCacheWriteWhenDisabled (t * testing.T ) {
128+ // With writeCache=false (the --check dry-run path), a successful live fetch
129+ // must not write anything to cacheDir.
130+ cacheDir := t .TempDir ()
131+ srv := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
132+ _ , _ = w .Write ([]byte (sampleToml ))
133+ }))
134+ defer srv .Close ()
135+
136+ c , err := FetchConstraints (t .Context (), srv .URL , "serverless/serverless-v4" , cacheDir , false )
137+ require .NoError (t , err )
138+ assert .False (t , c .FromCache )
139+ entries , err := os .ReadDir (cacheDir )
140+ require .NoError (t , err )
141+ assert .Empty (t , entries , "no cache file should be written under --check" )
142+ }
143+
127144func TestCacheFileNameInjective (t * testing.T ) {
128145 // Distinct env keys that flatten to the same slug must not collide, so a
129146 // cache hit can never serve another environment's constraints.
@@ -140,7 +157,7 @@ func TestFetchConstraintsHTTP(t *testing.T) {
140157 }))
141158 defer srv .Close ()
142159
143- c , err := FetchConstraints (t .Context (), srv .URL , "serverless/serverless-v4" , t .TempDir ())
160+ c , err := FetchConstraints (t .Context (), srv .URL , "serverless/serverless-v4" , t .TempDir (), true )
144161 require .NoError (t , err )
145162 assert .False (t , c .FromCache )
146163 assert .Equal (t , "databricks-connect~=17.2.0" , c .DatabricksConnect )
@@ -155,7 +172,7 @@ func TestFetchConstraintsEnvKeyNotFound(t *testing.T) {
155172 }))
156173 defer srv .Close ()
157174
158- _ , err := FetchConstraints (t .Context (), srv .URL , "dbr/99.9.x-scala2.12" , t .TempDir ())
175+ _ , err := FetchConstraints (t .Context (), srv .URL , "dbr/99.9.x-scala2.12" , t .TempDir (), true )
159176 var pe * PipelineError
160177 require .ErrorAs (t , err , & pe )
161178 assert .Equal (t , ErrEnvUnsupported , pe .Code )
@@ -167,7 +184,7 @@ func TestFetchConstraintsTransportFailureNoCache(t *testing.T) {
167184 url := down .URL
168185 down .Close ()
169186
170- _ , err := FetchConstraints (t .Context (), url , "serverless/serverless-v4" , t .TempDir ())
187+ _ , err := FetchConstraints (t .Context (), url , "serverless/serverless-v4" , t .TempDir (), true )
171188 var pe * PipelineError
172189 require .ErrorAs (t , err , & pe )
173190 assert .Equal (t , ErrFetch , pe .Code )
@@ -182,7 +199,7 @@ func TestFetchConstraintsRejectsOversizedBody(t *testing.T) {
182199 }))
183200 defer srv .Close ()
184201
185- _ , err := FetchConstraints (t .Context (), srv .URL , "serverless/serverless-v4" , t .TempDir ())
202+ _ , err := FetchConstraints (t .Context (), srv .URL , "serverless/serverless-v4" , t .TempDir (), true )
186203 var pe * PipelineError
187204 require .ErrorAs (t , err , & pe )
188205 assert .Equal (t , ErrFetch , pe .Code )
@@ -194,12 +211,12 @@ func TestFetchConstraintsFallsBackToCache(t *testing.T) {
194211 good := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
195212 _ , _ = w .Write ([]byte (sampleToml ))
196213 }))
197- _ , err := FetchConstraints (t .Context (), good .URL , "serverless/serverless-v4" , cacheDir )
214+ _ , err := FetchConstraints (t .Context (), good .URL , "serverless/serverless-v4" , cacheDir , true )
198215 require .NoError (t , err )
199216 good .Close ()
200217
201218 // Now the server is down; fetch must serve the cache.
202- c , err := FetchConstraints (t .Context (), good .URL , "serverless/serverless-v4" , cacheDir )
219+ c , err := FetchConstraints (t .Context (), good .URL , "serverless/serverless-v4" , cacheDir , true )
203220 require .NoError (t , err )
204221 assert .True (t , c .FromCache )
205222}
0 commit comments