difftreelog
feat accept plain functions for std.native outputs
in: master
2 files changed
crates/jrsonnet-stdlib/src/lib.rsdiffbeforeafterboth237 /// Used for `std.extVar`237 /// Used for `std.extVar`238 pub ext_vars: HashMap<IStr, TlaArg>,238 pub ext_vars: HashMap<IStr, TlaArg>,239 /// Used for `std.native`239 /// Used for `std.native`240 pub ext_natives: HashMap<IStr, Cc<TraceBox<dyn Builtin>>>,240 pub ext_natives: HashMap<IStr, FuncVal>,241 /// Used for `std.trace`241 /// Used for `std.trace`242 pub trace_printer: Box<dyn TracePrinter>,242 pub trace_printer: Box<dyn TracePrinter>,243 /// Used for `std.thisFile`243 /// Used for `std.thisFile`tests/tests/std_native.rsdiffbeforeafterboth--- /dev/null
+++ b/tests/tests/std_native.rs
@@ -0,0 +1,21 @@
+use jrsonnet_evaluator::{function::builtin, trace::PathResolver, State};
+use jrsonnet_stdlib::ContextInitializer;
+
+#[builtin]
+fn example_native(a: u32, b: u32) -> u32 {
+ a + b
+}
+
+#[test]
+fn std_native() {
+ let state = State::default();
+ let std = ContextInitializer::new(state.clone(), PathResolver::Absolute);
+ std.add_native("example", example_native::INST);
+ state.set_context_initializer(std);
+
+ assert!(state
+ .evaluate_snippet("test", "std.native('example')(1, 3) == 4")
+ .unwrap()
+ .as_bool()
+ .expect("boolean output"));
+}