diff options
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/build-support/writers/test.nix')
-rw-r--r-- | infra/libkookie/nixpkgs/pkgs/build-support/writers/test.nix | 202 |
1 files changed, 202 insertions, 0 deletions
diff --git a/infra/libkookie/nixpkgs/pkgs/build-support/writers/test.nix b/infra/libkookie/nixpkgs/pkgs/build-support/writers/test.nix new file mode 100644 index 000000000000..d284bda43d05 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/build-support/writers/test.nix @@ -0,0 +1,202 @@ +{ + glib, + haskellPackages, + lib, + nodePackages, + perlPackages, + python2Packages, + python3Packages, + runCommand, + stdenv, + writers, + writeText +}: +with writers; +let + + bin = { + bash = writeBashBin "test_writers" '' + if [[ "test" == "test" ]]; then echo "success"; fi + ''; + + c = writeCBin "test_writers" { libraries = [ ]; } '' + #include <stdio.h> + int main() { + printf("success\n"); + return 0; + } + ''; + + dash = writeDashBin "test_writers" '' + test '~' = '~' && echo 'success' + ''; + + haskell = writeHaskellBin "test_writers" { libraries = [ haskellPackages.acme-default ]; } '' + import Data.Default + + int :: Int + int = def + + main :: IO () + main = case int of + 18871 -> putStrLn $ id "success" + _ -> print "fail" + ''; + + js = writeJSBin "test_writers" { libraries = [ nodePackages.semver ]; } '' + var semver = require('semver'); + + if (semver.valid('1.2.3')) { + console.log('success') + } else { + console.log('fail') + } + ''; + + perl = writePerlBin "test_writers" { libraries = [ perlPackages.boolean ]; } '' + use boolean; + print "success\n" if true; + ''; + + python2 = writePython2Bin "test_writers" { libraries = [ python2Packages.enum ]; } '' + from enum import Enum + + + class Test(Enum): + a = "success" + + + print Test.a + ''; + + python3 = writePython3Bin "test_writers" { libraries = [ python3Packages.pyyaml ]; } '' + import yaml + + y = yaml.load(""" + - test: success + """) + print(y[0]['test']) + ''; + }; + + simple = { + bash = writeBash "test_bash" '' + if [[ "test" == "test" ]]; then echo "success"; fi + ''; + + c = writeC "test_c" { libraries = [ glib.dev ]; } '' + #include <gio/gio.h> + #include <stdio.h> + int main() { + GApplication *application = g_application_new ("hello.world", G_APPLICATION_FLAGS_NONE); + g_application_register (application, NULL, NULL); + GNotification *notification = g_notification_new ("Hello world!"); + g_notification_set_body (notification, "This is an example notification."); + GIcon *icon = g_themed_icon_new ("dialog-information"); + g_notification_set_icon (notification, icon); + g_object_unref (icon); + g_object_unref (notification); + g_object_unref (application); + printf("success\n"); + return 0; + } + ''; + + dash = writeDash "test_dash" '' + test '~' = '~' && echo 'success' + ''; + + haskell = writeHaskell "test_haskell" { libraries = [ haskellPackages.acme-default ]; } '' + import Data.Default + + int :: Int + int = def + + main :: IO () + main = case int of + 18871 -> putStrLn $ id "success" + _ -> print "fail" + ''; + + js = writeJS "test_js" { libraries = [ nodePackages.semver ]; } '' + var semver = require('semver'); + + if (semver.valid('1.2.3')) { + console.log('success') + } else { + console.log('fail') + } + ''; + + perl = writePerl "test_perl" { libraries = [ perlPackages.boolean ]; } '' + use boolean; + print "success\n" if true; + ''; + + python2 = writePython2 "test_python2" { libraries = [ python2Packages.enum ]; } '' + from enum import Enum + + + class Test(Enum): + a = "success" + + + print Test.a + ''; + + python3 = writePython3 "test_python3" { libraries = [ python3Packages.pyyaml ]; } '' + import yaml + + y = yaml.load(""" + - test: success + """) + print(y[0]['test']) + ''; + + python2NoLibs = writePython2 "test_python2_no_libs" {} '' + print("success") + ''; + + python3NoLibs = writePython3 "test_python3_no_libs" {} '' + print("success") + ''; + }; + + + path = { + bash = writeBash "test_bash" (writeText "test" '' + if [[ "test" == "test" ]]; then echo "success"; fi + ''); + haskell = writeHaskell "test_haskell" { 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: test: + writeDash "test-writers" '' + if test "$(${test})" != "${expectedValue}"; then + echo 'test ${test} failed' + exit 1 + fi + ''; + +in runCommand "test-writers" { + passthru = { inherit writeTest bin simple; }; + meta.platforms = stdenv.lib.platforms.all; +} '' + ${lib.concatMapStringsSep "\n" (test: writeTest "success" "${test}/bin/test_writers") (lib.attrValues bin)} + ${lib.concatMapStringsSep "\n" (test: writeTest "success" test) (lib.attrValues simple)} + ${lib.concatMapStringsSep "\n" (test: writeTest "success" test) (lib.attrValues path)} + + echo 'nix-writers successfully tested' >&2 + touch $out +'' + |