aboutsummaryrefslogtreecommitdiff
path: root/tests/nixos/fetch-git/test-cases
diff options
context:
space:
mode:
authoreldritch horrors <pennae@lix.systems>2024-03-07 10:25:03 +0100
committereldritch horrors <pennae@lix.systems>2024-03-07 10:25:03 +0100
commitca03f7cc28ba09cb4db59ca51c52d4e7783f11e0 (patch)
treef9281c0480db82bd47a4f4858451a2c7154df66f /tests/nixos/fetch-git/test-cases
parentb87f059ed47134c67c0bda83c1377e54785eafb8 (diff)
Merge pull request #9676 from DavHau/git-testsuite
initialize test suite for git fetchers (cherry picked from commit 0bd9e10aea747df51c8a5af124864c722cbeafde) Change-Id: Idf94a47794190c3e1de07fc4e7848741c4e9ffed
Diffstat (limited to 'tests/nixos/fetch-git/test-cases')
-rw-r--r--tests/nixos/fetch-git/test-cases/http-simple/default.nix39
-rw-r--r--tests/nixos/fetch-git/test-cases/ssh-simple/default.nix43
2 files changed, 82 insertions, 0 deletions
diff --git a/tests/nixos/fetch-git/test-cases/http-simple/default.nix b/tests/nixos/fetch-git/test-cases/http-simple/default.nix
new file mode 100644
index 000000000..dcab8067e
--- /dev/null
+++ b/tests/nixos/fetch-git/test-cases/http-simple/default.nix
@@ -0,0 +1,39 @@
+{ config, ... }:
+{
+ description = "can fetch a git repo via http";
+ script = ''
+ # add a file to the repo
+ client.succeed(f"""
+ echo ${config.name /* to make the git tree and store path unique */} > {repo.path}/test-case \
+ && echo chiang-mai > {repo.path}/thailand \
+ && {repo.git} add test-case thailand \
+ && {repo.git} commit -m 'commit1'
+ """)
+
+ # save the revision
+ rev1 = client.succeed(f"""
+ {repo.git} rev-parse HEAD
+ """).strip()
+
+ # push to the server
+ client.succeed(f"""
+ {repo.git} push origin main
+ """)
+
+ # fetch the repo via nix
+ fetched1 = client.succeed(f"""
+ nix eval --impure --raw --expr "(builtins.fetchGit {repo.remote}).outPath"
+ """)
+
+ # check if the committed file is there
+ client.succeed(f"""
+ test -f {fetched1}/thailand
+ """)
+
+ # check if the revision is the same
+ rev1_fetched = client.succeed(f"""
+ nix eval --impure --raw --expr "(builtins.fetchGit {repo.remote}).rev"
+ """).strip()
+ assert rev1 == rev1_fetched, f"rev1: {rev1} != rev1_fetched: {rev1_fetched}"
+ '';
+}
diff --git a/tests/nixos/fetch-git/test-cases/ssh-simple/default.nix b/tests/nixos/fetch-git/test-cases/ssh-simple/default.nix
new file mode 100644
index 000000000..f5fba1698
--- /dev/null
+++ b/tests/nixos/fetch-git/test-cases/ssh-simple/default.nix
@@ -0,0 +1,43 @@
+{ config, ... }:
+{
+ description = "can fetch a git repo via ssh";
+ script = ''
+ # add a file to the repo
+ client.succeed(f"""
+ echo ${config.name /* to make the git tree and store path unique */} > {repo.path}/test-case \
+ && echo chiang-mai > {repo.path}/thailand \
+ && {repo.git} add test-case thailand \
+ && {repo.git} commit -m 'commit1'
+ """)
+
+ # save the revision
+ rev1 = client.succeed(f"""
+ {repo.git} rev-parse HEAD
+ """).strip()
+
+ # push to the server
+ client.succeed(f"""
+ {repo.git} push origin-ssh main
+ """)
+
+ # fetch the repo via nix
+ fetched1 = client.succeed(f"""
+ nix eval --impure --raw --expr '
+ (builtins.fetchGit "{repo.remote_ssh}").outPath
+ '
+ """)
+
+ # check if the committed file is there
+ client.succeed(f"""
+ test -f {fetched1}/thailand
+ """)
+
+ # check if the revision is the same
+ rev1_fetched = client.succeed(f"""
+ nix eval --impure --raw --expr '
+ (builtins.fetchGit "{repo.remote_ssh}").rev
+ '
+ """).strip()
+ assert rev1 == rev1_fetched, f"rev1: {rev1} != rev1_fetched: {rev1_fetched}"
+ '';
+}