Skip to main content

[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

Back to the top