From 12dd8d49c60186ae193fd96ef8904aa223ca7097 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 12 Oct 2022 21:51:36 +0200 Subject: [PATCH] Fix 'nix-instantiate --find-file' and add a test Reported by @lheckemann. --- src/nix-instantiate/nix-instantiate.cc | 5 ++++- tests/nix_path.sh | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/nix-instantiate/nix-instantiate.cc b/src/nix-instantiate/nix-instantiate.cc index fc3b4dae9..fc39c0827 100644 --- a/src/nix-instantiate/nix-instantiate.cc +++ b/src/nix-instantiate/nix-instantiate.cc @@ -169,7 +169,10 @@ static int main_nix_instantiate(int argc, char * * argv) if (findFile) { for (auto & i : files) { auto p = state->findFile(i); - std::cout << p.readFile() << std::endl; + if (auto fn = p.getPhysicalPath()) + std::cout << fn->abs() << std::endl; + else + throw Error("'%s' has no physical path", p); } return 0; } diff --git a/tests/nix_path.sh b/tests/nix_path.sh index d3657abf0..2b222b4a1 100644 --- a/tests/nix_path.sh +++ b/tests/nix_path.sh @@ -9,3 +9,6 @@ nix-instantiate --eval -E '' --restrict-eval # Should ideally also test this, but there’s no pure way to do it, so just trust me that it works # nix-instantiate --eval -E '' -I nixpkgs=channel:nixos-unstable --restrict-eval + +[[ $(nix-instantiate --find-file by-absolute-path/simple.nix) = $PWD/simple.nix ]] +[[ $(nix-instantiate --find-file by-relative-path/simple.nix) = $PWD/simple.nix ]]