Files
snack/dpkg/dpkg_integration_test.go
Tai Groot 99dfc80003 fix(ci): pin fedora:39 for dnf4, fix test paths for debian/alpine
- Fedora 40+ ships dnf5 (not 41 as assumed) — pin to 39
- Debian container: /usr/bin/bash doesn't exist, use /usr/bin/dpkg
- Alpine: use busybox for LatestVersion test (always available)
2026-02-26 01:55:24 +00:00

66 lines
1.4 KiB
Go

//go:build integration
package dpkg_test
import (
"context"
"testing"
"github.com/gogrlx/snack"
"github.com/gogrlx/snack/dpkg"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestIntegration_Dpkg(t *testing.T) {
var mgr snack.Manager = dpkg.New()
if !mgr.Available() {
t.Skip("dpkg not available")
}
ctx := context.Background()
t.Run("List", func(t *testing.T) {
pkgs, err := mgr.List(ctx)
require.NoError(t, err)
require.NotEmpty(t, pkgs)
})
t.Run("IsInstalled", func(t *testing.T) {
// bash should always be installed
installed, err := mgr.IsInstalled(ctx, "bash")
require.NoError(t, err)
assert.True(t, installed)
})
t.Run("Version", func(t *testing.T) {
ver, err := mgr.Version(ctx, "bash")
require.NoError(t, err)
assert.NotEmpty(t, ver)
})
t.Run("Info", func(t *testing.T) {
pkg, err := mgr.Info(ctx, "bash")
require.NoError(t, err)
require.NotNil(t, pkg)
assert.Equal(t, "bash", pkg.Name)
})
t.Run("Search", func(t *testing.T) {
pkgs, err := mgr.Search(ctx, "bash")
require.NoError(t, err)
require.NotEmpty(t, pkgs)
})
t.Run("FileOwner", func(t *testing.T) {
if fo, ok := mgr.(snack.FileOwner); ok {
owner, err := fo.Owner(ctx, "/usr/bin/dpkg")
require.NoError(t, err)
assert.NotEmpty(t, owner)
files, err := fo.FileList(ctx, "bash")
require.NoError(t, err)
assert.NotEmpty(t, files)
}
})
}