@Test
	public void testGoToExternal() throws Exception {
		showSymbolTree();

		GTreeNode extNode = rootNode.getChild(0);
		util.expandNode(extNode);

		GTreeNode node = extNode.getChild(0);
		util.expandNode(node);
		GTreeNode fNode = node.getChild(0);
		util.selectNode(fNode);

		Symbol extSym = ((SymbolNode) fNode).getSymbol();
		assertEquals(SymbolType.LABEL, extSym.getSymbolType());
		assertTrue(extSym.isExternal());
		assertNotNull(extSym);
		assertEquals("IsTextUnicode", extSym.getName());
		ExternalLocation extLoc = (ExternalLocation) extSym.getObject();
		int transactionID = program.startTransaction("test");
		try {
			program.getExternalManager().setExternalPath(extLoc.getLibraryName(), null, true);
		}
		finally {
			program.endTransaction(transactionID, true);
		}

		flushAndWaitForTree();

		cbPlugin.updateNow();

		// reselect - setting path rebuilt tree
		extNode = rootNode.getChild(0);
		node = extNode.getChild(0);
		util.expandNode(node);
		node = extNode.getChild(0);
		fNode = node.getChild(0);
		assertEquals("IsTextUnicode", fNode.getName());
		util.selectNode(fNode);

		TreePath selectionPath = tree.getSelectionPath();
		assertNotNull(selectionPath);
		Object selectedObject = selectionPath.getLastPathComponent();
		assertEquals(fNode, selectedObject);

		waitForSwing();

		performAction(goToExtLocAction, util.getSymbolTreeContext(), false);
		waitForSwing();

		OptionDialog d = waitForDialogComponent(OptionDialog.class);
		assertNotNull(d);
		pressButtonByText(d, "Cancel");
	}
Tests for the symbol tree plugin.
Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/symboltree/SymbolTreePlugin1Test.java