[TASK] Remove CliBootstrap 05/41505/3
authorBenjamin Mack <benni@typo3.org>
Thu, 16 Jul 2015 19:01:52 +0000 (21:01 +0200)
committerAndreas Wolf <andreas.wolf@typo3.org>
Thu, 16 Jul 2015 21:55:37 +0000 (23:55 +0200)
The CliBootstrap utility was used in global scope
and can now be put in the Console Application.

All test-suits only run with PHP_SAPI = 'cli' only now
without the CGI fallback.

Resolves: #68257
Releases: master
Change-Id: Ieb7ff7d5daaceeba93094a759b9886f38685a8b9
Reviewed-on: http://review.typo3.org/41505
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
Reviewed-by: Andreas Wolf <andreas.wolf@typo3.org>
Tested-by: Andreas Wolf <andreas.wolf@typo3.org>
typo3/sysext/backend/Classes/Console/Application.php
typo3/sysext/core/Build/FunctionalTestsBootstrap.php
typo3/sysext/core/Build/UnitTestsBootstrap.php
typo3/sysext/core/Classes/Core/CliBootstrap.php [deleted file]
typo3/sysext/core/Tests/Functional/Fixtures/Frontend/request.tpl
typo3/sysext/core/Tests/FunctionalTestCaseBootstrapUtility.php

index 26868fb..1389a31 100644 (file)
@@ -47,9 +47,9 @@ class Application implements ApplicationInterface {
         * @param \Composer\Autoload\ClassLoader|\Helhum\ClassAliasLoader\Composer\ClassAliasLoader $classLoader an instance of the class loader
         */
        public function __construct($classLoader) {
-               $this->defineLegacyConstants();
+               $this->checkEnvironmentOrDie();
 
-               \TYPO3\CMS\Core\Core\CliBootstrap::checkEnvironmentOrDie();
+               $this->defineLegacyConstants();
 
                $this->bootstrap = Bootstrap::getInstance()
                        ->initializeClassLoader($classLoader)
@@ -88,4 +88,46 @@ class Application implements ApplicationInterface {
                define('TYPO3_MODE', 'BE');
                define('TYPO3_cliMode', TRUE);
        }
+
+       /**
+        * Check the script is called from a cli environment.
+        *
+        * @return void
+        */
+       protected function checkEnvironmentOrDie() {
+               if (substr(php_sapi_name(), 0, 3) === 'cgi') {
+                       $this->initializeCgiCompatibilityLayerOrDie();
+               } elseif (php_sapi_name() !== 'cli') {
+                       die('Not called from a command line interface (e.g. a shell or scheduler).' . LF);
+               }
+       }
+
+       /**
+        * Set up cgi sapi as de facto cli, but check no HTTP
+        * environment variables are set.
+        *
+        * @return void
+        */
+       protected function initializeCgiCompatibilityLayerOrDie() {
+               // Sanity check: Ensure we're running in a shell or cronjob (and NOT via HTTP)
+               $checkEnvVars = array('HTTP_USER_AGENT', 'HTTP_HOST', 'SERVER_NAME', 'REMOTE_ADDR', 'REMOTE_PORT', 'SERVER_PROTOCOL');
+               foreach ($checkEnvVars as $var) {
+                       if (array_key_exists($var, $_SERVER)) {
+                               echo 'SECURITY CHECK FAILED! This script cannot be used within your browser!' . LF;
+                               echo 'If you are sure that we run in a shell or cronjob, please unset' . LF;
+                               echo 'environment variable ' . $var . ' (usually using \'unset ' . $var . '\')' . LF;
+                               echo 'before starting this script.' . LF;
+                               die;
+                       }
+               }
+
+               // Mimic CLI API in CGI API (you must use the -C/-no-chdir and the -q/--no-header switches!)
+               ini_set('html_errors', 0);
+               ini_set('implicit_flush', 1);
+               ini_set('max_execution_time', 0);
+               define('STDIN', fopen('php://stdin', 'r'));
+               define('STDOUT', fopen('php://stdout', 'w'));
+               define('STDERR', fopen('php://stderr', 'w'));
+       }
+
 }
index 4c06422..423939d 100644 (file)
@@ -50,6 +50,9 @@ class FunctionalTestsBootstrap {
         * @return FunctionalTestsBootstrap fluent interface
         */
        protected function loadClassFiles() {
+               if (!class_exists('PHPUnit_Framework_TestCase')) {
+                       die('PHPUnit wasn\'t found. Please check your settings and command.');
+               }
                $testsDirectory = __DIR__ . '/../Tests/';
                require_once($testsDirectory . 'BaseTestCase.php');
                require_once($testsDirectory . 'FunctionalTestCase.php');
@@ -123,6 +126,9 @@ class FunctionalTestsBootstrap {
        }
 }
 
+if (PHP_SAPI !== 'cli') {
+       die('This script supports command line usage only. Please check your command.');
+}
 $bootstrap = new FunctionalTestsBootstrap();
 $bootstrap->bootstrapSystem();
 unset($bootstrap);
index b510ba5..191742d 100644 (file)
@@ -171,7 +171,11 @@ class UnitTestsBootstrap {
         * @return UnitTestsBootstrap fluent interface
         */
        protected function includeAndStartCoreBootstrap() {
-               $classLoader = require PATH_site . '/typo3/vendor/autoload.php';
+               $classLoaderFilepath = PATH_site . '/typo3/vendor/autoload.php';
+               if (!file_exists($classLoaderFilepath)) {
+                       die('ClassLoader can\'t be loaded. Please check your path or set an environment variable \'TYPO3_PATH_WEB\' to your root path.');
+               }
+               $classLoader = require $classLoaderFilepath;
 
                Bootstrap::getInstance()
                        ->initializeClassLoader($classLoader)
@@ -211,6 +215,9 @@ class UnitTestsBootstrap {
        }
 }
 
+if (PHP_SAPI !== 'cli') {
+       die('This script supports command line usage only. Please check your command.');
+}
 $bootstrap = new UnitTestsBootstrap();
 $bootstrap->bootstrapSystem();
 unset($bootstrap);
diff --git a/typo3/sysext/core/Classes/Core/CliBootstrap.php b/typo3/sysext/core/Classes/Core/CliBootstrap.php
deleted file mode 100644 (file)
index cfb2bf4..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-namespace TYPO3\CMS\Core\Core;
-
-/*
- * This file is part of the TYPO3 CMS project.
- *
- * It is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, either version 2
- * of the License, or any later version.
- *
- * For the full copyright and license information, please read the
- * LICENSE.txt file that was distributed with this source code.
- *
- * The TYPO3 project - inspiring people to share!
- */
-
-/**
- * This class encapsulates cli specific bootstrap methods.
- *
- * This script is internal code and subject to change.
- * DO NOT use it in own code, or be prepared your code might
- * break in future core versions.
- */
-class CliBootstrap {
-
-       /**
-        * Check the script is called from a cli environment.
-        *
-        * @return void
-        * @internal This is not a public API method, do not use in own extensions
-        */
-       static public function checkEnvironmentOrDie() {
-               if (substr(php_sapi_name(), 0, 3) === 'cgi') {
-                       self::initializeCgiCompatibilityLayerOrDie();
-               } elseif (php_sapi_name() !== 'cli') {
-                       die('Not called from a command line interface (e.g. a shell or scheduler).' . LF);
-               }
-       }
-
-       /**
-        * Set up cgi sapi as de facto cli, but check no HTTP
-        * environment variables are set.
-        *
-        * @return void
-        */
-       static protected function initializeCgiCompatibilityLayerOrDie() {
-               // Sanity check: Ensure we're running in a shell or cronjob (and NOT via HTTP)
-               $checkEnvVars = array('HTTP_USER_AGENT', 'HTTP_HOST', 'SERVER_NAME', 'REMOTE_ADDR', 'REMOTE_PORT', 'SERVER_PROTOCOL');
-               foreach ($checkEnvVars as $var) {
-                       if (array_key_exists($var, $_SERVER)) {
-                               echo 'SECURITY CHECK FAILED! This script cannot be used within your browser!' . LF;
-                               echo 'If you are sure that we run in a shell or cronjob, please unset' . LF;
-                               echo 'environment variable ' . $var . ' (usually using \'unset ' . $var . '\')' . LF;
-                               echo 'before starting this script.' . LF;
-                               die;
-                       }
-               }
-               // Mimic CLI API in CGI API (you must use the -C/-no-chdir and the -q/--no-header switches!)
-               ini_set('html_errors', 0);
-               ini_set('implicit_flush', 1);
-               ini_set('max_execution_time', 0);
-               define('STDIN', fopen('php://stdin', 'r'));
-               define('STDOUT', fopen('php://stdout', 'w'));
-               define('STDERR', fopen('php://stderr', 'w'));
-       }
-
-}
index 56feed1..059b9ec 100644 (file)
@@ -1,8 +1,5 @@
 <?php
-require '{originalRoot}typo3/sysext/core/Classes/Core/CliBootstrap.php';
-\TYPO3\CMS\Core\Core\CliBootstrap::checkEnvironmentOrDie();
-
 require '{originalRoot}typo3/sysext/core/Tests/Functional/Framework/Frontend/RequestBootstrap.php';
 \TYPO3\CMS\Core\Tests\Functional\Framework\Frontend\RequestBootstrap::setGlobalVariables({arguments});
 \TYPO3\CMS\Core\Tests\Functional\Framework\Frontend\RequestBootstrap::executeAndOutput();
-?>
\ No newline at end of file
+?>
index 3f84674..e5d56dc 100644 (file)
@@ -424,9 +424,6 @@ class FunctionalTestCaseBootstrapUtility {
                define('TYPO3_MODE', 'BE');
                define('TYPO3_cliMode', TRUE);
 
-               require_once $this->instancePath . '/typo3/sysext/core/Classes/Core/CliBootstrap.php';
-               \TYPO3\CMS\Core\Core\CliBootstrap::checkEnvironmentOrDie();
-
                $classLoader = require $this->instancePath . '/typo3/vendor/autoload.php';
                \TYPO3\CMS\Core\Core\Bootstrap::getInstance()
                        ->initializeClassLoader($classLoader)