From bf2851f324bdc1a8ee54c033b93bd6d956ecfc31 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 12 Apr 2019 19:45:41 +0100 Subject: [PATCH] Move API checking to its own class so it can be unit-tested --- src/pocketmine/plugin/ApiVersion.php | 65 +++++++++++++++++++++++++ src/pocketmine/plugin/PluginManager.php | 2 +- tests/phpunit/plugin/ApiVersionTest.php | 55 +++++++++++++++++++++ 3 files changed, 121 insertions(+), 1 deletion(-) create mode 100644 src/pocketmine/plugin/ApiVersion.php create mode 100644 tests/phpunit/plugin/ApiVersionTest.php diff --git a/src/pocketmine/plugin/ApiVersion.php b/src/pocketmine/plugin/ApiVersion.php new file mode 100644 index 000000000..2dc83dc8b --- /dev/null +++ b/src/pocketmine/plugin/ApiVersion.php @@ -0,0 +1,65 @@ +getBaseVersion() !== $myVersion->getBaseVersion()){ + if($version->getMajor() !== $myVersion->getMajor() or $version->getSuffix() !== $myVersion->getSuffix()){ + continue; + } + + if($version->getMinor() > $myVersion->getMinor()){ //If the plugin requires new API features, being backwards compatible + continue; + } + + if($version->getMinor() === $myVersion->getMinor() and $version->getPatch() > $myVersion->getPatch()){ //If the plugin requires bug fixes in patches, being backwards compatible + continue; + } + } + + return true; + } + + return false; + } +} diff --git a/src/pocketmine/plugin/PluginManager.php b/src/pocketmine/plugin/PluginManager.php index 6bf056400..4d48bbe26 100644 --- a/src/pocketmine/plugin/PluginManager.php +++ b/src/pocketmine/plugin/PluginManager.php @@ -251,7 +251,7 @@ class PluginManager{ continue; } - if(!$this->isCompatibleApi(...$description->getCompatibleApis())){ + if(!ApiVersion::isCompatible($this->server->getApiVersion(), $description->getCompatibleApis())){ $this->server->getLogger()->error($this->server->getLanguage()->translateString("pocketmine.plugin.loadError", [ $name, $this->server->getLanguage()->translateString("%pocketmine.plugin.incompatibleAPI", [implode(", ", $description->getCompatibleApis())]) diff --git a/tests/phpunit/plugin/ApiVersionTest.php b/tests/phpunit/plugin/ApiVersionTest.php new file mode 100644 index 000000000..7c347a339 --- /dev/null +++ b/tests/phpunit/plugin/ApiVersionTest.php @@ -0,0 +1,55 @@ +