Program: 39364
Project: 39364
Buggy source:
@SuppressWarnings("String_Node_Str") @Test public void shouldPerformEnableOnEnablingPlugins() throws Exception {
  InternalPlugin plugin1=mock(InternalPlugin.class);
  QcadooPluginPlugin pluginsPlugin1=mock(QcadooPluginPlugin.class);
  given(plugin1.getIdentifier()).willReturn("String_Node_Str");
  given(pluginsPlugin1.getIdentifier()).willReturn("String_Node_Str");
  given(pluginsPlugin1.getState()).willReturn("String_Node_Str");
  given(pluginsPlugin1.getVersion()).willReturn("String_Node_Str");
  given(plugin1.hasState(PluginState.ENABLING)).willReturn(true);
  InternalPlugin plugin2=mock(InternalPlugin.class);
  QcadooPluginPlugin pluginsPlugin2=mock(QcadooPluginPlugin.class);
  given(plugin2.getIdentifier()).willReturn("String_Node_Str");
  given(pluginsPlugin2.getIdentifier()).willReturn("String_Node_Str");
  given(pluginsPlugin2.getState()).willReturn("String_Node_Str");
  given(pluginsPlugin2.getVersion()).willReturn("String_Node_Str");
  given(plugin2.hasState(PluginState.ENABLING)).willReturn(true);
  InternalPlugin plugin3=mock(InternalPlugin.class);
  QcadooPluginPlugin pluginsPlugin3=mock(QcadooPluginPlugin.class);
  given(pluginsPlugin3.getIdentifier()).willReturn("String_Node_Str");
  given(pluginsPlugin3.getVersion()).willReturn("String_Node_Str");
  given(pluginsPlugin3.getState()).willReturn("String_Node_Str");
  given(plugin3.getIdentifier()).willReturn("String_Node_Str");
  Set<InternalPlugin> pluginsFromDescriptor=Sets.newHashSet(plugin1,plugin2,plugin3);
  Set<QcadooPluginPlugin> pluginsFromDatabase=Sets.newHashSet(pluginsPlugin1,pluginsPlugin2,pluginsPlugin3);
  List<Plugin> sortedPluginsToInitialize=Lists.newArrayList((Plugin)plugin2,(Plugin)plugin1);
  given(pluginDependencyManager.sortPluginsInDependencyOrder(Mockito.anyCollectionOf(Plugin.class),Mockito.anyMap())).willReturn(sortedPluginsToInitialize);
  given(pluginDescriptorParser.loadPlugins()).willReturn(pluginsFromDescriptor);
  given(pluginDao.list()).willReturn(pluginsFromDatabase);
  pluginAccessor.init();
  InOrder inOrder=inOrder(plugin2,plugin1,moduleFactoryAccessor);
  inOrder.verify(moduleFactoryAccessor).init(sortedPluginsToInitialize);
  inOrder.verify(plugin2).changeStateTo(PluginState.ENABLED);
  inOrder.verify(plugin1).changeStateTo(PluginState.ENABLED);
  verify(plugin3,never()).changeStateTo(PluginState.ENABLED);
  verify(pluginDao).save(plugin1);
  verify(pluginDao).save(plugin2);
  verify(pluginDao,never()).save(plugin3);
}

Fixed version (ground truth):
@SuppressWarnings("String_Node_Str") @Test public void shouldPerformEnableOnEnablingPlugins() throws Exception {
  InternalPlugin plugin1=mock(InternalPlugin.class);
  QcadooPluginPlugin pluginsPlugin1=mock(QcadooPluginPlugin.class);
  given(plugin1.getIdentifier()).willReturn("String_Node_Str");
  given(pluginsPlugin1.getIdentifier()).willReturn("String_Node_Str");
  given(pluginsPlugin1.getState()).willReturn("String_Node_Str");
  given(pluginsPlugin1.getVersion()).willReturn("String_Node_Str");
  given(plugin1.hasState(PluginState.ENABLING)).willReturn(true);
  InternalPlugin plugin2=mock(InternalPlugin.class);
  QcadooPluginPlugin pluginsPlugin2=mock(QcadooPluginPlugin.class);
  given(plugin2.getIdentifier()).willReturn("String_Node_Str");
  given(pluginsPlugin2.getIdentifier()).willReturn("String_Node_Str");
  given(pluginsPlugin2.getState()).willReturn("String_Node_Str");
  given(pluginsPlugin2.getVersion()).willReturn("String_Node_Str");
  given(plugin2.hasState(PluginState.ENABLING)).willReturn(true);
  InternalPlugin plugin3=mock(InternalPlugin.class);
  QcadooPluginPlugin pluginsPlugin3=mock(QcadooPluginPlugin.class);
  given(pluginsPlugin3.getIdentifier()).willReturn("String_Node_Str");
  given(pluginsPlugin3.getVersion()).willReturn("String_Node_Str");
  given(pluginsPlugin3.getState()).willReturn("String_Node_Str");
  given(plugin3.getIdentifier()).willReturn("String_Node_Str");
  Set<InternalPlugin> pluginsFromDescriptor=Sets.newHashSet(plugin1,plugin2,plugin3);
  Set<QcadooPluginPlugin> pluginsFromDatabase=Sets.newHashSet(pluginsPlugin1,pluginsPlugin2,pluginsPlugin3);
  List<Plugin> sortedPluginsToInitialize=Lists.newArrayList((Plugin)plugin2,(Plugin)plugin1);
  given(pluginDependencyManager.sortPluginsInDependencyOrder(Mockito.anyCollectionOf(Plugin.class),Mockito.anyMap())).willReturn(sortedPluginsToInitialize);
  given(pluginDescriptorParser.loadPlugins()).willReturn(pluginsFromDescriptor);
  given(pluginDao.list()).willReturn(pluginsFromDatabase);
  pluginAccessor.init();
  pluginAccessor.onApplicationEvent(null);
  InOrder inOrder=inOrder(plugin2,plugin1,moduleFactoryAccessor);
  inOrder.verify(moduleFactoryAccessor).init(sortedPluginsToInitialize);
  inOrder.verify(plugin2).changeStateTo(PluginState.ENABLED);
  inOrder.verify(plugin1).changeStateTo(PluginState.ENABLED);
  verify(plugin3,never()).changeStateTo(PluginState.ENABLED);
  verify(pluginDao).save(plugin1);
  verify(pluginDao).save(plugin2);
  verify(pluginDao,never()).save(plugin3);
}