diff options
author | zimbatm <zimbatm@zimbatm.com> | 2023-07-22 13:38:31 +0200 |
---|---|---|
committer | zimbatm <zimbatm@zimbatm.com> | 2023-07-22 17:53:52 +0200 |
commit | 73ee03cbc5a20c6c3d61946558e7aea4a48c5119 (patch) | |
tree | da40e59e5846c9ae030a2611c5047bd23c7564e1 /pkgs/build-support | |
parent | c04c43ccd1f7b789ffc3363d9c46fb98e79afd41 (diff) |
writers: split out the tests
Make it easier to run and debug individual tests.
Diffstat (limited to 'pkgs/build-support')
-rw-r--r-- | pkgs/build-support/writers/test.nix | 166 |
1 files changed, 81 insertions, 85 deletions
diff --git a/pkgs/build-support/writers/test.nix b/pkgs/build-support/writers/test.nix index 561c3e4ab0021..9484f8bbe31b5 100644 --- a/pkgs/build-support/writers/test.nix +++ b/pkgs/build-support/writers/test.nix @@ -12,29 +12,49 @@ }: with writers; let + expectSuccess = test: + runCommand "run-${test.name}" {} '' + if test "$(${test})" != "success"; then + echo 'test ${test.name} failed' + exit 1 + fi - bin = { - bash = writeBashBin "test-writers-bash-bin" '' - if [[ "test" == "test" ]]; then echo "success"; fi + touch $out ''; - dash = writeDashBin "test-writers-dash-bin" '' - test '~' = '~' && echo 'success' + expectSuccessBin = test: + runCommand "run-${test.name}" {} '' + if test "$(${lib.getExe test})" != "success"; then + echo 'test ${test.name} failed' + exit 1 + fi + + touch $out ''; +in +lib.recurseIntoAttrs { + bin = lib.recurseIntoAttrs { + bash = expectSuccessBin (writeBashBin "test-writers-bash-bin" '' + if [[ "test" == "test" ]]; then echo "success"; fi + ''); - fish = writeFishBin "test-writers-fish-bin" '' + dash = expectSuccessBin (writeDashBin "test-writers-dash-bin" '' + test '~' = '~' && echo 'success' + ''); + + fish = expectSuccessBin (writeFishBin "test-writers-fish-bin" '' if test "test" = "test" echo "success" end - ''; + ''); - rust = writeRustBin "test-writers-rust-bin" {} '' + rust = expectSuccessBin (writeRustBin "test-writers-rust-bin" {} '' fn main(){ println!("success") } - ''; + ''); - haskell = writeHaskellBin "test-writers-haskell-bin" { libraries = [ haskellPackages.acme-default ]; } '' + haskell = expectSuccessBin (writeHaskellBin "test-writers-haskell-bin" { libraries = [ haskellPackages.acme-default ]; } '' import Data.Default int :: Int @@ -44,9 +64,9 @@ let main = case int of 18871 -> putStrLn $ id "success" _ -> print "fail" - ''; + ''); - js = writeJSBin "test-writers-js-bin" { libraries = [ nodePackages.semver ]; } '' + js = expectSuccessBin (writeJSBin "test-writers-js-bin" { libraries = [ nodePackages.semver ]; } '' var semver = require('semver'); if (semver.valid('1.2.3')) { @@ -54,59 +74,57 @@ let } else { console.log('fail') } - ''; + ''); - perl = writePerlBin "test-writers-perl-bin" { libraries = [ perlPackages.boolean ]; } '' + perl = expectSuccessBin (writePerlBin "test-writers-perl-bin" { libraries = [ perlPackages.boolean ]; } '' use boolean; print "success\n" if true; - ''; + ''); - pypy2 = writePyPy2Bin "test-writers-pypy2-bin" { libraries = [ pypy2Packages.enum ]; } '' + pypy2 = expectSuccessBin (writePyPy2Bin "test-writers-pypy2-bin" { libraries = [ pypy2Packages.enum ]; } '' from enum import Enum - class Test(Enum): a = "success" - print Test.a - ''; + ''); - python3 = writePython3Bin "test-writers-python3-bin" { libraries = [ python3Packages.pyyaml ]; } '' + python3 = expectSuccessBin (writePython3Bin "test-writers-python3-bin" { libraries = [ python3Packages.pyyaml ]; } '' import yaml - y = yaml.load(""" + y = yaml.safe_load(""" - test: success """) print(y[0]['test']) - ''; + ''); - pypy3 = writePyPy3Bin "test-writers-pypy3-bin" { libraries = [ pypy3Packages.pyyaml ]; } '' + pypy3 = expectSuccessBin (writePyPy3Bin "test-writers-pypy3-bin" { libraries = [ pypy3Packages.pyyaml ]; } '' import yaml - y = yaml.load(""" + y = yaml.safe_load(""" - test: success """) print(y[0]['test']) - ''; + ''); }; - simple = { - bash = writeBash "test-writers-bash" '' + simple = lib.recurseIntoAttrs { + bash = expectSuccess (writeBash "test-writers-bash" '' if [[ "test" == "test" ]]; then echo "success"; fi - ''; + ''); - dash = writeDash "test-writers-dash" '' + dash = expectSuccess (writeDash "test-writers-dash" '' test '~' = '~' && echo 'success' - ''; + ''); - fish = writeFish "test-writers-fish" '' + fish = expectSuccess (writeFish "test-writers-fish" '' if test "test" = "test" echo "success" end - ''; + ''); - haskell = writeHaskell "test-writers-haskell" { libraries = [ haskellPackages.acme-default ]; } '' + haskell = expectSuccess (writeHaskell "test-writers-haskell" { libraries = [ haskellPackages.acme-default ]; } '' import Data.Default int :: Int @@ -116,9 +134,9 @@ let main = case int of 18871 -> putStrLn $ id "success" _ -> print "fail" - ''; + ''); - js = writeJS "test-writers-js" { libraries = [ nodePackages.semver ]; } '' + js = expectSuccess (writeJS "test-writers-js" { libraries = [ nodePackages.semver ]; } '' var semver = require('semver'); if (semver.valid('1.2.3')) { @@ -126,43 +144,41 @@ let } else { console.log('fail') } - ''; + ''); - perl = writePerl "test-writers-perl" { libraries = [ perlPackages.boolean ]; } '' + perl = expectSuccess (writePerl "test-writers-perl" { libraries = [ perlPackages.boolean ]; } '' use boolean; print "success\n" if true; - ''; + ''); - pypy2 = writePyPy2 "test-writers-pypy2" { libraries = [ pypy2Packages.enum ]; } '' + pypy2 = expectSuccess (writePyPy2 "test-writers-pypy2" { libraries = [ pypy2Packages.enum ]; } '' from enum import Enum - class Test(Enum): a = "success" - print Test.a - ''; + ''); - python3 = writePython3 "test-writers-python3" { libraries = [ python3Packages.pyyaml ]; } '' + python3 = expectSuccess (writePython3 "test-writers-python3" { libraries = [ python3Packages.pyyaml ]; } '' import yaml - y = yaml.load(""" + y = yaml.safe_load(""" - test: success """) print(y[0]['test']) - ''; + ''); - pypy3 = writePyPy3 "test-writers-pypy3" { libraries = [ pypy3Packages.pyyaml ]; } '' + pypy3 = expectSuccess (writePyPy3 "test-writers-pypy3" { libraries = [ pypy3Packages.pyyaml ]; } '' import yaml - y = yaml.load(""" + y = yaml.safe_load(""" - test: success """) print(y[0]['test']) - ''; + ''); - fsharp = makeFSharpWriter { + fsharp = expectSuccess (makeFSharpWriter { libraries = { fetchNuGet }: [ (fetchNuGet { pname = "FSharp.SystemTextJson"; version = "0.17.4"; sha256 = "1bplzc9ybdqspii4q28l8gmfvzpkmgq5l1hlsiyg2h46w881lwg2"; }) ]; @@ -183,31 +199,31 @@ let then "success" else "failed" |> printfn "%s" - ''; + ''); - pypy2NoLibs = writePyPy2 "test-writers-pypy2-no-libs" {} '' + pypy2NoLibs = expectSuccess (writePyPy2 "test-writers-pypy2-no-libs" {} '' print("success") - ''; + ''); - python3NoLibs = writePython3 "test-writers-python3-no-libs" {} '' + python3NoLibs = expectSuccess (writePython3 "test-writers-python3-no-libs" {} '' print("success") - ''; + ''); - pypy3NoLibs = writePyPy3 "test-writers-pypy3-no-libs" {} '' + pypy3NoLibs = expectSuccess (writePyPy3 "test-writers-pypy3-no-libs" {} '' print("success") - ''; + ''); - fsharpNoNugetDeps = writeFSharp "test-writers-fsharp-no-nuget-deps" '' + fsharpNoNugetDeps = expectSuccess (writeFSharp "test-writers-fsharp-no-nuget-deps" '' printfn "success" - ''; + ''); }; - - path = { - bash = writeBash "test-writers-bash-path" (writeText "test" '' + path = lib.recurseIntoAttrs { + bash = expectSuccess (writeBash "test-writers-bash-path" (writeText "test" '' if [[ "test" == "test" ]]; then echo "success"; fi - ''); - haskell = writeHaskell "test-writers-haskell-path" { libraries = [ haskellPackages.acme-default ]; } (writeText "test" '' + '')); + + haskell = expectSuccess (writeHaskell "test-writers-haskell-path" { libraries = [ haskellPackages.acme-default ]; } (writeText "test" '' import Data.Default int :: Int @@ -217,26 +233,6 @@ let main = case int of 18871 -> putStrLn $ id "success" _ -> print "fail" - ''); + '')); }; - - writeTest = expectedValue: name: test: - writeDash "run-${name}" '' - if test "$(${test})" != "${expectedValue}"; then - echo 'test ${test} failed' - exit 1 - fi - ''; - -in runCommand "test-writers" { - passthru = { inherit writeTest bin simple path; }; - meta.platforms = lib.platforms.all; -} '' - ${lib.concatMapStringsSep "\n" (test: writeTest "success" test.name "${test}/bin/${test.name}") (lib.attrValues bin)} - ${lib.concatMapStringsSep "\n" (test: writeTest "success" test.name test) (lib.attrValues simple)} - ${lib.concatMapStringsSep "\n" (test: writeTest "success" test.name test) (lib.attrValues path)} - - echo 'nix-writers successfully tested' >&2 - touch $out -'' - +} |