You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

TestMain.java 4.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. package com.dmdirc;
  2. import com.dmdirc.actions.ActionGroup;
  3. import com.dmdirc.actions.ActionManager;
  4. import com.dmdirc.commandline.CommandLineParser;
  5. import com.dmdirc.commandparser.CommandManager;
  6. import com.dmdirc.config.IdentityManager;
  7. import com.dmdirc.config.InvalidIdentityFileException;
  8. import com.dmdirc.plugins.PluginManager;
  9. import com.dmdirc.updater.manager.UpdateManager;
  10. import java.io.File;
  11. import java.io.IOException;
  12. import java.util.Collections;
  13. import javax.inject.Provider;
  14. import static org.mockito.Mockito.*;
  15. /**
  16. * Main subclass to init things needed for testing.
  17. *
  18. * @deprecated Tests shouldn't need the entire universe created.
  19. */
  20. @Deprecated
  21. public class TestMain extends Main {
  22. private static Main instance;
  23. private final IdentityManager identityManager;
  24. private final PluginManager pluginManager;
  25. private final CommandManager commandManager;
  26. public TestMain(final IdentityManager identityManager,
  27. final ServerManager serverManager,
  28. final ActionManager actionManager,
  29. final CommandLineParser commandLineParser,
  30. final PluginManager pluginManager,
  31. final CommandManager commandManager,
  32. final CorePluginExtractor corePluginExtractor) {
  33. super(identityManager, serverManager, actionManager, commandLineParser,
  34. pluginManager, commandManager, null, null, corePluginExtractor);
  35. this.identityManager = identityManager;
  36. this.pluginManager = pluginManager;
  37. this.commandManager = commandManager;
  38. }
  39. /** {@inheritDoc} */
  40. @Override
  41. public void init() {
  42. try {
  43. identityManager.initialise();
  44. } catch (InvalidIdentityFileException ex) {
  45. // If a bad config dir exists, try to continue anyway, maybe the
  46. // test doesn't need it.
  47. // DON'T do anything to the user's configuration... (so no calls
  48. // to handleInvalidConfigFile(); here)
  49. }
  50. pluginManager.refreshPlugins();
  51. commandManager.initialise(identityManager.getGlobalConfiguration());
  52. CommandManager.setCommandManager(commandManager);
  53. ActionManager.getActionManager().initialise();
  54. }
  55. /**
  56. * Singleton method for convenience so that we don't need to init a billion
  57. * TestMain instances to run tests.
  58. *
  59. * Separate instances of TestMain are available, but probably pointless as
  60. * long as IdentityManager, PluginManager and ConfigManater are still
  61. * singletons.
  62. *
  63. * @return A Singleton instance of TestMain
  64. */
  65. public static Main getTestMain() {
  66. if (instance == null) {
  67. try {
  68. File tempFile = File.createTempFile("dmdirc", "test");
  69. tempFile.delete();
  70. tempFile.mkdir();
  71. tempFile.deleteOnExit();
  72. final String configDirectory = tempFile.getAbsolutePath() + File.separator;
  73. final String pluginDirectory = configDirectory + "plugins" + File.separator;
  74. // TODO: Tests probably shouldn't rely on a config dir... Who knows
  75. // what the user has done with their config.
  76. final IdentityManager identityManager = new IdentityManager(configDirectory);
  77. IdentityManager.setIdentityManager(identityManager);
  78. IdentityManager.getIdentityManager().loadVersionIdentity();
  79. final ServerManager serverManager = mock(ServerManager.class);
  80. final CommandManager commandManager = new CommandManager(serverManager);
  81. final ActionManager actionManager = new ActionManager(
  82. serverManager, identityManager,
  83. new DummyProvider<>(Collections.<ActionGroup>emptySet()));
  84. ActionManager.setActionManager(actionManager);
  85. final PluginManager pluginManager = new PluginManager(
  86. identityManager, actionManager,
  87. mock(UpdateManager.class), pluginDirectory);
  88. final CorePluginExtractor corePluginExtractor =
  89. new CorePluginExtractor(pluginManager, pluginDirectory);
  90. instance = new TestMain(identityManager, serverManager,
  91. actionManager, null, pluginManager, commandManager,
  92. corePluginExtractor);
  93. instance.init();
  94. } catch (IOException ex) {
  95. // Blargh.
  96. }
  97. }
  98. return instance;
  99. }
  100. private static class DummyProvider<T> implements Provider<T> {
  101. private final T value;
  102. public DummyProvider(T value) {
  103. this.value = value;
  104. }
  105. @Override
  106. public T get() {
  107. return value;
  108. }
  109. }
  110. }