diff --git a/pkgs/build-support/fetchbitbucket/default.nix b/pkgs/build-support/fetchbitbucket/default.nix index b98fc21de7ba..b5f04d8afbd1 100644 --- a/pkgs/build-support/fetchbitbucket/default.nix +++ b/pkgs/build-support/fetchbitbucket/default.nix @@ -15,7 +15,7 @@ lib.makeOverridable ( fetchzip ( { inherit name; - url = "https://bitbucket.org/${owner}/${repo}/get/${rev}.tar.gz"; + url = "https://bitbucket.org/${owner}/${repo}/get/${lib.strings.escapeURL rev}.tar.gz"; meta.homepage = "https://bitbucket.org/${owner}/${repo}/"; } // removeAttrs args [ diff --git a/pkgs/build-support/fetchbitbucket/tests.nix b/pkgs/build-support/fetchbitbucket/tests.nix new file mode 100644 index 000000000000..4e9b97b7e709 --- /dev/null +++ b/pkgs/build-support/fetchbitbucket/tests.nix @@ -0,0 +1,18 @@ +{ testers, fetchFromBitbucket, ... }: +{ + withEncodedWhitespace = testers.invalidateFetcherByDrvHash fetchFromBitbucket { + name = "withWhitespace"; + owner = "tetov"; + repo = "fetchbitbucket_tester"; + rev = "tag%20with%20encoded%20spaces"; + sha256 = "sha256-Nf1Cvbx7Sbab8EeSSBU5baLBiuFYiQtITED+f4tfjC0="; + }; + + withoutWhitespace = testers.invalidateFetcherByDrvHash fetchFromBitbucket { + name = "withoutWhitespace"; + owner = "tetov"; + repo = "fetchbitbucket_tester"; + rev = "main"; + sha256 = "sha256-eTd773gE1z4+Fl2YPBbbsrADD4Dr7sFGoOWgphXUhtE="; + }; +} diff --git a/pkgs/test/default.nix b/pkgs/test/default.nix index fe6f9eb43852..6314049ed0bc 100644 --- a/pkgs/test/default.nix +++ b/pkgs/test/default.nix @@ -131,6 +131,7 @@ with pkgs; fetchDebianPatch = recurseIntoAttrs (callPackages ../build-support/fetchdebianpatch/tests.nix { }); fetchzip = recurseIntoAttrs (callPackages ../build-support/fetchzip/tests.nix { }); fetchgit = recurseIntoAttrs (callPackages ../build-support/fetchgit/tests.nix { }); + fetchFromBitbucket = recurseIntoAttrs (callPackages ../build-support/fetchbitbucket/tests.nix { }); fetchFirefoxAddon = recurseIntoAttrs ( callPackages ../build-support/fetchfirefoxaddon/tests.nix { } );