From 1261616bff04b6a5cb966778da8a336245c08979 Mon Sep 17 00:00:00 2001 From: Profpatsch Date: Sat, 2 Jan 2021 14:54:39 +0100 Subject: feat(Profpatsch/writers): add rustSimple writers A bunch of writer functions wrapping the `buildRustCrate` functionality of nixpkgs. Can be used to write inline rust code, or rust code read from files with `builtins.readFile`. Change-Id: I9d74e9381b858b485925e4dc3fbb7fc392877c0a Reviewed-on: https://cl.tvl.fyi/c/depot/+/2318 Reviewed-by: tazjin Reviewed-by: Profpatsch Tested-by: BuildkiteCI --- users/Profpatsch/writers/tests.nix | 58 +++++++++++++++++++++++++++++++++----- 1 file changed, 51 insertions(+), 7 deletions(-) (limited to 'users/Profpatsch/writers/tests.nix') diff --git a/users/Profpatsch/writers/tests.nix b/users/Profpatsch/writers/tests.nix index 13ddfd10e976..ce9c54016211 100644 --- a/users/Profpatsch/writers/tests.nix +++ b/users/Profpatsch/writers/tests.nix @@ -1,31 +1,75 @@ -{ depot, pkgs, python3, python3Lib }: +{ depot, pkgs, python3, python3Lib, rustSimpleLib, rustSimple }: let - transitiveLib = python3Lib { + 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" ''; - testLib = python3Lib { + pythonTestLib = python3Lib { name = "test_lib"; - libraries = _: [ transitiveLib ]; + libraries = _: [ pythonTransitiveLib ]; } '' import transitive def test(): return transitive.transitive("test") ''; - pythonWithLib = python3 "python-with-lib" { - libraries = _: [ testLib ]; + pythonWithLib = run (python3 { + name = "python-with-lib"; + libraries = _: [ pythonTestLib ]; } '' import test_lib assert(test_lib.test() == "test 1 2 3") + ''); + + + rustTransitiveLib = rustSimpleLib { + name = "transitive"; + } '' + pub fn transitive(s: &str) -> String { + let mut new = s.to_string(); + new.push_str(" 1 2 3"); + new + } ''; + 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; + pythonWithLib + rustTransitiveLib + rustWithLib + ; } -- cgit 1.4.1