nixpkgs/pkgs/build-support/writers/test.nix

181 lines
4.2 KiB
Nix
Raw Normal View History

2021-03-04 17:37:30 +00:00
{ glib
, haskellPackages
, lib
, nodePackages
, perlPackages
, python2Packages
, python3Packages
, runCommand
, writers
, writeText
}:
2018-11-27 02:58:17 +00:00
with writers;
let
bin = {
bash = writeBashBin "test-writers-bash-bin" ''
2018-11-27 02:58:17 +00:00
if [[ "test" == "test" ]]; then echo "success"; fi
'';
dash = writeDashBin "test-writers-dash-bin" ''
2018-11-27 02:58:17 +00:00
test '~' = '~' && echo 'success'
'';
rust = writeRustBin "test-writers-rust-bin" {} ''
2021-01-12 10:03:08 +00:00
fn main(){
println!("success")
}
'';
haskell = writeHaskellBin "test-writers-haskell-bin" { libraries = [ haskellPackages.acme-default ]; } ''
2018-11-27 02:58:17 +00:00
import Data.Default
int :: Int
int = def
main :: IO ()
main = case int of
18871 -> putStrLn $ id "success"
_ -> print "fail"
'';
js = writeJSBin "test-writers-js-bin" { libraries = [ nodePackages.semver ]; } ''
2018-11-27 02:58:17 +00:00
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 ]; } ''
2018-11-27 02:58:17 +00:00
use boolean;
print "success\n" if true;
'';
python2 = writePython2Bin "test-writers-python2-bin" { libraries = [ python2Packages.enum ]; } ''
2018-11-27 02:58:17 +00:00
from enum import Enum
2018-11-27 02:58:17 +00:00
class Test(Enum):
a = "success"
2018-11-27 02:58:17 +00:00
print Test.a
'';
python3 = writePython3Bin "test-writers-python3-bin" { libraries = [ python3Packages.pyyaml ]; } ''
2018-11-27 02:58:17 +00:00
import yaml
y = yaml.load("""
- test: success
""")
print(y[0]['test'])
'';
};
simple = {
bash = writeBash "test-writers-bash" ''
2018-11-27 02:58:17 +00:00
if [[ "test" == "test" ]]; then echo "success"; fi
'';
dash = writeDash "test-writers-dash" ''
2018-11-27 02:58:17 +00:00
test '~' = '~' && echo 'success'
'';
haskell = writeHaskell "test-writers-haskell" { libraries = [ haskellPackages.acme-default ]; } ''
2018-11-27 02:58:17 +00:00
import Data.Default
int :: Int
int = def
main :: IO ()
main = case int of
18871 -> putStrLn $ id "success"
_ -> print "fail"
'';
js = writeJS "test-writers-js" { libraries = [ nodePackages.semver ]; } ''
2018-11-27 02:58:17 +00:00
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 ]; } ''
2018-11-27 02:58:17 +00:00
use boolean;
print "success\n" if true;
'';
python2 = writePython2 "test-writers-python2" { libraries = [ python2Packages.enum ]; } ''
2018-11-27 02:58:17 +00:00
from enum import Enum
2018-11-27 02:58:17 +00:00
class Test(Enum):
a = "success"
2018-11-27 02:58:17 +00:00
print Test.a
'';
python3 = writePython3 "test-writers-python3" { libraries = [ python3Packages.pyyaml ]; } ''
2018-11-27 02:58:17 +00:00
import yaml
y = yaml.load("""
- test: success
""")
print(y[0]['test'])
'';
python2NoLibs = writePython2 "test-writers-python2-no-libs" {} ''
print("success")
'';
python3NoLibs = writePython3 "test-writers-python3-no-libs" {} ''
print("success")
'';
2018-11-27 02:58:17 +00:00
};
path = {
bash = 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" ''
import Data.Default
int :: Int
int = def
main :: IO ()
main = case int of
18871 -> putStrLn $ id "success"
_ -> print "fail"
'');
};
writeTest = expectedValue: name: test:
writeDash "run-${name}" ''
2018-11-27 02:58:17 +00:00
if test "$(${test})" != "${expectedValue}"; then
echo 'test ${test} failed'
exit 1
fi
'';
in runCommand "test-writers" {
passthru = { inherit writeTest bin simple path; };
2021-01-24 00:40:18 +00:00
meta.platforms = lib.platforms.all;
2018-11-27 02:58:17 +00:00
} ''
${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)}
2018-11-27 02:58:17 +00:00
echo 'nix-writers successfully tested' >&2
touch $out
''