diff options
Diffstat (limited to 'users/Profpatsch/writers/tests.nix')
-rw-r--r-- | users/Profpatsch/writers/tests.nix | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/users/Profpatsch/writers/tests.nix b/users/Profpatsch/writers/tests.nix new file mode 100644 index 000000000000..680c37a2ec02 --- /dev/null +++ b/users/Profpatsch/writers/tests.nix @@ -0,0 +1,85 @@ +{ depot, pkgs, python3, python3Lib, rustSimpleLib, rustSimple, testRustSimple }: + +let + run = drv: depot.nix.runExecline.local "run-${drv.name}" {} [ + "if" [ drv ] + "importas" "out" "out" + "${pkgs.coreutils}/bin/touch" "$out" + ]; + + pythonTransitiveLib = python3Lib { + name = "transitive"; + } '' + def transitive(s): + return s + " 1 2 3" + ''; + + pythonTestLib = python3Lib { + name = "test_lib"; + libraries = _: [ pythonTransitiveLib ]; + } '' + import transitive + def test(): + return transitive.transitive("test") + ''; + + pythonWithLib = run (python3 { + name = "python-with-lib"; + libraries = _: [ pythonTestLib ]; + } '' + import test_lib + + assert(test_lib.test() == "test 1 2 3") + ''); + + + rustTransitiveLib = testRustSimple (rustSimpleLib { + name = "transitive"; + } '' + pub fn transitive(s: &str) -> String { + let mut new = s.to_string(); + new.push_str(" 1 2 3"); + new + } + + #[cfg(test)] + mod tests { + use super::*; + + #[test] + fn test_transitive() { + assert_eq!(transitive("foo").as_str(), "foo 1 2 3") + } + } + ''); + + rustTestLib = rustSimpleLib { + name = "test_lib"; + dependencies = [ rustTransitiveLib ]; + } '' + extern crate transitive; + use transitive::{transitive}; + pub fn test() -> String { + transitive("test") + } + ''; + + rustWithLib = run (rustSimple { + name = "rust-with-lib"; + dependencies = [ rustTestLib ]; + } '' + extern crate test_lib; + + fn main() { + assert_eq!(test_lib::test(), String::from("test 1 2 3")); + } + ''); + + +in { + inherit + pythonWithLib + rustTransitiveLib + rustWithLib + ; +} |