static void test_c64_vice_init(void**) { int count = 0; assert_true(PluginHandler_addPlugin(OBJECT_DIR, "c64_vice_plugin")); assert_non_null(PluginHandler_getBackendPlugins(&count)[0]); }
static void test_lldb(void** state) { (void)state; // we only do the LLDB test on Mac for now #ifdef __APPLE__ PluginData* pluginData; Session* session; int count = 0; assert_true(PluginHandler_addPlugin(OBJECT_DIR, "lldb_plugin")); assert_non_null(pluginData = PluginHandler_getBackendPlugins(&count)[0]); session = Session_createLocal((PDBackendPlugin*)pluginData->plugin, OBJECT_DIR "/crashing_native"); assert_non_null(session); // I hate to do this but there is really no good way to deal with this otherwise (at least currently) Time_sleepMs(800); Session_update(session); Session_update(session); // Expect that we have a crash here and thus are in PDDebugState_stopException state assert_int_equal(session->state, PDDebugState_StopException); // Request locals location. PDWriter* writer = session->currentWriter; PDReader* reader = session->reader; PDWrite_event_begin(writer, PDEventType_GetCallstack); PDWrite_u8(writer, "dummy", 0); PDWrite_event_end(writer); Session_update(session); PDBinaryWriter_finalize(session->currentWriter); PDBinaryReader_initStream(reader, PDBinaryWriter_getData(session->currentWriter), PDBinaryWriter_getSize(session->currentWriter)); uint32_t event; bool foundCallstack = false; while ((event = PDRead_get_event(reader)) != 0) { switch (event) { case PDEventType_SetCallstack: { foundCallstack = true; break; } } } assert_true(foundCallstack); #endif }
void plugin_handler_add_plugin_true(void**) { int count = 0; assert_true(PluginHandler_addPlugin(OBJECT_DIR, "sourcecode_plugin")); assert_true(PluginHandler_addPlugin(OBJECT_DIR, "registers_plugin")); PluginData** plugins = PluginHandler_getViewPlugins(&count); assert_int_equal(count, 2); assert_true(PluginHandler_getPluginData(plugins[0]->plugin) == plugins[0]); assert_true(PluginHandler_getPluginData(plugins[1]->plugin) == plugins[1]); PluginHandler_unloadAllPlugins(); plugins = PluginHandler_getViewPlugins(&count); assert_int_equal(count, 0); }
void plugin_handler_find_plugin(void**) { assert_null(PluginHandler_findPlugin(0, "dummyFile", "dummyName", false)); assert_null(PluginHandler_findPlugin(0, "dummyFile", "dummyName", true)); assert_null(PluginHandler_findPlugin(0, "sourcecode_plugin", "Source Code View", false)); assert_non_null(PluginHandler_findPlugin(0, "sourcecode_plugin", "Source Code View", true)); assert_non_null(PluginHandler_findPlugin(0, "sourcecode_plugin", "Source Code View", false)); assert_true(PluginHandler_addPlugin(OBJECT_DIR, "registers_plugin")); assert_non_null(PluginHandler_findPlugin(0, "registers_plugin", "Registers View", true)); assert_non_null(PluginHandler_findPluginByFilename("registers_plugin")); assert_null(PluginHandler_findPluginByFilename("plugin_that_isnt_here")); PluginHandler_unloadAllPlugins(); }
PluginData* PluginHandler_reloadPlugin(PluginData* pluginData) { const char* filename = pluginData->filename; const char* fullName = string_clone(pluginData->fullFilename); printf("removing plugin...\n"); removePlugin(pluginData); printf("adding plugin...%s\n", filename); PluginHandler_addPlugin(OBJECT_DIR, filename); printf("finding plugin\n"); printf("trying to find %s\n", fullName); PluginData* newPluginData = PluginHandler_findPluginByFilename(fullName); printf("found plugin %p\n", newPluginData); return newPluginData; }
PluginData* PluginHandler_findPlugin(const char** paths, const char* pluginFile, const char* pluginName, bool load) { PluginData* pluginData; // TODO: Support paths (void)paths; // If not found and not !load (that is we will not try to load it) if ((pluginData = findPluginAll(pluginFile, pluginName))) return pluginData; if (!load) return 0; // TODO: Support base paths if (!PluginHandler_addPlugin(OBJECT_DIR, pluginFile)) return 0; if ((pluginData = findPluginAll(pluginFile, pluginName))) return pluginData; return 0; }
void plugin_handler_add_plugin(void**) { assert_false(PluginHandler_addPlugin("dummyPath", "dummy")); }
void plugin_handler_null_plugin(void**) { assert_false(PluginHandler_addPlugin("dummyPath", 0)); }