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