tvl-depot/users/Profpatsch/writers/tests.nix
Profpatsch 1261616bff 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 <mail@tazj.in>
Reviewed-by: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
2021-01-03 16:29:57 +00:00

75 lines
1.4 KiB
Nix

{ depot, pkgs, python3, python3Lib, rustSimpleLib, rustSimple }:
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 = 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
rustTransitiveLib
rustWithLib
;
}