flake: Expose tests to allow running purely (#3412)

* flake: Expose tests to allow running purely

The existing way to run tests with `nix-shell` relies on impure usage of
`<nixpkgs>`. This can lead to failures when the local nixpkgs is
incompatible with the locked one. I.e., where CI is passing but a
contributor may experience a failure.

So, expose tests as `devShells.tests` to use the locked nixpkgs and
allow easy invocation via `nix develop`.

* tests: Remove impure path

With Nix 2.10+ and pure evaluation mode e.g.

```
nix run nixpkgs/nixos-unstable#nixVersions.nix_2_10 -- develop -i .#tests.zplug-modules
```

this test would fail with:

> error: the path '~/.customZplugHome' can not be resolved in pure mode

Since the test only cares that it is a path, rather than anything about
its contents, use a dummy empty directory.
This commit is contained in:
Andrew Marshall 2022-11-26 19:37:24 -05:00 committed by GitHub
parent 5c98a8d860
commit cc58d31953
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 8 additions and 1 deletions

View file

@ -256,3 +256,8 @@ and run an individual test, for example `alacritty-empty-settings`, through
[source,console]
$ nix-shell --pure tests -A run.alacritty-empty-settings
However, those invocations will impurely source the systems nixpkgs, and may cause failures. To run against the nixpkgs from the flake.lock, use instead e.g.
[source,console]
$ nix develop --ignore-environment .#tests.all

View file

@ -88,7 +88,9 @@
let
pkgs = nixpkgs.legacyPackages.${system};
docs = import ./docs { inherit pkgs; };
tests = import ./tests { inherit pkgs; };
in {
devShells.tests = tests.run;
packages = rec {
home-manager = pkgs.callPackage ./home-manager { };
docs-html = docs.manual.html;

View file

@ -8,7 +8,7 @@ with lib;
enable = true;
zplug = {
enable = true;
zplugHome = ~/.customZplugHome;
zplugHome = pkgs.emptyDirectory;
plugins = [
{
name = "plugins/git";