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