Skip to content

Commit

Permalink
writers: split out the tests
Browse files Browse the repository at this point in the history
Make it easier to run and debug individual tests.
  • Loading branch information
zimbatm committed Jul 22, 2023
1 parent c04c43c commit 73ee03c
Show file tree
Hide file tree
Showing 3 changed files with 81 additions and 112 deletions.
166 changes: 81 additions & 85 deletions pkgs/build-support/writers/test.nix
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -44,69 +64,67 @@ 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')) {
console.log('success')
} 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
Expand All @@ -116,53 +134,51 @@ 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')) {
console.log('success')
} 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"; })
];
Expand All @@ -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
Expand All @@ -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
''

}
1 change: 0 additions & 1 deletion pkgs/test/haskell/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,5 @@ lib.recurseIntoAttrs {
cabalSdist = callPackage ./cabalSdist { };
documentationTarball = callPackage ./documentationTarball { };
setBuildTarget = callPackage ./setBuildTarget { };
writers = callPackage ./writers { };
incremental = callPackage ./incremental { };
}
26 changes: 0 additions & 26 deletions pkgs/test/haskell/writers/default.nix

This file was deleted.

0 comments on commit 73ee03c

Please sign in to comment.