Add simple test for nix upgrade-nix

This commit is contained in:
Eelco Dolstra 2018-08-30 17:10:28 +02:00
parent 308689f94b
commit 264e66f696
No known key found for this signature in database
GPG key ID: 8170B4726D7198DE
2 changed files with 20 additions and 1 deletions

View file

@ -249,6 +249,18 @@ let
su - alice -c '_NIX_INSTALLER_TEST=1 ./nix-*/install' su - alice -c '_NIX_INSTALLER_TEST=1 ./nix-*/install'
su - alice -c 'nix-store --verify' su - alice -c 'nix-store --verify'
su - alice -c 'PAGER= nix-store -qR ${build.x86_64-linux}' su - alice -c 'PAGER= nix-store -qR ${build.x86_64-linux}'
# Check whether 'nix upgrade-nix' works.
(! [ -L /nix/var/nix/profiles/per-user/alice/profile-2-link ])
cat > /tmp/paths.nix <<EOF
{
x86_64-linux = "${build.x86_64-linux}";
}
EOF
su - alice -c 'nix upgrade-nix -vvv --nix-store-paths-url file:///tmp/paths.nix'
[ -L /nix/var/nix/profiles/per-user/alice/profile-2-link ]
su - alice -c 'PAGER= nix-store -qR ${build.x86_64-linux}'
mkdir -p $out/nix-support mkdir -p $out/nix-support
touch $out/nix-support/hydra-build-products touch $out/nix-support/hydra-build-products
umount /nix umount /nix

View file

@ -9,6 +9,7 @@ using namespace nix;
struct CmdUpgradeNix : StoreCommand struct CmdUpgradeNix : StoreCommand
{ {
Path profileDir; Path profileDir;
std::string storePathsUrl = "https://github.com/NixOS/nixpkgs/raw/master/nixos/modules/installer/tools/nix-fallback-paths.nix";
CmdUpgradeNix() CmdUpgradeNix()
{ {
@ -18,6 +19,12 @@ struct CmdUpgradeNix : StoreCommand
.labels({"profile-dir"}) .labels({"profile-dir"})
.description("the Nix profile to upgrade") .description("the Nix profile to upgrade")
.dest(&profileDir); .dest(&profileDir);
mkFlag()
.longName("nix-store-paths-url")
.labels({"url"})
.description("URL of the file that contains the store paths of the latest Nix release")
.dest(&storePathsUrl);
} }
std::string name() override std::string name() override
@ -115,7 +122,7 @@ struct CmdUpgradeNix : StoreCommand
Path getLatestNix(ref<Store> store) Path getLatestNix(ref<Store> store)
{ {
// FIXME: use nixos.org? // FIXME: use nixos.org?
auto req = DownloadRequest("https://github.com/NixOS/nixpkgs/raw/master/nixos/modules/installer/tools/nix-fallback-paths.nix"); auto req = DownloadRequest(storePathsUrl);
auto res = getDownloader()->download(req); auto res = getDownloader()->download(req);
auto state = std::make_unique<EvalState>(Strings(), store); auto state = std::make_unique<EvalState>(Strings(), store);