diff options
Diffstat (limited to 'lib/tests/misc.nix')
-rw-r--r-- | lib/tests/misc.nix | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/lib/tests/misc.nix b/lib/tests/misc.nix index 408ea54162938..d59f5586b82d7 100644 --- a/lib/tests/misc.nix +++ b/lib/tests/misc.nix @@ -58,6 +58,7 @@ let genList getExe getExe' + getLicenseFromSpdxIdOr groupBy groupBy' hasAttrByPath @@ -102,6 +103,7 @@ let testAllTrue toBaseDigits toHexString + fromHexString toInt toIntBase10 toShellVars @@ -286,6 +288,21 @@ runTests { expected = "FA"; }; + testFromHexStringFirstExample = { + expr = fromHexString "FF"; + expected = 255; + }; + + testFromHexStringSecondExample = { + expr = fromHexString (builtins.hashString "sha256" "test"); + expected = 9223372036854775807; + }; + + testFromHexStringWithPrefix = { + expr = fromHexString "0Xf"; + expected = 15; + }; + testToBaseDigits = { expr = toBaseDigits 2 6; expected = [ 1 1 0 ]; @@ -352,6 +369,72 @@ runTests { expected = "hellohellohellohellohello"; }; + # Test various strings are trimmed correctly + testTrimString = { + expr = + let + testValues = f: mapAttrs (_: f) { + empty = ""; + cr = "\r"; + lf = "\n"; + tab = "\t"; + spaces = " "; + leading = " Hello, world"; + trailing = "Hello, world "; + mixed = " Hello, world "; + mixed-tabs = " \t\tHello, world \t \t "; + multiline = " Hello,\n world! "; + multiline-crlf = " Hello,\r\n world! "; + }; + in + { + leading = testValues (strings.trimWith { start = true; }); + trailing = testValues (strings.trimWith { end = true; }); + both = testValues strings.trim; + }; + expected = { + leading = { + empty = ""; + cr = ""; + lf = ""; + tab = ""; + spaces = ""; + leading = "Hello, world"; + trailing = "Hello, world "; + mixed = "Hello, world "; + mixed-tabs = "Hello, world \t \t "; + multiline = "Hello,\n world! "; + multiline-crlf = "Hello,\r\n world! "; + }; + trailing = { + empty = ""; + cr = ""; + lf = ""; + tab = ""; + spaces = ""; + leading = " Hello, world"; + trailing = "Hello, world"; + mixed = " Hello, world"; + mixed-tabs = " \t\tHello, world"; + multiline = " Hello,\n world!"; + multiline-crlf = " Hello,\r\n world!"; + }; + both = { + empty = ""; + cr = ""; + lf = ""; + tab = ""; + spaces = ""; + leading = "Hello, world"; + trailing = "Hello, world"; + mixed = "Hello, world"; + mixed-tabs = "Hello, world"; + multiline = "Hello,\n world!"; + multiline-crlf = "Hello,\r\n world!"; + }; + }; + }; + testSplitStringsSimple = { expr = strings.splitString "." "a.b.c.d"; expected = [ "a" "b" "c" "d" ]; @@ -2307,6 +2390,25 @@ runTests { getExe' { type = "derivation"; } "dir/executable" ); + testGetLicenseFromSpdxIdOrExamples = { + expr = [ + (getLicenseFromSpdxIdOr "MIT" null) + (getLicenseFromSpdxIdOr "mIt" null) + (getLicenseFromSpdxIdOr "MY LICENSE" lib.licenses.free) + (getLicenseFromSpdxIdOr "MY LICENSE" null) + ]; + expected = [ + lib.licenses.mit + lib.licenses.mit + lib.licenses.free + null + ]; + }; + + testGetLicenseFromSpdxIdOrThrow = testingThrow ( + getLicenseFromSpdxIdOr "MY LICENSE" (throw "No SPDX ID matches MY LICENSE") + ); + testPlatformMatch = { expr = meta.platformMatch { system = "x86_64-linux"; } "x86_64-linux"; expected = true; |