From 75b7d6ae4e13c62cc26c47122a6913159d7f6bc8 Mon Sep 17 00:00:00 2001 From: Daniel Kesselberg Date: Sun, 27 Jan 2019 21:53:09 +0100 Subject: [PATCH] Add install logic for enable command Signed-off-by: Daniel Kesselberg --- build/integration/run.sh | 2 -- core/Command/App/Enable.php | 11 +++++++++++ tests/Core/Command/Apps/AppsEnableTest.php | 6 +++--- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/build/integration/run.sh b/build/integration/run.sh index e13a77c27be..fc6e35f078b 100755 --- a/build/integration/run.sh +++ b/build/integration/run.sh @@ -48,8 +48,6 @@ export TEST_SERVER_FED_URL="http://localhost:$PORT_FED/ocs/" if [ "$INSTALLED" == "true" ]; then #Enable external storage app - $OCC app:install --keep-disabled files_external - $OCC app:install --keep-disabled user_ldap $OCC app:enable files_external user_ldap mkdir -p work/local_storage diff --git a/core/Command/App/Enable.php b/core/Command/App/Enable.php index c91e715e1fa..75833753170 100644 --- a/core/Command/App/Enable.php +++ b/core/Command/App/Enable.php @@ -26,6 +26,7 @@ namespace OC\Core\Command\App; +use OC\Installer; use OCP\App\AppPathNotFoundException; use OCP\App\IAppManager; use OCP\IGroup; @@ -97,7 +98,17 @@ class Enable extends Command implements CompletionAwareInterface { return $group->getDisplayName(); }, $groupIds); + try { + /** @var Installer $installer */ + $installer = \OC::$server->query(Installer::class); + + if (false === $installer->isDownloaded($appId)) { + $installer->downloadApp($appId); + } + + $installer->installApp($appId); + if ($groupIds === []) { $this->appManager->enableApp($appId); $output->writeln($appId . ' enabled'); diff --git a/tests/Core/Command/Apps/AppsEnableTest.php b/tests/Core/Command/Apps/AppsEnableTest.php index 43f377c70a0..2d0ffd9f958 100644 --- a/tests/Core/Command/Apps/AppsEnableTest.php +++ b/tests/Core/Command/Apps/AppsEnableTest.php @@ -74,10 +74,10 @@ class AppsEnableTest extends TestCase { return [ [['admin_audit'], null, 0, 'admin_audit enabled'], [['comments'], null, 0, 'comments enabled'], - [['invalid_app'], null, 1, 'invalid_app not found'], + [['invalid_app'], null, 1, 'Could not download app invalid_app'], [['admin_audit', 'comments'], null, 0, "admin_audit enabled\ncomments enabled"], - [['admin_audit', 'comments', 'invalid_app'], null, 1, "admin_audit enabled\ncomments enabled\ninvalid_app not found"], + [['admin_audit', 'comments', 'invalid_app'], null, 1, "admin_audit enabled\ncomments enabled\nCould not download app invalid_app"], [['admin_audit'], ['admin'], 1, "admin_audit can't be enabled for groups"], [['comments'], ['admin'], 1, "comments can't be enabled for groups"], @@ -87,7 +87,7 @@ class AppsEnableTest extends TestCase { [['updatenotification'], ['admin', 'invalid_group'], 0, 'updatenotification enabled for groups: admin'], [['updatenotification', 'logreader'], ['admin', 'invalid_group'], 0, "updatenotification enabled for groups: admin\nlogreader enabled for groups: admin"], - [['updatenotification', 'logreader', 'invalid_app'], ['admin', 'invalid_group'], 0, "updatenotification enabled for groups: admin\nlogreader enabled for groups: admin"], + [['updatenotification', 'logreader', 'invalid_app'], ['admin', 'invalid_group'], 1, "updatenotification enabled for groups: admin\nlogreader enabled for groups: admin\nCould not download app invalid_app"], ]; } } -- 2.39.5