@@ -538,6 +538,34 @@ func TestSaveWithSymlink(t *testing.T) {
538538 assert .Check (t , is .Equal (string (cfg ), "{\n \" auths\" : {}\n }" ))
539539}
540540
541+ func TestSaveWithRelativeSymlink (t * testing.T ) {
542+ dir := fs .NewDir (t , t .Name (), fs .WithFile ("real-config.json" , `{}` ))
543+ defer dir .Remove ()
544+
545+ symLink := dir .Join ("config.json" )
546+ relativeRealFile := "real-config.json"
547+ realFile := dir .Join (relativeRealFile )
548+ err := os .Symlink (relativeRealFile , symLink )
549+ assert .NilError (t , err )
550+
551+ configFile := New (symLink )
552+
553+ err = configFile .Save ()
554+ assert .NilError (t , err )
555+
556+ fi , err := os .Lstat (symLink )
557+ assert .NilError (t , err )
558+ assert .Assert (t , fi .Mode ()& os .ModeSymlink != 0 , "expected %s to be a symlink" , symLink )
559+
560+ cfg , err := os .ReadFile (symLink )
561+ assert .NilError (t , err )
562+ assert .Check (t , is .Equal (string (cfg ), "{\n \" auths\" : {}\n }" ))
563+
564+ cfg , err = os .ReadFile (realFile )
565+ assert .NilError (t , err )
566+ assert .Check (t , is .Equal (string (cfg ), "{\n \" auths\" : {}\n }" ))
567+ }
568+
541569func TestPluginConfig (t * testing.T ) {
542570 configFile := New ("test-plugin" )
543571 defer os .Remove ("test-plugin" )
0 commit comments