@@ -273,7 +273,7 @@ func TestResolversForTargetHandlesOptionalRequiredAndURLPolicies(t *testing.T) {
273273 }
274274}
275275
276- func TestResolversForTargetRejectsSymlinksOnlyForAutomaticSelection (t * testing.T ) {
276+ func TestResolversForTargetIgnoresAutomaticSymlinksAndAllowsExplicitSelection (t * testing.T ) {
277277 if runtime .GOOS == "windows" {
278278 t .Skip ("symlink creation requires elevated privileges on Windows" )
279279 }
@@ -302,11 +302,21 @@ func TestResolversForTargetRejectsSymlinksOnlyForAutomaticSelection(t *testing.T
302302 }
303303 target := sdk.ExecutionTarget {Kind : targetKind , Location : root }
304304
305- if _ , err := ResolversForTarget ("auto" , target , nil ); err == nil ||
306- ! strings .Contains (err .Error (), "uses symbolic link" ) {
307- t .Fatalf ("automatic symlink error = %v" , err )
305+ core , logs := observer .New (zap .WarnLevel )
306+ result , err := ResolversForTarget ("auto" , target , zap .New (core ))
307+ if err != nil || len (result .Resolvers ) != 0 || result .Path != "" {
308+ t .Fatalf ("automatic symlink result = %#v, %v" , result , err )
308309 }
309- result , err := ResolversForTarget (link , target , nil )
310+ warnings := logs .FilterMessage ("baseline: ignored linked project policy" )
311+ if warnings .Len () != 1 {
312+ t .Fatalf ("automatic symlink warnings = %#v" , logs .All ())
313+ }
314+ fields := warnings .All ()[0 ].ContextMap ()
315+ if fields ["path" ] != link || fields ["target_kind" ] != string (targetKind ) ||
316+ ! strings .Contains (fmt .Sprint (fields ["error" ]), "resolves through" ) {
317+ t .Fatalf ("automatic symlink warning fields = %#v" , fields )
318+ }
319+ result , err = ResolversForTarget (link , target , nil )
310320 if err != nil || len (result .Resolvers ) != 1 || result .Automatic {
311321 t .Fatalf ("explicit trusted symlink = %#v, %v" , result , err )
312322 }
@@ -323,9 +333,13 @@ func TestResolversForTargetRejectsSymlinksOnlyForAutomaticSelection(t *testing.T
323333 }
324334 target := sdk.ExecutionTarget {Kind : targetKind , Location : root }
325335
326- if _ , err := ResolversForTarget ("" , target , nil ); err == nil ||
327- ! strings .Contains (err .Error (), "uses symbolic link" ) {
328- t .Fatalf ("automatic directory symlink error = %v" , err )
336+ core , logs := observer .New (zap .WarnLevel )
337+ result , err := ResolversForTarget ("" , target , zap .New (core ))
338+ if err != nil || len (result .Resolvers ) != 0 || result .Path != "" {
339+ t .Fatalf ("automatic directory symlink result = %#v, %v" , result , err )
340+ }
341+ if logs .FilterMessage ("baseline: ignored linked project policy" ).Len () != 1 {
342+ t .Fatalf ("automatic directory symlink warnings = %#v" , logs .All ())
329343 }
330344 })
331345 }
0 commit comments