@Override
	protected void setUp() throws Exception {

		env = new TestEnv();
		applicationRootDirectories = Application.getApplicationRootDirectories();

		ResourceFile myModuleRootDirectory =
			Application.getModuleContainingClass(getClass());
		if (myModuleRootDirectory != null) {
			File myModuleRoot = myModuleRootDirectory.getFile(false);
			if (myModuleRoot != null) {
				resourcesTestDataDir = new File(myModuleRoot, TEST_RESOURCE_PATH);
				if (!resourcesTestDataDir.isDirectory()) {
					findTestResourceDirectory(getRelativeModulePath(myModuleRootDirectory));
				}
			}
		}
		else {
			Msg.warn(this,
				"Unable to identify pcodetest module directory! Project must contain Module.manifest file");
		}

		if (resourcesTestDataDir == null || !resourcesTestDataDir.isDirectory()) {
			findTestResourceDirectory(DEFAULT_PROCESSOR_TEST_MODULE);
		}

		if (resourcesTestDataDir == null || !resourcesTestDataDir.isDirectory()) {
			throw new RuntimeException(
				"Failed to locate pcodetest resource directory: " + TEST_RESOURCE_PATH);
		}

		logData = initializeLog(getClass());

		if (FAILURE_RESULT_NAME.equals(getName())) {
			// running a failure case so we can produce junit failure result
			logData.testResults.summaryHasIngestErrors = true;
			testFailureMap.get(getClass()).throwFailure();
		}

		ResourceFile emuTestingArchive = Application.getModuleDataFile("pcodetest/EmuTesting.gdt");
		archiveDtMgr = FileDataTypeManager.openFileArchive(emuTestingArchive, false);
		assertEquals(ArchiveWarning.NONE, archiveDtMgr.getWarning());
		DataType dt = archiveDtMgr.getDataType(CategoryPath.ROOT, TEST_INFO_STRUCT_NAME);
		if (dt == null || !(dt instanceof Structure)) {
			fail(TEST_INFO_STRUCT_NAME +
				" structure data-type not found in resource EmuTesting.gdt");
		}
		testInfoStruct = (Structure) dt;

		dt = archiveDtMgr.getDataType(CategoryPath.ROOT, GROUP_INFO_STRUCT_NAME);
		if (dt == null || !(dt instanceof Structure)) {
			fail(GROUP_INFO_STRUCT_NAME +
				" structure data-type not found in resource EmuTesting.gdt");
		}
		groupInfoStruct = (Structure) dt;

		testControlBlocks = testControlBlocksMap.get(processorDesignator);
		if (testControlBlocks == null) {
			try {
				ingestTestBinaries();
			}
			catch (RuntimeException e) {
				e.printStackTrace(logData.traceLog);
				logData.testResults.addSevereFailResult("", "TestFileIngest");
				throw e;
			}
			testControlBlocksMap.put(processorDesignator, testControlBlocks);
		}

		testGroupMap = new HashMap<>();
		for (PCodeTestControlBlock testControlBlock : testControlBlocks) {
			for (PCodeTestGroup testGroup : testControlBlock.getTestGroups()) {
				testGroupMap.put(testGroup.testGroupName, testGroup);
				//System.out.println("test_" + testGroup.testGroupName);
			}
		}
	}
Converts the stack trace into a string
Ghidra/Features/Base/src/main/java/ghidra/test/processors/support/ProcessorEmulatorTestAdapter.java