package uiconfig import ( "gitgud.io/mike/mpv-manager/pkg/config" "gitgud.io/mike/mpv-manager/pkg/modernzconf" "github.com/stretchr/testify/require" "os" "path/filepath" "runtime" "testing" ) func TestOctAuditMigrationRecoveryOverwritesLaterEdits(t *testing.T) { if runtime.GOOS != "linux" { t.Skip("audit reproduction is qualified only for Linux and uses Linux config isolation") } root := t.TempDir() t.Setenv("HOME", root) t.Setenv("XDG_CONFIG_HOME", root) _, err := config.Reload() require.NoError(t, err) target, err := modernzconf.GetModernZConfPath() require.NoError(t, err) require.NoError(t, os.MkdirAll(filepath.Dir(target), 0700)) original := []byte("vidscale=auto\nscalewindowed=1.5\n") require.NoError(t, os.WriteFile(target, original, 0600)) journal, err := captureMigrationJournal(target, MigrationActionApply) require.NoError(t, err) require.NoError(t, writeMigrationJournal(target, journal)) require.NoError(t, modernzconf.SetValueFile(target, "vidscale", modernzconf.ManagedVidscaleDefault)) later := []byte("vidscale=no\nscalewindowed=2.5\n") require.NoError(t, os.WriteFile(target, later, 0600)) require.NoError(t, RecoverMigrationTransactions()) after, err := os.ReadFile(target) require.NoError(t, err) require.Equal(t, original, after) t.Logf("before_recovery=%q after_recovery=%q later_edit_lost=true", later, after) }