| 639 | } |
| 640 | |
| 641 | func TestSaveWithSymlink(t *testing.T) { |
| 642 | dir := fs.NewDir(t, t.Name(), fs.WithFile("real-config.json", `{}`)) |
| 643 | defer dir.Remove() |
| 644 | |
| 645 | symLink := dir.Join("config.json") |
| 646 | realFile := dir.Join("real-config.json") |
| 647 | err := os.Symlink(realFile, symLink) |
| 648 | assert.NilError(t, err) |
| 649 | |
| 650 | configFile := New(symLink) |
| 651 | |
| 652 | err = configFile.Save() |
| 653 | assert.NilError(t, err) |
| 654 | |
| 655 | fi, err := os.Lstat(symLink) |
| 656 | assert.NilError(t, err) |
| 657 | assert.Assert(t, fi.Mode()&os.ModeSymlink != 0, "expected %s to be a symlink", symLink) |
| 658 | |
| 659 | cfg, err := os.ReadFile(symLink) |
| 660 | assert.NilError(t, err) |
| 661 | assert.Check(t, is.Equal(string(cfg), "{\n \"auths\": {}\n}")) |
| 662 | |
| 663 | cfg, err = os.ReadFile(realFile) |
| 664 | assert.NilError(t, err) |
| 665 | assert.Check(t, is.Equal(string(cfg), "{\n \"auths\": {}\n}")) |
| 666 | } |
| 667 | |
| 668 | func TestSaveWithRelativeSymlink(t *testing.T) { |
| 669 | dir := fs.NewDir(t, t.Name(), fs.WithFile("real-config.json", `{}`)) |