In the process of installing PHP7 and various extensions, if you install from source code, you will notice that there will always be a prompt after the make is successful: Don't forget to run 'make test'. This make test is to run PHP Automated testing.
If you have just installed PHP7 and run make test directly, after a long waiting time, the final statistical results will be like this:
There will be so many skips and failures, indicating that there are some extensions that you have not installed and related environments. The configuration also needs to be optimized
But generally speaking we don’t need to run so many test scripts, especially for a single extension, just test the relevant interfaces, so let’s take a closer look at how to run the test script independently
First of all Open the php Makefile and let’s see what make test does
<code>test: all @if test ! -z "$(PHP_EXECUTABLE)" && test -x "$(PHP_EXECUTABLE)"; then \ INI_FILE=`$(PHP_EXECUTABLE) -d 'display_errors=stderr' -r 'echo php_ini_loaded_file();' 2> /dev/null`; \ if test "$$INI_FILE"; then \ $(EGREP) -h -v $(PHP_DEPRECATED_DIRECTIVES_REGEX) "$$INI_FILE" > $(top_builddir)/tmp-php.ini; \ else \ echo > $(top_builddir)/tmp-php.ini; \ fi; \ INI_SCANNED_PATH=`$(PHP_EXECUTABLE) -d 'display_errors=stderr' -r '$$a = explode(",\n", trim(php_ini_scanne d_files())); echo $$a[0];' 2> /dev/null`; \ if test "$$INI_SCANNED_PATH"; then \ INI_SCANNED_PATH=`$(top_srcdir)/build/shtool path -d $$INI_SCANNED_PATH`; \ $(EGREP) -h -v $(PHP_DEPRECATED_DIRECTIVES_REGEX) "$$INI_SCANNED_PATH"/*.ini >> $(top_builddir)/tmp -php.ini; \ fi; \ TEST_PHP_EXECUTABLE=$(PHP_EXECUTABLE) \ TEST_PHP_SRCDIR=$(top_srcdir) \ CC="$(CC)" \ $(PHP_EXECUTABLE) -n -c $(top_builddir)/tmp-php.ini $(PHP_TEST_SETTINGS) $(top_srcdir)/run-tests.php -n -c $(top_builddir)/tmp-php.ini -d extensi/modules/ $(PHP_TEST_SHARED_EXTENSIONS) $(TESTS); \ TEST_RESULT_EXIT_CODE=$$?; \ rm $(top_builddir)/tmp-php.ini; \ exit $$TEST_RESULT_EXIT_CODE; \ else \ echo "ERROR: Cannot run tests without CLI sapi."; \ fi</code>
Don’t worry about the definitions of those variables first. The core content is the following sentence
<code>$(PHP_EXECUTABLE) -n -c $(top_builddir)/tmp-php.ini $(PHP_TEST_SETTINGS) $(top_srcdir)/run-tests.php -n -c $(top_builddir)/tmp-php.ini -d extensi/modules/ $(PHP_TEST_SHARED_EXTENSIONS) $(TESTS);</code>
It turns out that automatic testing is by executing run-tests in the PHP source code root directory .php is used. The test scripts are usually placed in the tests folder
We just open ./tests/basic in the PHP installation directory. There are some phpt files in it. These are the test scripts one by one
Some The content in the script is very simple. The content in 001.phpt is like this
<code>--TEST-- Trivial "Hello World" test --FILE-- <?php echo "Hello World"?> --EXPECT-- Hello World</code>
Let’s try running only 001.phpt
First of all, we need to set the relevant environment variables and specify the test object PHP. Here the poster uses installation
php
export TEST_PHP_EXECUTABLE=/usr/local/php7/bin/php
under the path and then execute
php run-tests.php ./tests/basic/001.phpt in the php installation root directory
If nothing unexpected happens, you can get the following results
In this way, we can write a script to specify the phpt to be tested and calculate the final results.
OneAPM for PHP can go deep into all PHP applications to complete application performance management and monitoring, including visibility of code-level performance issues, rapid identification and tracing of performance bottlenecks, and real user experience Monitoring, server monitoring and end-to-end application performance management. To read more technical articles, please visit the OneAPM official technical blog.
This article is reproduced from OneAPM official blog
The above has introduced the automated testing of PHP7 extensions, including aspects of it. I hope it will be helpful to friends who are interested in PHP tutorials.