mirror of
https://github.com/gogrlx/snack.git
synced 2026-04-02 05:08:42 -07:00
test: exhaustive integration tests with codecov
- Root package unit tests: Targets, TargetNames, ApplyOptions, error sentinels - Every provider integration test now covers: - All Manager interface methods (positive + negative cases) - GetCapabilities verification (assert expected interfaces) - VersionQuerier: LatestVersion, ListUpgrades, UpgradeAvailable, VersionCmp - Holder: Hold, ListHeld, Unhold (apt, dnf) - Cleaner: Autoremove, Clean - FileOwner: FileList, Owner (+ not-found cases) - RepoManager: ListRepos (apt, dnf, flatpak) - KeyManager: ListKeys (apt, dnf) - Grouper: GroupList, GroupInfo (pacman, dnf) - NameNormalizer: NormalizeName, ParseArch table tests (apt, dpkg, dnf, rpm) - Containertest matrix: 5 distros (debian, alpine, arch, fedora39, fedora-latest) - CI: coverage profiles uploaded per-job, merged in codecov job - Added .gitignore for coverage files
This commit is contained in:
@@ -12,18 +12,53 @@ import (
|
||||
)
|
||||
|
||||
func TestIntegration_Detect(t *testing.T) {
|
||||
mgr, err := detect.Default()
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, mgr)
|
||||
t.Logf("Detected: %s", mgr.Name())
|
||||
t.Run("Default", func(t *testing.T) {
|
||||
mgr, err := detect.Default()
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, mgr)
|
||||
assert.NotEmpty(t, mgr.Name())
|
||||
assert.True(t, mgr.Available())
|
||||
t.Logf("Detected default: %s", mgr.Name())
|
||||
})
|
||||
|
||||
all := detect.All()
|
||||
require.NotEmpty(t, all)
|
||||
for _, m := range all {
|
||||
t.Logf("Available: %s", m.Name())
|
||||
}
|
||||
t.Run("All", func(t *testing.T) {
|
||||
all := detect.All()
|
||||
require.NotEmpty(t, all)
|
||||
for _, m := range all {
|
||||
assert.NotEmpty(t, m.Name())
|
||||
assert.True(t, m.Available())
|
||||
t.Logf("Available: %s", m.Name())
|
||||
}
|
||||
})
|
||||
|
||||
caps := snack.GetCapabilities(mgr)
|
||||
t.Logf("Capabilities: %+v", caps)
|
||||
assert.NotEmpty(t, mgr.Name())
|
||||
t.Run("ByName_Valid", func(t *testing.T) {
|
||||
all := detect.All()
|
||||
require.NotEmpty(t, all)
|
||||
|
||||
// Should be able to find each detected manager by name
|
||||
for _, m := range all {
|
||||
found, err := detect.ByName(m.Name())
|
||||
require.NoError(t, err, "ByName(%s)", m.Name())
|
||||
require.NotNil(t, found)
|
||||
assert.Equal(t, m.Name(), found.Name())
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("ByName_Invalid", func(t *testing.T) {
|
||||
_, err := detect.ByName("xyznonexistentmanager999")
|
||||
assert.Error(t, err)
|
||||
assert.ErrorIs(t, err, snack.ErrManagerNotFound)
|
||||
})
|
||||
|
||||
t.Run("Capabilities", func(t *testing.T) {
|
||||
mgr, err := detect.Default()
|
||||
require.NoError(t, err)
|
||||
|
||||
caps := snack.GetCapabilities(mgr)
|
||||
t.Logf("Default manager %s capabilities: %+v", mgr.Name(), caps)
|
||||
|
||||
// Every manager should have at least the base Manager interface
|
||||
// (which isn't in Capabilities, but let's verify some basics)
|
||||
assert.NotEmpty(t, mgr.Name())
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user