public function testParseGitURI()
 {
     static $map = array('ssh://user@domain.com/path.git' => 'ssh://user@domain.com/path.git', 'user@domain.com:path.git' => 'ssh://user@domain.com/path.git');
     foreach ($map as $raw => $expect) {
         $uri = PhabricatorRepository::newPhutilURIFromGitURI($raw);
         $this->assertEqual($expect, (string) $uri, "Normalized Git URI '{$raw}'");
     }
 }
 public function testParseBadGitURI()
 {
     $junk = array('herp derp moon balloon');
     foreach ($junk as $garbage) {
         $ex = null;
         try {
             $uri = PhabricatorRepository::newPhutilURIFromGitURI($garbage);
         } catch (Exception $caught) {
             $ex = $caught;
         }
         $this->assertEqual(true, (bool) $ex, 'Expect exception when parsing garbage.');
     }
 }
 public static function verifySameGitOrigin($remote, $expect, $where)
 {
     $remote_uri = PhabricatorRepository::newPhutilURIFromGitURI($remote);
     $expect_uri = PhabricatorRepository::newPhutilURIFromGitURI($expect);
     $remote_path = $remote_uri->getPath();
     $expect_path = $expect_uri->getPath();
     $remote_match = self::normalizeGitPath($remote_path);
     $expect_match = self::normalizeGitPath($expect_path);
     if ($remote_match != $expect_match) {
         throw new Exception("Working copy at '{$where}' has a mismatched origin URL. It has " . "origin URL '{$remote}' (with remote path '{$remote_path}'), but the " . "configured URL '{$expect}' (with remote path '{$expect_path}') is " . "expected. Refusing to proceed because this may indicate that the " . "working copy is actually some other repository.");
     }
 }