Home >Backend Development >PHP Tutorial >PHP7 extension automated testing

PHP7 extension automated testing

WBOY
WBOYOriginal
2016-07-29 08:56:441028browse

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:
PHP7 extension automated testing
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
PHP7 extension automated testing

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
PHP7 extension automated testing

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.

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn