mirror of
https://github.com/gogrlx/snack.git
synced 2026-04-02 05:08:42 -07:00
- apk: Info test uses busybox (pre-installed) instead of curl (not installed) - apk: LatestVersion test uses tree (installed during test) - dpkg: Owner test uses /usr/bin/bash (not /bin/bash symlink) - flatpak: List test checks both Name and Application ID fields - dnf: pin Fedora to 41 (dnf4); dnf5 has incompatible output format
66 lines
1.4 KiB
Go
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/bash")
|
|
require.NoError(t, err)
|
|
assert.NotEmpty(t, owner)
|
|
|
|
files, err := fo.FileList(ctx, "bash")
|
|
require.NoError(t, err)
|
|
assert.NotEmpty(t, files)
|
|
}
|
|
})
|
|
}
|