| 1 | package main |
| 2 | |
| 3 | import "testing" |
| 4 | |
| 5 | func TestTabLayoutQueueFlushKeepsLatestVersion(t *testing.T) { |
| 6 | isolateDesktopUserDirs(t) |
| 7 | app := NewApp() |
| 8 | dir := t.TempDir() |
| 9 | app.tabsSaveMu.Lock() |
| 10 | for version := uint64(1); version <= 100; version++ { |
| 11 | app.queueTabLayoutSave(dir, []desktopTabEntry{}, "latest", version) |
| 12 | } |
| 13 | app.tabsSaveMu.Unlock() |
| 14 | app.flushTabLayoutWrites() |
| 15 | if app.tabsLastWrittenVersion != 100 { |
| 16 | t.Fatalf("saved version=%d", app.tabsLastWrittenVersion) |
| 17 | } |
| 18 | app.queueTabLayoutSave(dir, []desktopTabEntry{}, "obsolete", 99) |
| 19 | app.saveTabsWrite(dir, []desktopTabEntry{}, "newer", 101) |
| 20 | app.flushTabLayoutWrites() |
| 21 | if app.tabsLastWrittenVersion != 101 { |
| 22 | t.Fatal("queued layout overwrote a newer synchronous save") |
| 23 | } |
| 24 | app.desktopSessions.layoutWrites.mu.Lock() |
| 25 | defer app.desktopSessions.layoutWrites.mu.Unlock() |
| 26 | if app.desktopSessions.layoutWrites.done != nil { |
| 27 | t.Fatal("flush left a layout worker running") |
| 28 | } |
| 29 | } |
| 30 |