summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_linecache.py
diff options
context:
space:
mode:
authorIrit Katriel <iritkatriel@yahoo.com>2021-05-18 14:25:38 (GMT)
committerGitHub <noreply@github.com>2021-05-18 14:25:38 (GMT)
commitc05d8a6b67785450b1fec0d30fe26d5478bc4f0b (patch)
tree706102afa87d8729b4f06f538fd9daa17309f85c /Lib/test/test_linecache.py
parent049c4125f8a2b482c6129db68463f58e20c31526 (diff)
downloadcpython-c05d8a6b67785450b1fec0d30fe26d5478bc4f0b.zip
cpython-c05d8a6b67785450b1fec0d30fe26d5478bc4f0b.tar.gz
cpython-c05d8a6b67785450b1fec0d30fe26d5478bc4f0b.tar.bz2
bpo-25872: Add unit tests for linecache and threading (GH-25913) (GH-26211)
(cherry picked from commit 115dea9e2602b96b63390f00cc880e90c433efa2) Co-authored-by: uniocto <serit142sa33go@gmail.com>
Diffstat (limited to 'Lib/test/test_linecache.py')
-rw-r--r--Lib/test/test_linecache.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/Lib/test/test_linecache.py b/Lib/test/test_linecache.py
index 375d9c4..f569116 100644
--- a/Lib/test/test_linecache.py
+++ b/Lib/test/test_linecache.py
@@ -238,5 +238,47 @@ class LineCacheTests(unittest.TestCase):
self.assertEqual(linecache.getlines(FILENAME), lines)
+class LineCacheInvalidationTests(unittest.TestCase):
+ def setUp(self):
+ super().setUp()
+ linecache.clearcache()
+ self.deleted_file = support.TESTFN + '.1'
+ self.modified_file = support.TESTFN + '.2'
+ self.unchanged_file = support.TESTFN + '.3'
+
+ for fname in (self.deleted_file,
+ self.modified_file,
+ self.unchanged_file):
+ self.addCleanup(support.unlink, fname)
+ with open(fname, 'w', encoding='utf-8') as source:
+ source.write(f'print("I am {fname}")')
+
+ self.assertNotIn(fname, linecache.cache)
+ linecache.getlines(fname)
+ self.assertIn(fname, linecache.cache)
+
+ os.remove(self.deleted_file)
+ with open(self.modified_file, 'w', encoding='utf-8') as source:
+ source.write('print("was modified")')
+
+ def test_checkcache_for_deleted_file(self):
+ linecache.checkcache(self.deleted_file)
+ self.assertNotIn(self.deleted_file, linecache.cache)
+ self.assertIn(self.modified_file, linecache.cache)
+ self.assertIn(self.unchanged_file, linecache.cache)
+
+ def test_checkcache_for_modified_file(self):
+ linecache.checkcache(self.modified_file)
+ self.assertIn(self.deleted_file, linecache.cache)
+ self.assertNotIn(self.modified_file, linecache.cache)
+ self.assertIn(self.unchanged_file, linecache.cache)
+
+ def test_checkcache_with_no_parameter(self):
+ linecache.checkcache()
+ self.assertNotIn(self.deleted_file, linecache.cache)
+ self.assertNotIn(self.modified_file, linecache.cache)
+ self.assertIn(self.unchanged_file, linecache.cache)
+
+
if __name__ == "__main__":
unittest.main()