Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

TestMain.java 3.0KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package com.dmdirc;
  2. import com.dmdirc.actions.ActionManager;
  3. import com.dmdirc.commandparser.CommandManager;
  4. import com.dmdirc.config.IdentityManager;
  5. import com.dmdirc.config.InvalidIdentityFileException;
  6. import com.dmdirc.plugins.PluginManager;
  7. import static org.mockito.Mockito.*;
  8. /**
  9. * Main subclass to init things needed for testing.
  10. */
  11. public class TestMain extends Main {
  12. private static Main instance;
  13. private final IdentityManager identityManager;
  14. private final ServerManager serverManager;
  15. private final ActionManager actionManager;
  16. public TestMain(final IdentityManager identityManager,
  17. final ServerManager serverManager,
  18. final ActionManager actionManager) {
  19. super(identityManager, serverManager, actionManager);
  20. this.identityManager = identityManager;
  21. this.serverManager = serverManager;
  22. this.actionManager = actionManager;
  23. }
  24. /** {@inheritDoc} */
  25. @Override
  26. public void init(final String[] args) {
  27. try {
  28. IdentityManager.getIdentityManager().initialise(getConfigDir());
  29. } catch (InvalidIdentityFileException ex) {
  30. // If a bad config dir exists, try to continue anyway, maybe the
  31. // test doesn't need it.
  32. // DON'T do anything to the user's configuration... (so no calls
  33. // to handleInvalidConfigFile(); here)
  34. }
  35. final String fs = System.getProperty("file.separator");
  36. final String pluginDirectory = getConfigDir() + "plugins" + fs;
  37. pluginManager = new PluginManager(IdentityManager.getIdentityManager(), pluginDirectory);
  38. pluginManager.refreshPlugins();
  39. CommandManager.initCommandManager(IdentityManager.getIdentityManager(), serverManager);
  40. ActionManager.getActionManager().initialise();
  41. }
  42. /**
  43. * Singleton method for convenience so that we don't need to init a billion
  44. * TestMain instances to run tests.
  45. *
  46. * Separate instances of TestMain are available, but probably pointless as
  47. * long as IdentityManager, PluginManager and ConfigManater are still
  48. * singletons.
  49. *
  50. * @return A Singleton instance of TestMain
  51. */
  52. public static Main getTestMain() {
  53. if (instance == null) {
  54. // TODO: Tests probably shouldn't rely on a config dir... Who knows
  55. // what the user has done with their config.
  56. final IdentityManager identityManager = new IdentityManager();
  57. IdentityManager.setIdentityManager(identityManager);
  58. IdentityManager.getIdentityManager().loadVersionIdentity();
  59. final ServerManager serverManager = mock(ServerManager.class);
  60. final ActionManager actionManager = new ActionManager(serverManager, identityManager);
  61. ActionManager.setActionManager(actionManager);
  62. instance = new TestMain(identityManager, serverManager, actionManager);
  63. instance.init(new String[0]);
  64. }
  65. return instance;
  66. }
  67. }