| 
									
										
										
										
											2025-03-10 17:59:10 +00:00
										 |  |  | """
 | 
					
						
							|  |  |  | Tests for Posix-flavoured pathlib.types._JoinablePath | 
					
						
							|  |  |  | """
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import os | 
					
						
							|  |  |  | import unittest | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-03-21 22:18:20 +00:00
										 |  |  | from .support import is_pypi | 
					
						
							|  |  |  | from .support.lexical_path import LexicalPosixPath | 
					
						
							| 
									
										
										
										
											2025-03-10 17:59:10 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class JoinTestBase: | 
					
						
							|  |  |  |     def test_join(self): | 
					
						
							|  |  |  |         P = self.cls | 
					
						
							|  |  |  |         p = P('//a') | 
					
						
							|  |  |  |         pp = p.joinpath('b') | 
					
						
							|  |  |  |         self.assertEqual(pp, P('//a/b')) | 
					
						
							|  |  |  |         pp = P('/a').joinpath('//c') | 
					
						
							|  |  |  |         self.assertEqual(pp, P('//c')) | 
					
						
							|  |  |  |         pp = P('//a').joinpath('/c') | 
					
						
							|  |  |  |         self.assertEqual(pp, P('/c')) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_div(self): | 
					
						
							|  |  |  |         # Basically the same as joinpath(). | 
					
						
							|  |  |  |         P = self.cls | 
					
						
							|  |  |  |         p = P('//a') | 
					
						
							|  |  |  |         pp = p / 'b' | 
					
						
							|  |  |  |         self.assertEqual(pp, P('//a/b')) | 
					
						
							|  |  |  |         pp = P('/a') / '//c' | 
					
						
							|  |  |  |         self.assertEqual(pp, P('//c')) | 
					
						
							|  |  |  |         pp = P('//a') / '/c' | 
					
						
							|  |  |  |         self.assertEqual(pp, P('/c')) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class LexicalPosixPathJoinTest(JoinTestBase, unittest.TestCase): | 
					
						
							|  |  |  |     cls = LexicalPosixPath | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-03-21 22:18:20 +00:00
										 |  |  | if not is_pypi: | 
					
						
							|  |  |  |     from pathlib import PurePosixPath, PosixPath | 
					
						
							| 
									
										
										
										
											2025-03-10 17:59:10 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-03-21 22:18:20 +00:00
										 |  |  |     class PurePosixPathJoinTest(JoinTestBase, unittest.TestCase): | 
					
						
							|  |  |  |         cls = PurePosixPath | 
					
						
							| 
									
										
										
										
											2025-03-10 17:59:10 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-03-21 22:18:20 +00:00
										 |  |  |     if os.name != 'nt': | 
					
						
							|  |  |  |         class PosixPathJoinTest(JoinTestBase, unittest.TestCase): | 
					
						
							|  |  |  |             cls = PosixPath | 
					
						
							| 
									
										
										
										
											2025-03-10 17:59:10 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if __name__ == "__main__": | 
					
						
							|  |  |  |     unittest.main() |