This CL can be used to compare the style of nixpkgs-fmt against other formatters (nixpkgs, alejandra). Change-Id: I87c6abff6bcb546b02ead15ad0405f81e01b6d9e Reviewed-on: https://cl.tvl.fyi/c/depot/+/4397 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org> Reviewed-by: lukegb <lukegb@tvl.fyi> Reviewed-by: wpcarro <wpcarro@gmail.com> Reviewed-by: Profpatsch <mail@profpatsch.de> Reviewed-by: kanepyork <rikingcoding@gmail.com> Reviewed-by: tazjin <tazjin@tvl.su> Reviewed-by: cynthia <cynthia@tvl.fyi> Reviewed-by: edef <edef@edef.eu> Reviewed-by: eta <tvl@eta.st> Reviewed-by: grfn <grfn@gws.fyi>
		
			
				
	
	
		
			94 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			94 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{ depot, lib, verifyTag, discr, discrDef, match, matchLam }:
 | 
						|
 | 
						|
let
 | 
						|
  inherit (depot.nix.runTestsuite)
 | 
						|
    runTestsuite
 | 
						|
    assertEq
 | 
						|
    it
 | 
						|
    ;
 | 
						|
 | 
						|
  isTag-test = it "checks whether something is a tag" [
 | 
						|
    (assertEq "is Tag"
 | 
						|
      (verifyTag { foo = "bar"; })
 | 
						|
      {
 | 
						|
        isTag = true;
 | 
						|
        name = "foo";
 | 
						|
        val = "bar";
 | 
						|
        errmsg = null;
 | 
						|
      })
 | 
						|
    (assertEq "is not Tag"
 | 
						|
      (removeAttrs (verifyTag { foo = "bar"; baz = 42; }) [ "errmsg" ])
 | 
						|
      {
 | 
						|
        isTag = false;
 | 
						|
        name = null;
 | 
						|
        val = null;
 | 
						|
      })
 | 
						|
  ];
 | 
						|
 | 
						|
  discr-test = it "can discr things" [
 | 
						|
    (assertEq "id"
 | 
						|
      (discr [
 | 
						|
        { a = lib.const true; }
 | 
						|
      ] "x")
 | 
						|
      { a = "x"; })
 | 
						|
    (assertEq "bools here, ints there"
 | 
						|
      (discr [
 | 
						|
        { bool = lib.isBool; }
 | 
						|
        { int = lib.isInt; }
 | 
						|
      ] 25)
 | 
						|
      { int = 25; })
 | 
						|
    (assertEq "bools here, ints there 2"
 | 
						|
      (discr [
 | 
						|
        { bool = lib.isBool; }
 | 
						|
        { int = lib.isInt; }
 | 
						|
      ]
 | 
						|
        true)
 | 
						|
      { bool = true; })
 | 
						|
    (assertEq "fallback to default"
 | 
						|
      (discrDef "def" [
 | 
						|
        { bool = lib.isBool; }
 | 
						|
        { int = lib.isInt; }
 | 
						|
      ] "foo")
 | 
						|
      { def = "foo"; })
 | 
						|
  ];
 | 
						|
 | 
						|
  match-test = it "can match things" [
 | 
						|
    (assertEq "match example"
 | 
						|
      (
 | 
						|
        let
 | 
						|
          success = { res = 42; };
 | 
						|
          failure = { err = "no answer"; };
 | 
						|
          matcher = {
 | 
						|
            res = i: i + 1;
 | 
						|
            err = _: 0;
 | 
						|
          };
 | 
						|
        in
 | 
						|
        {
 | 
						|
          one = match success matcher;
 | 
						|
          two = match failure matcher;
 | 
						|
        }
 | 
						|
      )
 | 
						|
      {
 | 
						|
        one = 43;
 | 
						|
        two = 0;
 | 
						|
      })
 | 
						|
    (assertEq "matchLam & pipe"
 | 
						|
      (lib.pipe { foo = 42; } [
 | 
						|
        (matchLam {
 | 
						|
          foo = i: if i < 23 then { small = i; } else { big = i; };
 | 
						|
          bar = _: { small = 5; };
 | 
						|
        })
 | 
						|
        (matchLam {
 | 
						|
          small = i: "yay it was small";
 | 
						|
          big = i: "whoo it was big!";
 | 
						|
        })
 | 
						|
      ])
 | 
						|
      "whoo it was big!")
 | 
						|
  ];
 | 
						|
 | 
						|
in
 | 
						|
runTestsuite "tag" [
 | 
						|
  isTag-test
 | 
						|
  discr-test
 | 
						|
  match-test
 | 
						|
]
 |