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 5.0KB

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