@@ -239,5 +239,47 @@ def raise_memoryerror(*args, **kwargs):
239239 self .assertEqual (linecache .getlines (FILENAME ), lines )
240240
241241
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+
242284if __name__ == "__main__" :
243285 unittest .main ()
0 commit comments