aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/pkgs/build-support/writers/test.nix
diff options
context:
space:
mode:
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/build-support/writers/test.nix')
-rw-r--r--infra/libkookie/nixpkgs/pkgs/build-support/writers/test.nix202
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
+''
+