aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
authorArthurHoaro <arthur@hoa.ro>2020-08-27 12:10:16 +0200
committerGitHub <noreply@github.com>2020-08-27 12:10:16 +0200
commit109ebf318f2f71d6c5f3690da3c16d0b03d982bb (patch)
treef0a333e9e009d78d59c1e4823f766625bc2bb255 /tests
parentaf41d5ab5d2bd3ba64d052c997bc6afa6966a63c (diff)
parent7e3dc0ba98bf019c2804e5c74fb6061b16fb712f (diff)
downloadShaarli-109ebf318f2f71d6c5f3690da3c16d0b03d982bb.tar.gz
Shaarli-109ebf318f2f71d6c5f3690da3c16d0b03d982bb.tar.zst
Shaarli-109ebf318f2f71d6c5f3690da3c16d0b03d982bb.zip
Merge pull request #1516 from ArthurHoaro/feature/plugin-incompatibility
Better handling of plugin incompatibility
Diffstat (limited to 'tests')
-rw-r--r--tests/PluginManagerTest.php29
-rw-r--r--tests/container/ContainerBuilderTest.php23
-rw-r--r--tests/plugins/test/test.php5
3 files changed, 42 insertions, 15 deletions
diff --git a/tests/PluginManagerTest.php b/tests/PluginManagerTest.php
index 195d959c..a5d5dbe9 100644
--- a/tests/PluginManagerTest.php
+++ b/tests/PluginManagerTest.php
@@ -25,7 +25,7 @@ class PluginManagerTest extends \PHPUnit\Framework\TestCase
25 */ 25 */
26 protected $pluginManager; 26 protected $pluginManager;
27 27
28 public function setUp() 28 public function setUp(): void
29 { 29 {
30 $conf = new ConfigManager(''); 30 $conf = new ConfigManager('');
31 $this->pluginManager = new PluginManager($conf); 31 $this->pluginManager = new PluginManager($conf);
@@ -33,10 +33,8 @@ class PluginManagerTest extends \PHPUnit\Framework\TestCase
33 33
34 /** 34 /**
35 * Test plugin loading and hook execution. 35 * Test plugin loading and hook execution.
36 *
37 * @return void
38 */ 36 */
39 public function testPlugin() 37 public function testPlugin(): void
40 { 38 {
41 PluginManager::$PLUGINS_PATH = self::$pluginPath; 39 PluginManager::$PLUGINS_PATH = self::$pluginPath;
42 $this->pluginManager->load(array(self::$pluginName)); 40 $this->pluginManager->load(array(self::$pluginName));
@@ -57,9 +55,28 @@ class PluginManagerTest extends \PHPUnit\Framework\TestCase
57 } 55 }
58 56
59 /** 57 /**
58 * Test plugin loading and hook execution with an error: raise an incompatibility error.
59 */
60 public function testPluginWithPhpError(): void
61 {
62 PluginManager::$PLUGINS_PATH = self::$pluginPath;
63 $this->pluginManager->load(array(self::$pluginName));
64
65 $this->assertTrue(function_exists('hook_test_error'));
66
67 $data = [];
68 $this->pluginManager->executeHooks('error', $data);
69
70 $this->assertSame(
71 'test [plugin incompatibility]: Class \'Unknown\' not found',
72 $this->pluginManager->getErrors()[0]
73 );
74 }
75
76 /**
60 * Test missing plugin loading. 77 * Test missing plugin loading.
61 */ 78 */
62 public function testPluginNotFound() 79 public function testPluginNotFound(): void
63 { 80 {
64 $this->pluginManager->load(array()); 81 $this->pluginManager->load(array());
65 $this->pluginManager->load(array('nope', 'renope')); 82 $this->pluginManager->load(array('nope', 'renope'));
@@ -69,7 +86,7 @@ class PluginManagerTest extends \PHPUnit\Framework\TestCase
69 /** 86 /**
70 * Test plugin metadata loading. 87 * Test plugin metadata loading.
71 */ 88 */
72 public function testGetPluginsMeta() 89 public function testGetPluginsMeta(): void
73 { 90 {
74 PluginManager::$PLUGINS_PATH = self::$pluginPath; 91 PluginManager::$PLUGINS_PATH = self::$pluginPath;
75 $this->pluginManager->load(array(self::$pluginName)); 92 $this->pluginManager->load(array(self::$pluginName));
diff --git a/tests/container/ContainerBuilderTest.php b/tests/container/ContainerBuilderTest.php
index fa77bf31..c08010ae 100644
--- a/tests/container/ContainerBuilderTest.php
+++ b/tests/container/ContainerBuilderTest.php
@@ -9,6 +9,7 @@ use Shaarli\Bookmark\BookmarkServiceInterface;
9use Shaarli\Config\ConfigManager; 9use Shaarli\Config\ConfigManager;
10use Shaarli\Feed\FeedBuilder; 10use Shaarli\Feed\FeedBuilder;
11use Shaarli\Formatter\FormatterFactory; 11use Shaarli\Formatter\FormatterFactory;
12use Shaarli\Front\Controller\Visitor\ErrorController;
12use Shaarli\History; 13use Shaarli\History;
13use Shaarli\Http\HttpAccess; 14use Shaarli\Http\HttpAccess;
14use Shaarli\Netscape\NetscapeBookmarkUtils; 15use Shaarli\Netscape\NetscapeBookmarkUtils;
@@ -20,6 +21,7 @@ use Shaarli\Security\LoginManager;
20use Shaarli\Security\SessionManager; 21use Shaarli\Security\SessionManager;
21use Shaarli\Thumbnailer; 22use Shaarli\Thumbnailer;
22use Shaarli\Updater\Updater; 23use Shaarli\Updater\Updater;
24use Slim\Http\Environment;
23 25
24class ContainerBuilderTest extends TestCase 26class ContainerBuilderTest extends TestCase
25{ 27{
@@ -59,20 +61,23 @@ class ContainerBuilderTest extends TestCase
59 { 61 {
60 $container = $this->containerBuilder->build(); 62 $container = $this->containerBuilder->build();
61 63
62 static::assertInstanceOf(ConfigManager::class, $container->conf); 64 static::assertInstanceOf(BookmarkServiceInterface::class, $container->bookmarkService);
63 static::assertInstanceOf(SessionManager::class, $container->sessionManager);
64 static::assertInstanceOf(CookieManager::class, $container->cookieManager); 65 static::assertInstanceOf(CookieManager::class, $container->cookieManager);
65 static::assertInstanceOf(LoginManager::class, $container->loginManager); 66 static::assertInstanceOf(ConfigManager::class, $container->conf);
67 static::assertInstanceOf(ErrorController::class, $container->errorHandler);
68 static::assertInstanceOf(Environment::class, $container->environment);
69 static::assertInstanceOf(FeedBuilder::class, $container->feedBuilder);
70 static::assertInstanceOf(FormatterFactory::class, $container->formatterFactory);
66 static::assertInstanceOf(History::class, $container->history); 71 static::assertInstanceOf(History::class, $container->history);
67 static::assertInstanceOf(BookmarkServiceInterface::class, $container->bookmarkService); 72 static::assertInstanceOf(HttpAccess::class, $container->httpAccess);
73 static::assertInstanceOf(LoginManager::class, $container->loginManager);
74 static::assertInstanceOf(NetscapeBookmarkUtils::class, $container->netscapeBookmarkUtils);
68 static::assertInstanceOf(PageBuilder::class, $container->pageBuilder); 75 static::assertInstanceOf(PageBuilder::class, $container->pageBuilder);
69 static::assertInstanceOf(PluginManager::class, $container->pluginManager);
70 static::assertInstanceOf(FormatterFactory::class, $container->formatterFactory);
71 static::assertInstanceOf(PageCacheManager::class, $container->pageCacheManager); 76 static::assertInstanceOf(PageCacheManager::class, $container->pageCacheManager);
72 static::assertInstanceOf(FeedBuilder::class, $container->feedBuilder); 77 static::assertInstanceOf(ErrorController::class, $container->phpErrorHandler);
78 static::assertInstanceOf(PluginManager::class, $container->pluginManager);
79 static::assertInstanceOf(SessionManager::class, $container->sessionManager);
73 static::assertInstanceOf(Thumbnailer::class, $container->thumbnailer); 80 static::assertInstanceOf(Thumbnailer::class, $container->thumbnailer);
74 static::assertInstanceOf(HttpAccess::class, $container->httpAccess);
75 static::assertInstanceOf(NetscapeBookmarkUtils::class, $container->netscapeBookmarkUtils);
76 static::assertInstanceOf(Updater::class, $container->updater); 81 static::assertInstanceOf(Updater::class, $container->updater);
77 82
78 // Set by the middleware 83 // Set by the middleware
diff --git a/tests/plugins/test/test.php b/tests/plugins/test/test.php
index 2aaf5122..ae5032dd 100644
--- a/tests/plugins/test/test.php
+++ b/tests/plugins/test/test.php
@@ -19,3 +19,8 @@ function hook_test_random($data)
19 19
20 return $data; 20 return $data;
21} 21}
22
23function hook_test_error()
24{
25 new Unknown();
26}