Files
regorus/tests/arc.rs
Anand Krishnamoorthi e86b590f91 no_std support (#232)
- Disable default features in dependencies
- Use anyhow::Error::msg to map errors. Note: anyhow will itself be removed later.
- lazy_static/spin_no_std used in no_std environments
- ensure_no_std binary is built to target  thumbv7m-none-eabi to ensure that
  there are no std dependencies.  thumbv7m-none-eabi target has no std support.
- The opa-no-std feature enables only those Regorus features that work with no_std.
- Enable tests with no_std
- Update sizes of regorus binary in  README.md
- Ensure that regorus example can be built with only std
- Ensure that regorus example can be built with no_std

Signed-off-by: Anand Krishnamoorthi <anakrish@microsoft.com>
2024-05-13 06:42:35 -07:00

37 lines
858 B
Rust

// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
#![allow(unused)]
use lazy_static::lazy_static;
use std::sync::Mutex;
use regorus::*;
#[cfg(feature = "arc")]
// Ensure that types can be s
lazy_static! {
static ref VALUE: Value = Value::Null;
static ref ENGINE: Mutex<Engine> = Mutex::new(Engine::new());
// static ref ENGINE: Engine = Engine::new();
}
#[test]
#[cfg(feature = "arc")]
fn shared_engine() -> anyhow::Result<()> {
let e_guard = ENGINE.lock();
let mut engine = e_guard.expect("failed to lock engine");
engine.add_policy(
"hello.rego".to_string(),
r#"
package test
allow = true
"#
.to_string(),
)?;
let results = engine.eval_query("data.test.allow".to_string(), false)?;
assert_eq!(results.result[0].expressions[0].value, Value::from(true));
Ok(())
}