Skip to content

Commit 5e1d1ad

Browse files
authored
Make ragg optional in tests (#951)
1 parent 76dcb9e commit 5e1d1ad

File tree

3 files changed

+41
-23
lines changed

3 files changed

+41
-23
lines changed

crates/amalthea/src/fixtures/dummy_frontend.rs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -464,6 +464,31 @@ impl DummyFrontend {
464464
eprintln!("---");
465465
}
466466
}
467+
468+
pub fn is_installed(&self, package: &str) -> bool {
469+
let code = format!(".ps.is_installed('{package}')");
470+
self.send_execute_request(&code, ExecuteRequestOptions::default());
471+
self.recv_iopub_busy();
472+
473+
let input = self.recv_iopub_execute_input();
474+
assert_eq!(input.code, code);
475+
476+
let result = self.recv_iopub_execute_result();
477+
478+
let out = if result == "[1] TRUE" {
479+
true
480+
} else if result == "[1] FALSE" {
481+
false
482+
} else {
483+
panic!("Expected `TRUE` or `FALSE`, got '{result}'.");
484+
};
485+
486+
self.recv_iopub_idle();
487+
488+
assert_eq!(self.recv_shell_execute_reply(), input.execution_count);
489+
490+
out
491+
}
467492
}
468493

469494
impl Default for ExecuteRequestOptions {

crates/ark/tests/plots.rs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,12 @@ fn test_graphics_device_initialization() {
170170
fn test_ragg_is_used_by_default() {
171171
let frontend = DummyArkFrontend::lock();
172172

173-
// We install ragg on CI and expect developers to have it locally
173+
if !frontend.is_installed("ragg") {
174+
report_skipped("test_ragg_is_used_by_default", "ragg");
175+
return;
176+
}
177+
178+
// We install ragg on CI, but developers may not have it locally
174179
let code = ".ps.internal(use_ragg())";
175180
frontend.send_execute_request(code, ExecuteRequestOptions::default());
176181
frontend.recv_iopub_busy();
@@ -186,6 +191,11 @@ fn test_inability_to_load_ragg_falls_back_to_base_graphics() {
186191
// https://github.com/posit-dev/ark/issues/917
187192
let frontend = DummyArkFrontend::lock();
188193

194+
if !frontend.is_installed("ragg") {
195+
report_skipped("test_ragg_is_used_by_default", "ragg");
196+
return;
197+
}
198+
189199
// Mock `loadNamespace()` with a version that will fail on ragg
190200
let code = r#"
191201
oldLoadNamespace <- base::loadNamespace
@@ -228,3 +238,7 @@ lockBinding("loadNamespace", .BaseNamespaceEnv)
228238
frontend.recv_iopub_idle();
229239
assert_eq!(frontend.recv_shell_execute_reply(), input.execution_count);
230240
}
241+
242+
fn report_skipped(f: &str, pkg: &str) {
243+
println!("Skipping `{f}()`. {pkg} is not installed.");
244+
}

crates/ark/tests/rstudioapi.rs

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -77,28 +77,7 @@ fn set_var(key: &str, value: &str, frontend: &DummyArkFrontend) {
7777
}
7878

7979
fn has_rstudioapi(frontend: &DummyArkFrontend) -> bool {
80-
let code = ".ps.is_installed('rstudioapi')";
81-
frontend.send_execute_request(code, ExecuteRequestOptions::default());
82-
frontend.recv_iopub_busy();
83-
84-
let input = frontend.recv_iopub_execute_input();
85-
assert_eq!(input.code, code);
86-
87-
let result = frontend.recv_iopub_execute_result();
88-
89-
let out = if result == "[1] TRUE" {
90-
true
91-
} else if result == "[1] FALSE" {
92-
false
93-
} else {
94-
panic!("Expected `TRUE` or `FALSE`, got '{result}'.");
95-
};
96-
97-
frontend.recv_iopub_idle();
98-
99-
assert_eq!(frontend.recv_shell_execute_reply(), input.execution_count);
100-
101-
out
80+
frontend.is_installed("rstudioapi")
10281
}
10382

10483
fn report_skipped(f: &str) {

0 commit comments

Comments
 (0)