This reverts commit 6813598c17.
Reason for revert: This function is a re-implementation of
builtins.unsafeDiscardOutputDependency which I missed at the time.
Change-Id: I5bb52bfd5e8d51defaf90ee795b0fe99be84f6db
Reviewed-on: https://cl.tvl.fyi/c/depot/+/7265
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
		
	
			
		
			
				
	
	
		
			99 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { depot, lib, ... }:
 | |
| 
 | |
| let
 | |
|   inherit (depot.nix.runTestsuite)
 | |
|     runTestsuite
 | |
|     it
 | |
|     assertEq
 | |
|     assertThrows
 | |
|     assertDoesNotThrow
 | |
|     ;
 | |
| 
 | |
|   inherit (depot.nix.utils)
 | |
|     isDirectory
 | |
|     isRegularFile
 | |
|     isSymlink
 | |
|     pathType
 | |
|     storePathName
 | |
|     ;
 | |
| 
 | |
|   assertUtilsPred = msg: act: exp: [
 | |
|     (assertDoesNotThrow "${msg} does not throw" act)
 | |
|     (assertEq msg (builtins.tryEval act).value exp)
 | |
|   ];
 | |
| 
 | |
|   pathPredicates = it "judges paths correctly" (lib.flatten [
 | |
|     # isDirectory
 | |
|     (assertUtilsPred "directory isDirectory"
 | |
|       (isDirectory ./directory)
 | |
|       true)
 | |
|     (assertUtilsPred "symlink not isDirectory"
 | |
|       (isDirectory ./symlink-directory)
 | |
|       false)
 | |
|     (assertUtilsPred "file not isDirectory"
 | |
|       (isDirectory ./directory/file)
 | |
|       false)
 | |
|     # isRegularFile
 | |
|     (assertUtilsPred "file isRegularFile"
 | |
|       (isRegularFile ./directory/file)
 | |
|       true)
 | |
|     (assertUtilsPred "symlink not isRegularFile"
 | |
|       (isRegularFile ./symlink-file)
 | |
|       false)
 | |
|     (assertUtilsPred "directory not isRegularFile"
 | |
|       (isRegularFile ./directory)
 | |
|       false)
 | |
|     # isSymlink
 | |
|     (assertUtilsPred "symlink to file isSymlink"
 | |
|       (isSymlink ./symlink-file)
 | |
|       true)
 | |
|     (assertUtilsPred "symlink to directory isSymlink"
 | |
|       (isSymlink ./symlink-directory)
 | |
|       true)
 | |
|     (assertUtilsPred "symlink to symlink isSymlink"
 | |
|       (isSymlink ./symlink-symlink-file)
 | |
|       true)
 | |
|     (assertUtilsPred "symlink to missing file isSymlink"
 | |
|       (isSymlink ./missing)
 | |
|       true)
 | |
|     (assertUtilsPred "directory not isSymlink"
 | |
|       (isSymlink ./directory)
 | |
|       false)
 | |
|     (assertUtilsPred "file not isSymlink"
 | |
|       (isSymlink ./directory/file)
 | |
|       false)
 | |
|     # missing files throw
 | |
|     (assertThrows "isDirectory throws on missing file"
 | |
|       (isDirectory ./does-not-exist))
 | |
|     (assertThrows "isRegularFile throws on missing file"
 | |
|       (isRegularFile ./does-not-exist))
 | |
|     (assertThrows "isSymlink throws on missing file"
 | |
|       (isSymlink ./does-not-exist))
 | |
|   ]);
 | |
| 
 | |
|   cheddarStorePath =
 | |
|     builtins.unsafeDiscardStringContext depot.tools.cheddar.outPath;
 | |
| 
 | |
|   cleanedSource = lib.cleanSource ./.;
 | |
| 
 | |
|   storePathNameTests = it "correctly gets the basename of a store path" [
 | |
|     (assertEq "base name of a derivation"
 | |
|       (storePathName depot.tools.cheddar)
 | |
|       depot.tools.cheddar.name)
 | |
|     (assertEq "base name of a store path string"
 | |
|       (storePathName cheddarStorePath)
 | |
|       depot.tools.cheddar.name)
 | |
|     (assertEq "base name of a path within a store path"
 | |
|       (storePathName "${cheddarStorePath}/bin/cheddar") "cheddar")
 | |
|     (assertEq "base name of a path"
 | |
|       (storePathName ../default.nix) "default.nix")
 | |
|     (assertEq "base name of a cleanSourced path"
 | |
|       (storePathName cleanedSource)
 | |
|       cleanedSource.name)
 | |
|   ];
 | |
| in
 | |
| 
 | |
| runTestsuite "nix.utils" [
 | |
|   pathPredicates
 | |
|   storePathNameTests
 | |
| ]
 |