diff options
| -rw-r--r-- | examples/examples.go | 5 | ||||
| -rw-r--r-- | internal/resource/pkg/dnf_test.go | 38 |
2 files changed, 38 insertions, 5 deletions
diff --git a/examples/examples.go b/examples/examples.go index 51508a4..9fd9e40 100644 --- a/examples/examples.go +++ b/examples/examples.go @@ -67,5 +67,10 @@ func Run() error { _ = os.Link("/tmp/gonf_hello.txt", "/tmp/gonf_stale_hardlink") Link("/tmp/gonf_stale_hardlink", IsAbsent) + // 13. Package management + Package("tig") // Ensure installed (Present) + Package("vim", IsLatest) // Ensure installed and latest version + NoPackage("nano") // Ensure absent + return Apply() } diff --git a/internal/resource/pkg/dnf_test.go b/internal/resource/pkg/dnf_test.go index e9778dd..6c929f2 100644 --- a/internal/resource/pkg/dnf_test.go +++ b/internal/resource/pkg/dnf_test.go @@ -42,11 +42,39 @@ func TestApplyDNF(t *testing.T) { if err := applyDNF(p); err != nil { t.Errorf("applyDNF Absent failed: %v", err) } + }) + + t.Run("NonExistentPresent", func(t *testing.T) { + pErr := &Package{ + name: "non-existent-package-gonf-12345", + absent: false, + latest: false, + } + if err := applyDNF(pErr); err == nil { + t.Error("applyDNF Present should have failed for non-existent package") + } + }) - // // Restore the package so we don't leave the system in a changed state - // p.absent = false - // if err := applyDNF(p); err != nil { - // t.Errorf("failed to restore package tig after Absent test: %v", err) - // } + t.Run("NonExistentLatest", func(t *testing.T) { + pErr := &Package{ + name: "non-existent-package-gonf-12345", + absent: false, + latest: true, + } + if err := applyDNF(pErr); err == nil { + t.Error("applyDNF Latest should have failed for non-existent package") + } + }) + + t.Run("NonExistentAbsent", func(t *testing.T) { + pErr := &Package{ + name: "non-existent-package-gonf-12345", + absent: true, + latest: false, + } + // dnf remove is typically idempotent; removing a non-existent package should not error. + if err := applyDNF(pErr); err != nil { + t.Errorf("applyDNF Absent should be idempotent for non-existent package, but got error: %v", err) + } }) } |
