@@ -239,5 +239,47 @@ def raise_memoryerror(*args, **kwargs):
239
239
self .assertEqual (linecache .getlines (FILENAME ), lines )
240
240
241
241
242
+ class LineCacheInvalidationTests (unittest .TestCase ):
243
+ def setUp (self ):
244
+ super ().setUp ()
245
+ linecache .clearcache ()
246
+ self .deleted_file = os_helper .TESTFN + '.1'
247
+ self .modified_file = os_helper .TESTFN + '.2'
248
+ self .unchanged_file = os_helper .TESTFN + '.3'
249
+
250
+ for fname in (self .deleted_file ,
251
+ self .modified_file ,
252
+ self .unchanged_file ):
253
+ self .addCleanup (os_helper .unlink , fname )
254
+ with open (fname , 'w' , encoding = 'utf-8' ) as source :
255
+ source .write (f'print("I am { fname } ")' )
256
+
257
+ self .assertNotIn (fname , linecache .cache )
258
+ linecache .getlines (fname )
259
+ self .assertIn (fname , linecache .cache )
260
+
261
+ os .remove (self .deleted_file )
262
+ with open (self .modified_file , 'w' , encoding = 'utf-8' ) as source :
263
+ source .write ('print("was modified")' )
264
+
265
+ def test_checkcache_for_deleted_file (self ):
266
+ linecache .checkcache (self .deleted_file )
267
+ self .assertNotIn (self .deleted_file , linecache .cache )
268
+ self .assertIn (self .modified_file , linecache .cache )
269
+ self .assertIn (self .unchanged_file , linecache .cache )
270
+
271
+ def test_checkcache_for_modified_file (self ):
272
+ linecache .checkcache (self .modified_file )
273
+ self .assertIn (self .deleted_file , linecache .cache )
274
+ self .assertNotIn (self .modified_file , linecache .cache )
275
+ self .assertIn (self .unchanged_file , linecache .cache )
276
+
277
+ def test_checkcache_with_no_parameter (self ):
278
+ linecache .checkcache ()
279
+ self .assertNotIn (self .deleted_file , linecache .cache )
280
+ self .assertNotIn (self .modified_file , linecache .cache )
281
+ self .assertIn (self .unchanged_file , linecache .cache )
282
+
283
+
242
284
if __name__ == "__main__" :
243
285
unittest .main ()
0 commit comments