Files
snack/flatpak/flatpak_integration_test.go
Tai Groot b443269594 feat: add integration tests and GitHub Actions CI
Add integration test files for all providers (apt, dpkg, pacman, apk,
dnf, rpm, flatpak, snap, pkg, detect) behind the 'integration' build
tag. Tests exercise real package operations: update, search, info,
install, verify, list, remove, and capability interfaces.

Add GitHub Actions workflow running unit tests on ubuntu-latest and
integration tests on Debian, Ubuntu, Fedora, Alpine, Arch Linux, and
Ubuntu+Flatpak containers/runners.
2026-02-26 01:42:19 +00:00

85 lines
2.0 KiB
Go

//go:build integration
package flatpak_test
import (
"context"
"testing"
"github.com/gogrlx/snack"
"github.com/gogrlx/snack/flatpak"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestIntegration_Flatpak(t *testing.T) {
mgr := flatpak.New()
if !mgr.Available() {
t.Skip("flatpak not available — install it first")
}
ctx := context.Background()
t.Run("Update", func(t *testing.T) {
err := mgr.Update(ctx)
require.NoError(t, err)
})
t.Run("RepoManager", func(t *testing.T) {
rm, ok := mgr.(snack.RepoManager)
if !ok {
t.Skip("RepoManager not implemented")
}
repos, err := rm.ListRepos(ctx)
require.NoError(t, err)
found := false
for _, r := range repos {
if r.Name == "flathub" || r.ID == "flathub" {
found = true
break
}
}
assert.True(t, found, "flathub repo should be configured")
})
t.Run("Search", func(t *testing.T) {
pkgs, err := mgr.Search(ctx, "Flatseal")
require.NoError(t, err)
require.NotEmpty(t, pkgs)
})
t.Run("Install", func(t *testing.T) {
err := mgr.Install(ctx, snack.Targets("com.github.tchx84.Flatseal"), snack.WithSudo(), snack.WithAssumeYes())
require.NoError(t, err)
})
t.Run("IsInstalled", func(t *testing.T) {
installed, err := mgr.IsInstalled(ctx, "com.github.tchx84.Flatseal")
require.NoError(t, err)
assert.True(t, installed)
})
t.Run("List", func(t *testing.T) {
pkgs, err := mgr.List(ctx)
require.NoError(t, err)
found := false
for _, p := range pkgs {
if p.Name == "com.github.tchx84.Flatseal" {
found = true
break
}
}
assert.True(t, found, "Flatseal should be in installed list")
})
t.Run("Remove", func(t *testing.T) {
err := mgr.Remove(ctx, snack.Targets("com.github.tchx84.Flatseal"), snack.WithSudo(), snack.WithAssumeYes())
require.NoError(t, err)
})
t.Run("IsInstalled_After_Remove", func(t *testing.T) {
installed, err := mgr.IsInstalled(ctx, "com.github.tchx84.Flatseal")
require.NoError(t, err)
assert.False(t, installed)
})
}