Annotation of embedaddon/php/README.TESTING, revision 1.1

1.1     ! misho       1: [IMPORTANT NOTICE]
        !             2: ------------------
        !             3:  Failed tests usualy indicate a problem with your local system setup
        !             4: and not within PHP itself (at least for official PHP release versions).
        !             5: You may decide to automaticaly submit a test summary to our QA workflow
        !             6: at the end of a test run.
        !             7:  Please do *not* submit a failed test as a bug or ask for help on why
        !             8: it failed on your system without providing substantial backup information
        !             9: on *why* the test failed on your special setup. Thank you :-)
        !            10: 
        !            11: 
        !            12: [Testing Basics] 
        !            13: ----------------
        !            14:  The easiest way to test your PHP build is to run "make test" from the
        !            15: command line after successfully compiling. This will run the complete
        !            16: tests for all enabled functionalities and extensions using the PHP
        !            17: CLI binary.
        !            18:  To execute test scripts, you must build PHP with some SAPI, then you
        !            19: type "make test" to execute all or some test scripts saved under
        !            20: "tests" directory under source root directory.
        !            21: 
        !            22: Usage:
        !            23: make test
        !            24: 
        !            25:  "make test" basically executes "run-tests.php" script
        !            26: under the source root (parallel builds will not work). Therefore you
        !            27: can execute the script as follows:
        !            28: 
        !            29: TEST_PHP_EXECUTABLE=sapi/cli/php \
        !            30: sapi/cli/php [-c /path/to/php.ini] run-tests.php [ext/foo/tests/GLOB]
        !            31: 
        !            32: 
        !            33: [Which "php" executable "make test" look for]
        !            34: ---------------------------------------------
        !            35: If you are running the run-tests.php script from the command line (as above)
        !            36: you must set the TEST_PHP_EXECUTABLE environment variable to explicitly
        !            37: select the PHP executable that is to be tested, that is, used to run the test scripts.
        !            38: 
        !            39: If you run the tests using make test, the PHP CLI and CGI executables are 
        !            40: automatically set for you. "make test" executes "run-tests.php" script with the CLI binary.  Some
        !            41: test scripts such as session must be executed by CGI SAPI. Therefore,
        !            42: you must build PHP with CGI SAPI to perform all tests.
        !            43: 
        !            44: NOTE: PHP binary executing "run-tests.php" and php binary used for
        !            45: executing test scripts may differ. If you use different PHP binary for
        !            46: executing "run-tests.php" script, you may get errors.
        !            47: 
        !            48: 
        !            49: [Which php.ini is used]
        !            50: -----------------------
        !            51:  "make test" uses the same php.ini file as it would once installed.
        !            52: The tests have been written to be independent of that php.ini file,
        !            53: so if you find a test that is affected by a setting, please report
        !            54: this, so we can address the issue.
        !            55: 
        !            56: 
        !            57: [Which test scripts are executed]
        !            58: ---------------------------------
        !            59:  "run-tests.php" ("make test"), without any arguments executes all
        !            60: test scripts by extracting all directories named "tests"
        !            61: from the source root and any subdirectories below. If there are files,
        !            62: which have a "phpt" extension, "run-tests.php" looks at the sections
        !            63: in these files, determines whether it should run it, by evaluating
        !            64: the 'SKIP' section. If the test is eligible for execution, the 'FILE'
        !            65: section is extracted into a ".php" file (with the same name besides 
        !            66: the extension) and gets executed.
        !            67: When an argument is given or TESTS environment variable is set, the
        !            68: GLOB is expanded by the shell and any file with extension "*.phpt" is
        !            69: regarded as a test file.
        !            70: 
        !            71:  Tester can easily execute tests selectively with as follows.
        !            72: 
        !            73: Examples:
        !            74: ./sapi/cli/php run-tests.php ext/mbstring/*
        !            75: ./sapi/cli/php run-tests.php ext/mbstring/020.phpt
        !            76: 
        !            77: 
        !            78: [Test results]
        !            79: --------------
        !            80:  Test results are printed to standard output. If there is a failed test, 
        !            81: the "run-tests.php" script saves the result, the expected result and the
        !            82: code executed to the test script directory. For example, if 
        !            83: ext/myext/tests/myext.phpt fails to pass, the following files are created:
        !            84: 
        !            85: ext/myext/tests/myext.php   - actual test file executed
        !            86: ext/myext/tests/myext.log   - log of test execution (L)
        !            87: ext/myext/tests/myext.exp   - expected output (E)
        !            88: ext/myext/tests/myext.out   - output from test script (O)
        !            89: ext/myext/tests/myext.diff  - diff of .out and .exp (D)
        !            90: 
        !            91:  Failed tests are always bugs. Either the test is bugged or not considering
        !            92: factors applying to the tester's environment, or there is a bug in PHP.
        !            93: If this is a known bug, we strive to provide bug numbers, in either the
        !            94: test name or the file name. You can check the status of such a bug, by
        !            95: going to: http://bugs.php.net/12345 where 12345 is the bug number.
        !            96: For clarity and automated processing, bug numbers are prefixed by a hash
        !            97: sign '#' in test names and/or test cases are named bug12345.phpt.
        !            98: 
        !            99: NOTE: The files generated by tests can be selected by setting the
        !           100: environment variable TEST_PHP_LOG_FORMAT. For each file you want to be
        !           101: generated use the character in brackets as shown above (default is LEOD).
        !           102: The php file will be generated always.
        !           103: 
        !           104: NOTE: You can set environment variable TEST_PHP_DETAILED to enable
        !           105: detailed test information.
        !           106: 
        !           107: [Automated testing]
        !           108:  If you like to keep up to speed, with latest developments and quality
        !           109: assurance, setting the environment variable NO_INTERACTION to 1, will not
        !           110: prompt the tester for any user input.
        !           111: 
        !           112: Normally, the exit status of "make test" is zero, regardless of the results
        !           113: of independent tests. Set the environment variable REPORT_EXIT_STATUS to 1,
        !           114: and "make test" will set the exit status ("$?") to non-zero, when an
        !           115: individual test has failed.
        !           116: 
        !           117: Example script to be run by cron(1):
        !           118: ========== qa-test.sh =============
        !           119: #!/bin/sh
        !           120: 
        !           121: CO_DIR=$HOME/cvs/php5
        !           122: MYMAIL=qa-test@domain.com
        !           123: TMPDIR=/var/tmp
        !           124: TODAY=`date +"%Y%m%d"`
        !           125: 
        !           126: # Make sure compilation enviroment is correct
        !           127: CONFIGURE_OPTS='--disable-all --enable-cli --with-pcre'
        !           128: export MAKE=gmake
        !           129: export CC=gcc
        !           130: 
        !           131: # Set test environment
        !           132: export NO_INTERACTION=1
        !           133: export REPORT_EXIT_STATUS=1
        !           134: 
        !           135: cd $CO_DIR
        !           136: cvs update . >>$TMPDIR/phpqatest.$TODAY
        !           137: ./cvsclean ; ./buildconf ; ./configure $CONFIGURE_OPTS ; $MAKE
        !           138: $MAKE test >>$TMPDIR/phpqatest.$TODAY 2>&1
        !           139: if test $? -gt 0
        !           140: then
        !           141:         cat $TMPDIR/phpqatest.$TODAY | mail -s"PHP-QA Test Failed for $TODAY" $MYMAIL
        !           142: fi
        !           143: ========== end of qa-test.sh =============
        !           144: 
        !           145: NOTE: the exit status of run-tests.php will be 1 when
        !           146: REPORT_EXIT_STATUS is set. The result of "make test" may be higher
        !           147: than that. At present, gmake 3.79.1 returns 2, so it is
        !           148: advised to test for non-zero, rather then a specific value.
        !           149: 
        !           150: 
        !           151: [Creating new test files]
        !           152: -------------------------
        !           153:  Writing test file is very easy if you are used to PHP. 
        !           154: See the HOWTO at http://qa.php.net/write-test.php
        !           155: 
        !           156: 
        !           157: [How to help us]
        !           158: ----------------
        !           159:  If you find bug in PHP, you can submit bug report AND test script 
        !           160: for us. You don't have to write complete script, just give us test
        !           161: script with following format. Please test the script and make sure
        !           162: you write the correct ACTUAL OUTPUT and EXPECTED OUTPUT before you
        !           163: submit.
        !           164: 
        !           165: <?php
        !           166: /* 
        !           167: Bug #12345
        !           168: substr() bug. Do not return expected string.
        !           169: 
        !           170: ACTUAL OUTPUT
        !           171: XYXA
        !           172: 
        !           173: EXPECTED OUTPUT
        !           174: ABCD
        !           175: */
        !           176: 
        !           177: $str = "XYZABCD";
        !           178: echo substr($str,3,7);
        !           179: 
        !           180: ?>

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>