update ruby bindings version to 0.1.5, bump deps (#251)

* update ruby bindings version to 0.1.5, bump deps

* update ruby bindings for coverage and print methods
This commit is contained in:
thedavemarshall
2024-05-24 09:57:39 -05:00
committed by GitHub
parent 3d08f6eef9
commit 33fe9d5039
9 changed files with 128 additions and 16 deletions
+85
View File
@@ -191,6 +191,68 @@ impl Engine {
fn eval_deny_query(&self, query: String) -> Result<bool, Error> {
Ok(self.engine.borrow_mut().eval_deny_query(query, false))
}
fn set_enable_coverage(&self, enable: bool) -> Result<(), Error> {
Ok(self.engine.borrow_mut().set_enable_coverage(enable))
}
fn get_coverage_report_as_json(&self) -> Result<String, Error> {
let report = self
.engine
.borrow_mut()
.get_coverage_report()
.map_err(|e| {
Error::new(
runtime_error(),
format!("Failed to get coverage report as json: {}", e),
)
})?;
serde_json::to_string(&report).map_err(|e| {
Error::new(
runtime_error(),
format!("Failed to serialize coverage report: {}", e),
)
})
}
fn get_coverage_report_pretty(&self) -> Result<String, Error> {
let report = self
.engine
.borrow_mut()
.get_coverage_report()
.map_err(|e| {
Error::new(
runtime_error(),
format!("Failed to get coverage report: {}", e),
)
})?;
report.to_colored_string().map_err(|e| {
Error::new(
runtime_error(),
format!("Failed to convert report to colored string: {}", e),
)
})
}
fn clear_coverage_data(&self) -> Result<(), Error> {
Ok(self.engine.borrow_mut().clear_coverage_data())
}
// Print statements can be gathered async instead of printing to stderr
fn set_gather_prints(&self, enable: bool) -> Result<(), Error> {
Ok(self.engine.borrow_mut().set_gather_prints(enable))
}
fn take_prints(&self) -> Result<Vec<String>, Error> {
self.engine.borrow_mut().take_prints().map_err(|e| {
Error::new(
runtime_error(),
format!("Failed to gather print statement: {}", e),
)
})
}
}
#[magnus::init]
@@ -237,5 +299,28 @@ fn init(ruby: &Ruby) -> Result<(), Error> {
engine_class.define_method("eval_bool_query", method!(Engine::eval_bool_query, 1))?;
engine_class.define_method("eval_allow_query", method!(Engine::eval_allow_query, 1))?;
engine_class.define_method("eval_deny_query", method!(Engine::eval_deny_query, 1))?;
// coverage operations
engine_class.define_method(
"set_enable_coverage",
method!(Engine::set_enable_coverage, 1),
)?;
engine_class.define_method(
"get_coverage_report_as_json",
method!(Engine::get_coverage_report_as_json, 0),
)?;
engine_class.define_method(
"get_coverage_report_pretty",
method!(Engine::get_coverage_report_pretty, 0),
)?;
engine_class.define_method(
"clear_coverage_data",
method!(Engine::clear_coverage_data, 0),
)?;
// print statements
engine_class.define_method("set_gather_prints", method!(Engine::set_gather_prints, 1))?;
engine_class.define_method("take_prints", method!(Engine::take_prints, 0))?;
Ok(())
}