#!/usr/bin/env bash

source ./common.sh

requireGit


test_subdir_self_path() {
    baseDir=$TEST_ROOT/$RANDOM
    flakeDir=$baseDir/b-low
    mkdir -p "$flakeDir"
    writeSimpleFlake "$baseDir"
    writeSimpleFlake "$flakeDir"

    echo all good > "$flakeDir/message"
    cat > "$flakeDir"/flake.nix <<EOF
{
  outputs = inputs: rec {
    packages.$system = rec {
      default =
        assert builtins.readFile ./message == "all good\n";
        assert builtins.readFile (inputs.self + "/message") == "all good\n";
        import ./simple.nix;
    };
  };
}
EOF
    (
        nix build "$baseDir"?dir=b-low --no-link
    )
}
test_subdir_self_path


test_git_subdir_self_path() {
    repoDir=$TEST_ROOT/repo-$RANDOM
    createGitRepo "$repoDir"
    flakeDir=$repoDir/b-low
    mkdir -p "$flakeDir"
    writeSimpleFlake "$repoDir"
    writeSimpleFlake "$flakeDir"

    echo all good > "$flakeDir/message"
    cat > "$flakeDir"/flake.nix <<EOF
{
  outputs = inputs: rec {
    packages.$system = rec {
      default =
        assert builtins.readFile ./message == "all good\n";
        assert builtins.readFile (inputs.self + "/message") == "all good\n";
        assert inputs.self.outPath == inputs.self.sourceInfo.outPath + "/b-low";
        import ./simple.nix;
    };
  };
}
EOF
    (
        cd "$flakeDir"
        git add .
        git commit -m init
        # nix build
    )

    clientDir=$TEST_ROOT/client-$RANDOM
    mkdir -p "$clientDir"
    cat > "$clientDir"/flake.nix <<EOF
{
  inputs.inp = {
    type = "git";
    url = "file://$repoDir";
    dir = "b-low";
  };

  outputs = inputs: rec {
    packages = inputs.inp.packages;
  };
}
EOF
    nix build "$clientDir" --no-link

}
test_git_subdir_self_path
