aboutsummaryrefslogtreecommitdiff
path: root/tests/nixos/fetch-git/test-cases/http-simple/default.nix
blob: 305dce10e998ac7712ff334ef070afe8fa804600 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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}"
  '';
}