@@ -278,3 +278,38 @@ func TestFSCache_SetGet_WithEncryption(t *testing.T) {
278278 "ciphertext should not contain plaintext" ,
279279 )
280280}
281+
282+ func Test_fsCache_SetGet_UpdateMTime (t * testing.T ) {
283+ u , err := url .Parse ("fscache://" + filepath .ToSlash (t .TempDir ()) +
284+ "?appname=testapp&update_mtime=on" )
285+ testutil .RequireNoError (t , err )
286+ cache , err := fromURL (u )
287+ testutil .RequireNoError (t , err )
288+ t .Cleanup (func () { cache .Close () })
289+
290+ keyName := "mykey"
291+ value := []byte ("some value" )
292+
293+ err = cache .Set (keyName , value )
294+ testutil .RequireNoError (t , err )
295+
296+ // Get initial mtime
297+ fname := cache .fn .FileName (keyName )
298+ info1 , err := fs .Stat (cache .root .FS (), fname )
299+ testutil .RequireNoError (t , err )
300+ mtime1 := info1 .ModTime ()
301+
302+ // Wait a bit to ensure mtime will be different
303+ time .Sleep (2 * time .Second )
304+
305+ // Get the key to update mtime
306+ _ , err = cache .Get (keyName )
307+ testutil .RequireNoError (t , err )
308+
309+ // Get updated mtime
310+ info2 , err := fs .Stat (cache .root .FS (), fname )
311+ testutil .RequireNoError (t , err )
312+ mtime2 := info2 .ModTime ()
313+
314+ testutil .AssertTrue (t , mtime2 .After (mtime1 ))
315+ }
0 commit comments