[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [swtbot-dev] [egit-dev] EGit UI tests fail on Eclipse 4.2 with java.lang.NoSuchMethodError: org.eclipse.ui.internal.PartPane.getToolBar()Lorg/eclipse/swt/widgets/Control

2012/4/10 Paul Webster <pwebster@xxxxxxxxxxxxxxxxxxx>
On Thu, Apr 5, 2012 at 7:32 PM, Matthias Sohn <matthias.sohn@xxxxxxxxxxxxxx> wrote:
I am trying to make the EGit UI tests run on Eclipse 4.2, I can't get over the following
problem which seems to be caused by SWTBot using the following method of anÂ
internal class org.eclipse.ui.internal.PartPane.getToolBar()
which is no longerÂavailable in 4.2. This affects quite a number of EGit UI tests.

I tried both the Helios and Indigo nightly build versions of SWTBot.
I couldn't find any Juno / 4.2 based SWTBot version.

Any hints how to fix this ?

testCreateCheckoutDeleteLocalBranch(org.eclipse.egit.ui.view.repositories.GitRepositoriesViewBranchHandlingTest) ÂTime elapsed: 3.965 sec Â<<< ERROR!
org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.NoSuchMethodError: org.eclipse.ui.internal.PartPane.getToolBar()Lorg/eclipse/swt/widgets/Control;)


They'd need to replace that code with something like:

ToolBar toolbar = null;
IToolBarManager t = ((IViewSite)part.getSite()).getActionBars().getToolBarManager();
if (t instanceof ToolBarManager) {
ÂÂÂ toolbar = ((ToolBarManager)t).getControl();
}

thanks, this seems to make the compiler happy ;-)
I'll contribute a patch to the swtbot project.

I face another similar problem with the swtbot method ViewMenuFinder.findMenus()
I bet you canÂprovide another hackÂto retrieve the view's MenuManager in 4.2 to fixÂ
findMenus()Âwhich should return theÂview menus for a given IViewReference but failsÂ
since theÂnon-API methodÂgetPane() doesn't exist anymore in 4.2:

public List<SWTBotViewMenu> findMenus(final IViewReference view, final Matcher<?> matcher, final boolean recursive) {

 return UIThreadRunnable.syncExec(new ListResult<SWTBotViewMenu>() {
  public List<SWTBotViewMenu> run() {
   ViewPane viewPane = (ViewPane) ((WorkbenchPartReference) view).getPane();
   MenuManager mgr = viewPane.getMenuManager();
   List<SWTBotViewMenu> l = new ArrayList<SWTBotViewMenu>();
   l.addAll(getMenuItemsInternal(mgr.getItems(), matcher, recursive));
   return l;
  }
 });
}Â

--
Matthias