mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-11-13 04:58:11 +00:00
Merge pull request #6636 from dotCooCoo/fix/plugin-folder-tests-take-turns
Tests: plug-in folder tests take turns on the folder last loaded
This commit is contained in:
@@ -13,6 +13,11 @@ use crate::*;
|
||||
const DESATURATE: &[u8] = include_bytes!("../../../plugins/tests/fixtures/desaturate.wasm");
|
||||
const DESATURATE_ID: &str = "org.vectorcraft.example.desaturate";
|
||||
|
||||
/// Held by the tests that set the Additional Plug-ins Folder preference or run `plugin.reload`:
|
||||
/// the folder last loaded and its report are kept for the whole process, so another test loading
|
||||
/// its own folder between two steps would change what the next step loads or lists.
|
||||
static PREFS_FOLDER: std::sync::Mutex<()> = std::sync::Mutex::new(());
|
||||
|
||||
fn run(s: &mut Session, cmd: &str, p: Value) -> Value {
|
||||
s.execute(cmd, &p).unwrap_or_else(|e| panic!("{cmd}: {e}"))
|
||||
}
|
||||
@@ -1278,6 +1283,7 @@ fn filters_keep_their_data_with_the_document() {
|
||||
|
||||
#[test]
|
||||
fn plugin_management_commands() {
|
||||
let _folder = PREFS_FOLDER.lock().unwrap_or_else(|e| e.into_inner());
|
||||
let mut s = session();
|
||||
install(&mut s, DESATURATE);
|
||||
let list = run(&mut s, "plugin.list", json!({}));
|
||||
@@ -1319,6 +1325,7 @@ fn plugin_management_commands() {
|
||||
/// installs what is in it, as setting any other folder does.
|
||||
#[test]
|
||||
fn plugins_folder_set_again_after_clearing_installs_its_plugins() {
|
||||
let _folder = PREFS_FOLDER.lock().unwrap_or_else(|e| e.into_inner());
|
||||
let dir = crate::tests_links::Folder::new("plugin-folder-cleared");
|
||||
let id = "test.engine.foldercleared";
|
||||
let src = tpl::returning(&tpl::manifest(id, "filter", "{}"), r#"{"objects":[]}"#);
|
||||
@@ -1998,6 +2005,7 @@ fn a_grants_file_that_cannot_be_deleted_keeps_the_stored_module() {
|
||||
/// the plug-in store stays, with the stored module it covers.
|
||||
#[test]
|
||||
fn a_plugin_folder_ends_the_process_grant_of_an_id_it_replaces() {
|
||||
let _folder = PREFS_FOLDER.lock().unwrap_or_else(|e| e.into_inner());
|
||||
let mut s = session();
|
||||
let id = "test.engine.permissions.folderstale";
|
||||
let empty = json!({"objects": []});
|
||||
@@ -2175,6 +2183,7 @@ fn a_failed_store_write_keeps_the_stored_module_with_its_grant() {
|
||||
/// grants held by the process.
|
||||
#[test]
|
||||
fn a_plugin_folder_skips_a_changed_module_until_it_is_approved() {
|
||||
let _folder = PREFS_FOLDER.lock().unwrap_or_else(|e| e.into_inner());
|
||||
let mut s = session();
|
||||
let id = "test.engine.permissions.folderbytes";
|
||||
let plain = "test.engine.permissions.folderplain";
|
||||
@@ -2403,6 +2412,7 @@ fn a_run_past_the_memory_budget_fails_before_the_plugin_starts() {
|
||||
/// until it is granted on its own.
|
||||
#[test]
|
||||
fn granted_permissions_are_kept_and_folders_skip_the_rest() {
|
||||
let _folder = PREFS_FOLDER.lock().unwrap_or_else(|e| e.into_inner());
|
||||
let folder = crate::tests_links::Folder::new("plugin-store-grants");
|
||||
let id = "test.engine.permissions.stored";
|
||||
let wasm = asking(id, r#"["doc.read"]"#, &json!({"objects": []}));
|
||||
@@ -2491,6 +2501,7 @@ fn granted_permissions_are_kept_and_folders_skip_the_rest() {
|
||||
/// covers no module.
|
||||
#[test]
|
||||
fn a_grant_covers_only_the_module_it_was_given_to() {
|
||||
let _folder = PREFS_FOLDER.lock().unwrap_or_else(|e| e.into_inner());
|
||||
let folder = crate::tests_links::Folder::new("plugin-store-grant-hash");
|
||||
let id = "test.engine.granthash";
|
||||
let mut s = session();
|
||||
|
||||
Reference in New Issue
Block a user