TestActionCacheReleasedAt verifies that GetReleasedAt / SetReleasedAt round-trip correctly and are preserved across a Save/Load cycle.
(t *testing.T)
| 812 | // TestActionCacheReleasedAt verifies that GetReleasedAt / SetReleasedAt |
| 813 | // round-trip correctly and are preserved across a Save/Load cycle. |
| 814 | func TestActionCacheReleasedAt(t *testing.T) { |
| 815 | tmpDir := testutil.TempDir(t, "test-*") |
| 816 | cache := NewActionCache(tmpDir) |
| 817 | cache.Set("owner/action", "v1", "sha1234567890123456789012345678901234567890") |
| 818 | |
| 819 | // No date cached yet |
| 820 | _, ok := cache.GetReleasedAt("owner/action", "v1") |
| 821 | if ok { |
| 822 | t.Error("Expected no release date before SetReleasedAt") |
| 823 | } |
| 824 | |
| 825 | // Store a date |
| 826 | ts := time.Date(2024, 3, 15, 12, 0, 0, 0, time.UTC) |
| 827 | cache.SetReleasedAt("owner/action", "v1", ts) |
| 828 | |
| 829 | got, ok := cache.GetReleasedAt("owner/action", "v1") |
| 830 | if !ok { |
| 831 | t.Fatal("Expected release date after SetReleasedAt") |
| 832 | } |
| 833 | if !got.Equal(ts) { |
| 834 | t.Errorf("GetReleasedAt() = %v, want %v", got, ts) |
| 835 | } |
| 836 | |
| 837 | // Persist to disk and reload |
| 838 | if err := cache.Save(); err != nil { |
| 839 | t.Fatalf("Failed to save: %v", err) |
| 840 | } |
| 841 | cache2 := NewActionCache(tmpDir) |
| 842 | if err := cache2.Load(); err != nil { |
| 843 | t.Fatalf("Failed to load: %v", err) |
| 844 | } |
| 845 | got2, ok2 := cache2.GetReleasedAt("owner/action", "v1") |
| 846 | if !ok2 { |
| 847 | t.Fatal("Expected release date to survive save/load") |
| 848 | } |
| 849 | if !got2.Equal(ts) { |
| 850 | t.Errorf("After reload: GetReleasedAt() = %v, want %v", got2, ts) |
| 851 | } |
| 852 | } |
| 853 | |
| 854 | // TestActionCacheReleasedAtPreservedOnSHAMatch verifies that ReleasedAt is |
| 855 | // preserved by Set when the SHA does not change. |
nothing calls this directly
no test coverage detected