| 2800 | } |
| 2801 | |
| 2802 | func TestRunLog(t *testing.T) { |
| 2803 | t.Run("when the cache dir doesn't exist, exists return false", func(t *testing.T) { |
| 2804 | cacheDir := t.TempDir() + "/non-existent-dir" |
| 2805 | rlc := RunLogCache{cacheDir: cacheDir} |
| 2806 | |
| 2807 | exists, err := rlc.Exists("unimportant-key") |
| 2808 | require.NoError(t, err) |
| 2809 | require.False(t, exists) |
| 2810 | }) |
| 2811 | |
| 2812 | t.Run("when no cache entry has been created, exists returns false", func(t *testing.T) { |
| 2813 | cacheDir := t.TempDir() |
| 2814 | rlc := RunLogCache{cacheDir: cacheDir} |
| 2815 | |
| 2816 | exists, err := rlc.Exists("unimportant-key") |
| 2817 | require.NoError(t, err) |
| 2818 | require.False(t, exists) |
| 2819 | }) |
| 2820 | |
| 2821 | t.Run("when a cache entry has been created, exists returns true", func(t *testing.T) { |
| 2822 | cacheDir := t.TempDir() |
| 2823 | rlc := RunLogCache{cacheDir: cacheDir} |
| 2824 | |
| 2825 | contents := strings.NewReader("unimportant-content") |
| 2826 | require.NoError(t, rlc.Create("key", contents)) |
| 2827 | |
| 2828 | exists, err := rlc.Exists("key") |
| 2829 | require.NoError(t, err) |
| 2830 | require.True(t, exists) |
| 2831 | }) |
| 2832 | |
| 2833 | t.Run("when the cache dir doesn't exist, creating a cache entry creates it", func(t *testing.T) { |
| 2834 | cacheDir := t.TempDir() + "/non-existent-dir" |
| 2835 | rlc := RunLogCache{cacheDir: cacheDir} |
| 2836 | |
| 2837 | contents := strings.NewReader("unimportant-content") |
| 2838 | require.NoError(t, rlc.Create("key", contents)) |
| 2839 | |
| 2840 | require.DirExists(t, cacheDir) |
| 2841 | }) |
| 2842 | |
| 2843 | t.Run("when a cache entry has been created, reading it returns its contents", func(t *testing.T) { |
| 2844 | cacheDir := t.TempDir() |
| 2845 | rlc := RunLogCache{cacheDir: cacheDir} |
| 2846 | |
| 2847 | raw := createZipArchive(t, map[string]string{"foo": "bar"}) |
| 2848 | f := bytes.NewReader(raw) |
| 2849 | |
| 2850 | require.NoError(t, rlc.Create("key", f)) |
| 2851 | |
| 2852 | zipReader, err := rlc.Open("key") |
| 2853 | require.NoError(t, err) |
| 2854 | defer zipReader.Close() |
| 2855 | require.NotEmpty(t, zipReader.File) |
| 2856 | require.Equal(t, "foo", zipReader.File[0].Name) |
| 2857 | }) |
| 2858 | } |