summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/tools/manifest/vcs.py
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/tools/manifest/vcs.py')
-rw-r--r--testing/web-platform/tests/tools/manifest/vcs.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/testing/web-platform/tests/tools/manifest/vcs.py b/testing/web-platform/tests/tools/manifest/vcs.py
new file mode 100644
index 000000000..93bd445e1
--- /dev/null
+++ b/testing/web-platform/tests/tools/manifest/vcs.py
@@ -0,0 +1,25 @@
+import os
+import subprocess
+
+def get_git_func(repo_path):
+ def git(cmd, *args):
+ full_cmd = ["git", cmd] + list(args)
+ return subprocess.check_output(full_cmd, cwd=repo_path, stderr=subprocess.STDOUT)
+ return git
+
+
+def is_git_repo(tests_root):
+ return os.path.exists(os.path.join(tests_root, ".git"))
+
+
+_repo_root = None
+def get_repo_root(initial_dir=None):
+ global _repo_root
+
+ if initial_dir is None:
+ initial_dir = os.path.dirname(__file__)
+
+ if _repo_root is None:
+ git = get_git_func(initial_dir)
+ _repo_root = git("rev-parse", "--show-toplevel").rstrip()
+ return _repo_root