use embed_nu::{CommandGroupConfig, Context, NewEmpty, PipelineData, RustyValue}; #[test] fn it_evals_strings() { let mut ctx = get_context(); let pipeline = ctx .eval_raw( r#"echo "Hello World from this eval""#, PipelineData::empty(), ) .unwrap(); ctx.print_pipeline(pipeline).unwrap() } #[derive(RustyValue)] struct TestArg { foo: String, bar: usize, } #[test] fn it_executes_functions() { let mut ctx = get_context(); ctx.eval_raw( r#" def hello [] { echo "Hello World from this script"; echo # dummy echo so I don't have to print the output } "#, PipelineData::empty(), ) .unwrap(); ctx.call_fn("hello", [] as [String; 0]).unwrap(); assert!(ctx.has_fn("world") == false); let test_arg = TestArg { foo: String::from("Hello World"), bar: 12, }; let pipeline = ctx.call_fn("echo", [test_arg]).unwrap(); ctx.print_pipeline(pipeline).unwrap(); } fn get_context() -> Context { Context::builder() .with_command_groups(CommandGroupConfig::default().all_groups(true)) .add_parent_env_vars() .build() .unwrap() }