| 
									
										
										
										
											2017-12-30 15:18:06 -05:00
										 |  |  | import unittest | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | from importlib import resources | 
					
						
							|  |  |  | from . import data01 | 
					
						
							|  |  |  | from . import util | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class CommonTests(util.CommonResourceTests, unittest.TestCase): | 
					
						
							|  |  |  |     def execute(self, package, path): | 
					
						
							|  |  |  |         with resources.path(package, path): | 
					
						
							|  |  |  |             pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class PathTests: | 
					
						
							|  |  |  |     def test_reading(self): | 
					
						
							|  |  |  |         # Path should be readable. | 
					
						
							|  |  |  |         # Test also implicitly verifies the returned object is a pathlib.Path | 
					
						
							|  |  |  |         # instance. | 
					
						
							|  |  |  |         with resources.path(self.data, 'utf-8.file') as path: | 
					
						
							| 
									
										
										
										
											2020-05-08 19:20:26 -04:00
										 |  |  |             self.assertTrue(path.name.endswith("utf-8.file"), repr(path)) | 
					
						
							| 
									
										
										
										
											2017-12-30 15:18:06 -05:00
										 |  |  |             # pathlib.Path.read_text() was introduced in Python 3.5. | 
					
						
							|  |  |  |             with path.open('r', encoding='utf-8') as file: | 
					
						
							|  |  |  |                 text = file.read() | 
					
						
							|  |  |  |             self.assertEqual('Hello, UTF-8 world!\n', text) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class PathDiskTests(PathTests, unittest.TestCase): | 
					
						
							|  |  |  |     data = data01 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-29 16:59:22 -04:00
										 |  |  |     def test_natural_path(self): | 
					
						
							|  |  |  |         """
 | 
					
						
							|  |  |  |         Guarantee the internal implementation detail that | 
					
						
							|  |  |  |         file-system-backed resources do not get the tempdir | 
					
						
							|  |  |  |         treatment. | 
					
						
							|  |  |  |         """
 | 
					
						
							|  |  |  |         with resources.path(self.data, 'utf-8.file') as path: | 
					
						
							|  |  |  |             assert 'data' in str(path) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-30 15:18:06 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | class PathZipTests(PathTests, util.ZipSetup, unittest.TestCase): | 
					
						
							|  |  |  |     def test_remove_in_context_manager(self): | 
					
						
							|  |  |  |         # It is not an error if the file that was temporarily stashed on the | 
					
						
							|  |  |  |         # file system is removed inside the `with` stanza. | 
					
						
							|  |  |  |         with resources.path(self.data, 'utf-8.file') as path: | 
					
						
							|  |  |  |             path.unlink() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if __name__ == '__main__': | 
					
						
							|  |  |  |     unittest.main() |