def test_split_protocol(self): """Test split protocol test.""" assert util.split_protocol("http://abc/cde") == ("http://", "abc/cde") assert util.split_protocol("https://yay/yay") == ("https://", "yay/yay") assert util.split_protocol("ftp://ups/spu") == ("ftp://", "ups/spu") assert util.split_protocol("file:///test/file") == ("file://", "/test/file") assert util.split_protocol("nfs:ups/spu:/abc:opts") == ("", "nfs:ups/spu:/abc:opts") assert util.split_protocol("http:/typo/test") == ("", "http:/typo/test") assert util.split_protocol("") == ("", "") with pytest.raises(ValueError): util.split_protocol("http://ftp://ups/this/is/not/correct")
def path(self): """Get absolute repository root path.""" if self.relative_path == ".": return self._root_path else: protocol, url = split_protocol(os.path.join(self._root_path, self.relative_path)) # resolve problems with relative path especially useful for NFS (root/path/../new_path) url = os.path.normpath(url) return protocol + url
def split_protocol_test(self): """Test split protocol test.""" self.assertEqual(util.split_protocol("http://abc/cde"), ("http://", "abc/cde")) self.assertEqual(util.split_protocol("https://yay/yay"), ("https://", "yay/yay")) self.assertEqual(util.split_protocol("ftp://ups/spu"), ("ftp://", "ups/spu")) self.assertEqual(util.split_protocol("file:///test/file"), ("file://", "/test/file")) self.assertEqual(util.split_protocol("nfs:ups/spu:/abc:opts"), ("", "nfs:ups/spu:/abc:opts")) self.assertEqual(util.split_protocol("http:/typo/test"), ("", "http:/typo/test")) self.assertEqual(util.split_protocol(""), ("", "")) with self.assertRaises(ValueError): util.split_protocol("http://ftp://ups/this/is/not/correct")
def _get_url(root_url, relative_path): """Get the URL of the repository.""" if relative_path == ".": return root_url # Get the protocol. protocol, root_path = split_protocol(root_url) # Create the absolute path. absolute_path = join_paths(root_path, relative_path) # Normalize the URL to solve problems with a relative path. # This is especially useful for NFS (root/path/../new_path). return protocol + os.path.normpath(absolute_path)
def path(self): """Absolute path of the repository.""" if self._relative_path == ".": return self._root_path # Create the absolute path. full_path = os.path.join(self._root_path, self._relative_path) protocol, url = split_protocol(full_path) # Normalize the URL to solve problems with a relative path. # This is especially useful for NFS (root/path/../new_path). url = os.path.normpath(url) return protocol + url