package installer import ( "context" "testing" "time" "gitgud.io/mike/mpv-manager/internal/process" "gitgud.io/mike/mpv-manager/pkg/constants" "gitgud.io/mike/mpv-manager/pkg/platform" "github.com/stretchr/testify/require" ) func TestFlathubDiscoveryCancelsBeforeCommit(t *testing.T) { isolateConfig(t) installFakeTools(t, map[string]string{"flatpak": "sleep 30\n"}) li := NewLinuxInstaller(NewInstaller(ReleaseInfo{}, t.TempDir()), &platform.Platform{OSType: platform.Linux, DistroFamily: constants.PMFamilyDebian}) ctx, cancel := context.WithTimeout(context.Background(), 50*time.Millisecond) defer cancel() cr := NewCommandRunnerWithContext(ctx, make(chan string, 4096), nil) committed := false cr.SetCommitGuard(func() error { committed = true; return nil }) started := time.Now() err := li.InstallFlatpakWithOutput(cr, constants.FlatpakCelluloid, constants.UITypeNone, false) require.ErrorIs(t, err, context.DeadlineExceeded) require.Less(t, time.Since(started), 2*time.Second) require.False(t, committed, "discovery must remain cancelable before destructive work") } func TestFlathubDiscoveryRejectsTruncatedOutput(t *testing.T) { installFakeTools(t, map[string]string{"flatpak": "head -c 1100000 /dev/zero\necho flathub\n"}) li := NewLinuxInstaller(NewInstaller(ReleaseInfo{}, ""), &platform.Platform{OSType: platform.Linux}) enabled, err := li.checkFlathubEnabled(context.Background()) require.False(t, enabled) require.ErrorIs(t, err, process.ErrOutputLimit) }