From df5a46201f77b80d407c4d8462e4651fad0b4009 Mon Sep 17 00:00:00 2001 From: Michele Fantetti Date: Sat, 9 Dec 2017 18:07:38 +0100 Subject: [PATCH 1/2] Update CrontabManager.php If crontab is already populated, 'php bin/magento cron:install' adds '#~ MAGENTO START' and the rest of code directly to the last row of crontab without any spaces. --- lib/internal/Magento/Framework/Crontab/CrontabManager.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/internal/Magento/Framework/Crontab/CrontabManager.php b/lib/internal/Magento/Framework/Crontab/CrontabManager.php index 1f079b766c22e..dd9a41850f139 100644 --- a/lib/internal/Magento/Framework/Crontab/CrontabManager.php +++ b/lib/internal/Magento/Framework/Crontab/CrontabManager.php @@ -138,7 +138,7 @@ public function removeTasks() private function generateSection($content, $tasks = []) { if ($tasks) { - $content .= $this->getTasksBlockStart() . PHP_EOL; + $content .= PHP_EOL . $this->getTasksBlockStart() . PHP_EOL; foreach ($tasks as $task) { $content .= $task['expression'] . ' ' . PHP_BINARY . ' ' . $task['command'] . PHP_EOL; } From 3356c616b492889e6222c1b7820a845ebda05f4a Mon Sep 17 00:00:00 2001 From: Stanislav Idolov Date: Mon, 11 Dec 2017 12:38:22 +0200 Subject: [PATCH 2/2] magento/magento2#12609 --- .../Magento/Framework/Crontab/CrontabManager.php | 7 ++++++- .../Crontab/Test/Unit/CrontabManagerTest.php | 11 +++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/internal/Magento/Framework/Crontab/CrontabManager.php b/lib/internal/Magento/Framework/Crontab/CrontabManager.php index dd9a41850f139..94e2027abd135 100644 --- a/lib/internal/Magento/Framework/Crontab/CrontabManager.php +++ b/lib/internal/Magento/Framework/Crontab/CrontabManager.php @@ -138,7 +138,12 @@ public function removeTasks() private function generateSection($content, $tasks = []) { if ($tasks) { - $content .= PHP_EOL . $this->getTasksBlockStart() . PHP_EOL; + // Add EOL symbol to previous line if not exist. + if (substr($content, -strlen(PHP_EOL)) !== PHP_EOL) { + $content .= PHP_EOL; + } + + $content .= $this->getTasksBlockStart() . PHP_EOL; foreach ($tasks as $task) { $content .= $task['expression'] . ' ' . PHP_BINARY . ' ' . $task['command'] . PHP_EOL; } diff --git a/lib/internal/Magento/Framework/Crontab/Test/Unit/CrontabManagerTest.php b/lib/internal/Magento/Framework/Crontab/Test/Unit/CrontabManagerTest.php index 3327d10f2041b..5f7984c085ac7 100644 --- a/lib/internal/Magento/Framework/Crontab/Test/Unit/CrontabManagerTest.php +++ b/lib/internal/Magento/Framework/Crontab/Test/Unit/CrontabManagerTest.php @@ -338,6 +338,17 @@ public function saveTasksDataProvider() . ' %% cron:run | grep -v \"Ran \'jobs\' by schedule\"' . PHP_EOL . CrontabManagerInterface::TASKS_BLOCK_END . ' ' . md5(BP) . PHP_EOL, ], + [ + 'tasks' => [ + ['command' => '{magentoRoot}run.php % cron:run | grep -v "Ran \'jobs\' by schedule"'] + ], + 'content' => '* * * * * /bin/php /var/www/cron.php', + 'contentToSave' => '* * * * * /bin/php /var/www/cron.php' . PHP_EOL + . CrontabManagerInterface::TASKS_BLOCK_START . ' ' . md5(BP) . PHP_EOL + . '* * * * * ' . PHP_BINARY . ' /var/www/magento2/run.php' + . ' %% cron:run | grep -v \"Ran \'jobs\' by schedule\"' . PHP_EOL + . CrontabManagerInterface::TASKS_BLOCK_END . ' ' . md5(BP) . PHP_EOL, + ], ]; } }