@@ -83,6 +83,38 @@ def clear_caches(self):
8383 platform ._uname_cache = None
8484 platform ._os_release_cache = None
8585
86+ def test_invalidate_caches (self ):
87+ self .clear_caches ()
88+
89+ self .assertDictEqual (platform ._platform_cache , {})
90+ self .assertDictEqual (platform ._sys_version_cache , {})
91+ self .assertIsNone (platform ._uname_cache )
92+ self .assertIsNone (platform ._os_release_cache )
93+
94+ # fill the cached entries (some have side effects on others)
95+ platform .platform () # for platform._platform_cache
96+ platform .python_implementation () # for platform._sys_version_cache
97+ platform .uname () # for platform._uname_cache
98+
99+ # check that the cache are filled
100+ self .assertNotEqual (platform ._platform_cache , {})
101+ self .assertNotEqual (platform ._sys_version_cache , {})
102+ self .assertIsNotNone (platform ._uname_cache )
103+
104+ try :
105+ platform .freedesktop_os_release ()
106+ except OSError :
107+ self .assertIsNone (platform ._os_release_cache )
108+ else :
109+ self .assertIsNotNone (platform ._os_release_cache )
110+
111+ with self .subTest ('clear platform caches' ):
112+ platform .invalidate_caches ()
113+ self .assertDictEqual (platform ._platform_cache , {})
114+ self .assertDictEqual (platform ._sys_version_cache , {})
115+ self .assertIsNone (platform ._uname_cache )
116+ self .assertIsNone (platform ._os_release_cache )
117+
86118 def test_architecture (self ):
87119 res = platform .architecture ()
88120
0 commit comments