libfetchers: produce a proper error when both ref and rev are set
Affects `github`, `gitlab` and `sourcehut` fetchers. Previously this was an assertion, which crashed the evaluator with SIGABRT. Fixes: #1133 Change-Id: Ia9bb8dd29ac8b9c97bf048827f62c5076a6a6964
This commit is contained in:
@@ -150,8 +150,15 @@ struct GitArchiveInputScheme : InputScheme
|
||||
auto ref = input.getRef();
|
||||
auto rev = input.getRev();
|
||||
auto path = owner + "/" + repo;
|
||||
assert(!(ref && rev));
|
||||
if (ref) path += "/" + *ref;
|
||||
if (ref && rev) {
|
||||
throw Error(
|
||||
"input '%s:%s/%s' has both ref (%s) and rev (%s), which is not allowed",
|
||||
schemeType(), owner, repo, *ref, rev->gitRev()
|
||||
);
|
||||
}
|
||||
if (ref) {
|
||||
path += "/" + *ref;
|
||||
}
|
||||
if (rev) {
|
||||
path += "/" + rev->to_string(HashFormat::Base16, false);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
error:
|
||||
… while calling the 'fetchTree' builtin
|
||||
at /pwd/in.nix:3:1:
|
||||
2| # https://git.lix.systems/lix-project/lix/issues/1133
|
||||
3| builtins.fetchTree {
|
||||
| ^
|
||||
4| type = "github";
|
||||
|
||||
error: input 'github:nixos/nixpkgs' has both ref (nixpkgs-unstable) and rev (e4bae1bd10c9c57b2cf517953ab70060a828ee6f), which is not allowed
|
||||
@@ -0,0 +1,9 @@
|
||||
# tests that this produces a proper error, as it didn't before
|
||||
# https://git.lix.systems/lix-project/lix/issues/1133
|
||||
builtins.fetchTree {
|
||||
type = "github";
|
||||
owner = "nixos";
|
||||
repo = "nixpkgs";
|
||||
ref = "nixpkgs-unstable";
|
||||
rev = "e4bae1bd10c9c57b2cf517953ab70060a828ee6f";
|
||||
}
|
||||
Reference in New Issue
Block a user