Jan Willems avatar Jan Willems committed 5aedd4f

Put the env back in the hg command.
Made the command handling generic (due to clone and version additions).
Made sure all other tests keep working when the cloning would tests would fail.

Comments (0)

Files changed (1)

         """Returns true if self.node == other.node"""
         return self.node == other.node
 
+def command(path, env, *args):
+    """Run a hg command in path and return the result. Throws on error."""
+    proc = Popen(["hg", "--cwd", path, "--encoding", "UTF-8"] + list(args),
+                 stdout=PIPE, stderr=PIPE, env=env)
+
+    out, err = [x.decode("utf-8") for x in proc.communicate()]
+
+    if proc.returncode:
+        cmd = (" ".join(["hg", "--cwd", path] + list(args)))
+        raise HgException("Error running %s:\n\tErr: %s\n\tOut: %s\n\tExit: %s"
+                          % (cmd, err, out, proc.returncode), exit_code=proc.returncode)
+
+    return out
+
 class Repo(object):
     """A representation of a Mercurial repository"""
     def __init__(self, path, user=None):
         self.user = user
         self._env = os.environ
         self._env[str('LANG')] = str('en_US')
-		
+
     def __getitem__(self, rev=slice(0, 'tip')):
         """Get a Revision object for the revision identifed by rev
            rev can be a range (6c31a9f7be7ac58686f0610dd3c4ba375db2472c:tip)
         return self.revision(rev)
 
     def hg_command(self, *args):
-        """Run a hg command in path and return the result.
-        Throws on error."""
-        proc = Popen(["hg", "--cwd", self.path, "--encoding", "UTF-8"] + list(args), stdout=PIPE, stderr=PIPE)
-
-        out, err = [x.decode("utf-8") for x in  proc.communicate()]
-
-        if proc.returncode:
-            cmd = (" ".join(["hg", "--cwd", self.path] + list(args)))
-            raise HgException("Error running %s:\n\tErr: %s\n\tOut: %s\n\tExit: %s"
-                              % (cmd,err,out,proc.returncode), exit_code=proc.returncode)
-        return out
+        """Run a hg command. Throws on error."""
+        return command(self.path, self._env, *args)
 
     def hg_init(self):
         """Initialize a new repo"""
             return value.split()
 
 def hg_version():
-    """Return version number of mercurial"""
-    proc = Popen(["hg", "version"], stdout=PIPE, stderr=PIPE)
-    out, err = [x.decode("utf-8") for x in  proc.communicate()]
-    if proc.returncode:
-        return "not installed"
+    """Return the version number of Mercurial."""
+    out = command(".", os.environ, "version")
     match = re.search('\s([\w\.\-]+?)\)$', out.split("\n")[0])
     return match.group(1)
 
 def hg_clone(url, path, *args):
     """Clone repository at given `url` to `path`,
-    then return repo object to `path`"""
-    cmds = ["hg", "clone", url, path] + list(args)
-    proc = Popen(cmds, stdout=PIPE, stderr=PIPE)
-    out, err = [x.decode("utf-8") for x in proc.communicate()]
-    if proc.returncode:
-        cmd = " ".join(cmds)
-        raise HgException("Error running %s:\n\tErr: %s\n\tOut: %s\n\tExit: %s"
-                          % (cmd,err,out,proc.returncode))
+    then return repo object to `path`."""
+    command(".", os.environ, "clone", url, path, *args)
     return Repo(path)
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.