diff options
| author | Paul Buetow <paul@buetow.org> | 2026-07-05 11:25:57 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-07-05 11:25:57 +0300 |
| commit | 4c5b95d5e3811025e2148a6f2a059738e79ca2c9 (patch) | |
| tree | e0aaaef14e1ed6fc0d78c460b671289e39e94c73 /internal/resource/link | |
| parent | 5256a4d1e5a56510758bfac710ba2ad2a45af66e (diff) | |
add tests for repository's Apply
Diffstat (limited to 'internal/resource/link')
| -rw-r--r-- | internal/resource/link/link.go | 3 | ||||
| -rw-r--r-- | internal/resource/link/link_test.go | 32 |
2 files changed, 33 insertions, 2 deletions
diff --git a/internal/resource/link/link.go b/internal/resource/link/link.go index 8600166..0e5582c 100644 --- a/internal/resource/link/link.go +++ b/internal/resource/link/link.go @@ -83,8 +83,7 @@ func (l *Link) resourceType() string { // registering it. Used by other resource packages (e.g. dir) to recreate an // individual symlink without it becoming its own top-level resource. func Ensure(path string, opts ...opt.Option) error { - build(path, opts...) - return nil + return build(path, opts...).apply() } func Have(path string, opts ...opt.Option) resource.Resource { diff --git a/internal/resource/link/link_test.go b/internal/resource/link/link_test.go index a892527..20542bd 100644 --- a/internal/resource/link/link_test.go +++ b/internal/resource/link/link_test.go @@ -5,10 +5,12 @@ import ( "path/filepath" "testing" + "codeberg.org/snonux/gonf/internal/resource" . "codeberg.org/snonux/gonf/internal/resource/opt" ) func TestHaveSymlinkCreateAndIdempotent(t *testing.T) { + resource.ResetRepository() dir := t.TempDir() target := filepath.Join(dir, "target.txt") link := filepath.Join(dir, "link.txt") @@ -17,6 +19,9 @@ func TestHaveSymlinkCreateAndIdempotent(t *testing.T) { } Have(link, WithSymlink(target)) + if err := resource.Apply(); err != nil { + t.Fatalf("Apply failed: %v", err) + } got, err := os.Readlink(link) if err != nil { t.Fatalf("readlink: %v", err) @@ -34,6 +39,7 @@ func TestHaveSymlinkCreateAndIdempotent(t *testing.T) { } func TestHaveSymlinkRepoints(t *testing.T) { + resource.ResetRepository() dir := t.TempDir() old := filepath.Join(dir, "old.txt") newT := filepath.Join(dir, "new.txt") @@ -48,6 +54,9 @@ func TestHaveSymlinkRepoints(t *testing.T) { } Have(link, WithSymlink(newT)) + if err := resource.Apply(); err != nil { + t.Fatalf("Apply failed: %v", err) + } got, err := os.Readlink(link) if err != nil { t.Fatal(err) @@ -58,6 +67,7 @@ func TestHaveSymlinkRepoints(t *testing.T) { } func TestHaveSymlinkMovesRealFileAside(t *testing.T) { + resource.ResetRepository() dir := t.TempDir() target := filepath.Join(dir, "target.txt") link := filepath.Join(dir, "real") @@ -69,6 +79,9 @@ func TestHaveSymlinkMovesRealFileAside(t *testing.T) { } Have(link, WithSymlink(target)) + if err := resource.Apply(); err != nil { + t.Fatalf("Apply failed: %v", err) + } got, err := os.Readlink(link) if err != nil { @@ -83,6 +96,7 @@ func TestHaveSymlinkMovesRealFileAside(t *testing.T) { } func TestHaveHardlinkCreateAndIdempotent(t *testing.T) { + resource.ResetRepository() dir := t.TempDir() target := filepath.Join(dir, "target.txt") link := filepath.Join(dir, "link.txt") @@ -91,6 +105,9 @@ func TestHaveHardlinkCreateAndIdempotent(t *testing.T) { } Have(link, WithHardlink(target)) + if err := resource.Apply(); err != nil { + t.Fatalf("Apply failed: %v", err) + } ti, err := os.Stat(target) if err != nil { @@ -113,6 +130,7 @@ func TestHaveHardlinkCreateAndIdempotent(t *testing.T) { } func TestHaveHardlinkMovesRealFileAside(t *testing.T) { + resource.ResetRepository() dir := t.TempDir() target := filepath.Join(dir, "target.txt") link := filepath.Join(dir, "real") @@ -124,6 +142,9 @@ func TestHaveHardlinkMovesRealFileAside(t *testing.T) { } Have(link, WithHardlink(target)) + if err := resource.Apply(); err != nil { + t.Fatalf("Apply failed: %v", err) + } ti, err := os.Stat(target) if err != nil { @@ -142,6 +163,7 @@ func TestHaveHardlinkMovesRealFileAside(t *testing.T) { } func TestHaveHardlinkMissingTarget(t *testing.T) { + resource.ResetRepository() dir := t.TempDir() link := filepath.Join(dir, "link") if err := Ensure(link, WithHardlink(filepath.Join(dir, "nope"))); err == nil { @@ -150,6 +172,7 @@ func TestHaveHardlinkMissingTarget(t *testing.T) { } func TestHaveAbsentSymlink(t *testing.T) { + resource.ResetRepository() dir := t.TempDir() target := filepath.Join(dir, "target.txt") link := filepath.Join(dir, "link.txt") @@ -161,6 +184,9 @@ func TestHaveAbsentSymlink(t *testing.T) { } Have(link, IsAbsent()) + if err := resource.Apply(); err != nil { + t.Fatalf("Apply failed: %v", err) + } if _, err := os.Lstat(link); !os.IsNotExist(err) { t.Errorf("expected %s to be removed", link) } @@ -173,6 +199,7 @@ func TestHaveAbsentSymlink(t *testing.T) { } func TestAbsentSymlink(t *testing.T) { + resource.ResetRepository() dir := t.TempDir() target := filepath.Join(dir, "target.txt") link := filepath.Join(dir, "link.txt") @@ -184,6 +211,9 @@ func TestAbsentSymlink(t *testing.T) { } Absent(link) + if err := resource.Apply(); err != nil { + t.Fatalf("Apply failed: %v", err) + } if _, err := os.Lstat(link); !os.IsNotExist(err) { t.Errorf("expected %s to be removed", link) } @@ -196,6 +226,7 @@ func TestAbsentSymlink(t *testing.T) { } func TestHaveAbsentWithoutKindRegistersGenericLink(t *testing.T) { + resource.ResetRepository() dir := t.TempDir() path := filepath.Join(dir, "whatever") @@ -206,6 +237,7 @@ func TestHaveAbsentWithoutKindRegistersGenericLink(t *testing.T) { } func TestBuildRequiresKindOrAbsent(t *testing.T) { + resource.ResetRepository() dir := t.TempDir() path := filepath.Join(dir, "nope") if err := Ensure(path); err == nil { |
