forked from fediversity/fediversity
		
	set up expression-level tests
This commit is contained in:
		
							parent
							
								
									22c7c3091f
								
							
						
					
					
						commit
						a8dcc9f298
					
				
					 5 changed files with 74 additions and 23 deletions
				
			
		| 
						 | 
				
			
			@ -30,6 +30,26 @@ Structured content is managed through Nix expressions, and copy is written in [C
 | 
			
		|||
 | 
			
		||||
- Edit any of the files, see [repository layout](#repository-layout) for guidance
 | 
			
		||||
 | 
			
		||||
# Testing
 | 
			
		||||
 | 
			
		||||
As a derivation, e.g. for CI:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
nix-build -A tests
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
In the development shell:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
run-tests
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Running tests in a loop on source code changes:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
test-loop
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
# Repository layout
 | 
			
		||||
 | 
			
		||||
- [content](./content)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,12 +14,7 @@ let
 | 
			
		|||
    in
 | 
			
		||||
    new // { types = prev.recursiveUpdate prev.types new.types; };
 | 
			
		||||
  lib'' = lib.extend lib';
 | 
			
		||||
  # TODO: update when the PR to expose `pkgs.devmode` is merged
 | 
			
		||||
  #       https://github.com/NixOS/nixpkgs/pull/354556
 | 
			
		||||
  devmode = pkgs.callPackage "${sources.devmode-reusable}/pkgs/by-name/de/devmode/package.nix" {
 | 
			
		||||
    buildArgs = "${toString ./.} -A build --show-trace";
 | 
			
		||||
    open = "/index.html";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
in
 | 
			
		||||
rec {
 | 
			
		||||
  lib = lib'';
 | 
			
		||||
| 
						 | 
				
			
			@ -38,11 +33,36 @@ rec {
 | 
			
		|||
 | 
			
		||||
  inherit (result.config) build;
 | 
			
		||||
 | 
			
		||||
  shell = pkgs.mkShellNoCC {
 | 
			
		||||
    packages = with pkgs; [
 | 
			
		||||
      cmark
 | 
			
		||||
      npins
 | 
			
		||||
      devmode
 | 
			
		||||
    ];
 | 
			
		||||
  };
 | 
			
		||||
  shell =
 | 
			
		||||
    let
 | 
			
		||||
      run-tests = pkgs.writeShellApplication {
 | 
			
		||||
        name = "run-tests";
 | 
			
		||||
        text = with pkgs; with lib; ''
 | 
			
		||||
          ${getExe nix-unit} ${toString ./tests.nix} "$@"
 | 
			
		||||
        '';
 | 
			
		||||
      };
 | 
			
		||||
      test-loop = pkgs.writeShellApplication {
 | 
			
		||||
        name = "test-loop";
 | 
			
		||||
        text = with pkgs; with lib; ''
 | 
			
		||||
          ${getExe watchexec} -w ${toString ./.} -- ${getExe nix-unit} ${toString ./tests.nix}
 | 
			
		||||
        '';
 | 
			
		||||
      };
 | 
			
		||||
      devmode = pkgs.devmode.override {
 | 
			
		||||
        buildArgs = "${toString ./.} -A build --show-trace";
 | 
			
		||||
        open = "/index.html";
 | 
			
		||||
      };
 | 
			
		||||
    in
 | 
			
		||||
    pkgs.mkShellNoCC {
 | 
			
		||||
      packages = [
 | 
			
		||||
        pkgs.npins
 | 
			
		||||
        run-tests
 | 
			
		||||
        test-loop
 | 
			
		||||
        devmode
 | 
			
		||||
      ];
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
  tests = with pkgs; with lib; runCommand "run-tests" { } ''
 | 
			
		||||
    touch $out
 | 
			
		||||
    ${getExe nix-unit} ${./tests.nix} "$@"
 | 
			
		||||
  '';
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -104,7 +104,7 @@ rec {
 | 
			
		|||
      path1 = subpath.components path1';
 | 
			
		||||
      prefix1 = with lib; take (length path1 - 1) path1;
 | 
			
		||||
      path2 = subpath.components path2';
 | 
			
		||||
      prefix2 = with lib; take (length path1 - 1) path2;
 | 
			
		||||
      prefix2 = with lib; take (length path2 - 1) path2;
 | 
			
		||||
 | 
			
		||||
      commonPrefixLength = with lists;
 | 
			
		||||
        findFirstIndex (i: i.fst != i.snd)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,22 +1,22 @@
 | 
			
		|||
{
 | 
			
		||||
  "pins": {
 | 
			
		||||
    "devmode-reusable": {
 | 
			
		||||
    "nix-unit": {
 | 
			
		||||
      "type": "Git",
 | 
			
		||||
      "repository": {
 | 
			
		||||
        "type": "GitHub",
 | 
			
		||||
        "owner": "fricklerhandwerk",
 | 
			
		||||
        "repo": "nixpkgs"
 | 
			
		||||
        "owner": "nix-community",
 | 
			
		||||
        "repo": "nix-unit"
 | 
			
		||||
      },
 | 
			
		||||
      "branch": "refactor-devmode",
 | 
			
		||||
      "revision": "f0746a6690939987734d6519a2e3daf28ed36d87",
 | 
			
		||||
      "url": "https://github.com/fricklerhandwerk/nixpkgs/archive/f0746a6690939987734d6519a2e3daf28ed36d87.tar.gz",
 | 
			
		||||
      "hash": "011kg3c2mfy7y808llpmq3hf6vv6rlazx8m11w41pnym4kwr3ivz"
 | 
			
		||||
      "branch": "main",
 | 
			
		||||
      "revision": "2071bbb765681ac3d8194ec560c8b27ff2a3b541",
 | 
			
		||||
      "url": "https://github.com/nix-community/nix-unit/archive/2071bbb765681ac3d8194ec560c8b27ff2a3b541.tar.gz",
 | 
			
		||||
      "hash": "0blz1kcmn9vnr9q3iqp2mv13hv3pdccljmmc54f8j7ybf5v0wgmp"
 | 
			
		||||
    },
 | 
			
		||||
    "nixpkgs": {
 | 
			
		||||
      "type": "Channel",
 | 
			
		||||
      "name": "nixpkgs-unstable",
 | 
			
		||||
      "url": "https://releases.nixos.org/nixpkgs/nixpkgs-24.11pre691017.b69de56fac8c/nixexprs.tar.xz",
 | 
			
		||||
      "hash": "0z32pj0lh5ng2a6cn0qfmka8cynnygckn5615mkaxq2aplkvgzx3"
 | 
			
		||||
      "url": "https://releases.nixos.org/nixpkgs/nixpkgs-25.05pre711046.8edf06bea5bc/nixexprs.tar.xz",
 | 
			
		||||
      "hash": "1mwsn0rvfm603svrq3pca4c51zlix5gkyr4gl6pxhhq3q6xs5s8y"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "version": 3
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										11
									
								
								website/tests.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								website/tests.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,11 @@
 | 
			
		|||
# tests written for running with `nix-unit`
 | 
			
		||||
# https://github.com/nix-community/nix-unit
 | 
			
		||||
let
 | 
			
		||||
  inherit (import ./. { }) lib;
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
  test-relativePath = {
 | 
			
		||||
    expr = with lib; relativePath "bar" "baz";
 | 
			
		||||
    expected = "./baz";
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	Add table
		
		Reference in a new issue