charm / testing
                            This package is abandoned and no longer maintained.
                                                                                                The author suggests using the frodeborli/themis package instead.
                                                                                    
                                        
                    
                    A tool for running regression and unit testing with very little scaffolding.
    1.1.13
    2022-06-08 22:54 UTC
Requires
- charm/terminal: >=1.0 <2.0
- charm/util-composerpath: ^1.0
- charm/util-phpencode: ^1.0
- neilime/php-css-lint: ^3.0
- seld/jsonlint: ^1.9
This package is auto-updated.
Last update: 2022-11-27 19:28:47 UTC
README
A command line tool for running quickly writing regression and unit tests without any boilerplate.
Writing a test
Create a folder charm-tests/ in your project root. Tests are contained in
simple PHP files which return an array like this:
<?php return [
    /**
     * First array item is a string that describes the test.
     */
    "Test description",
    /**
     * Second item is a function which performs the testing. The function
     * must return data which will be compared to the expected result.
     */
    function($data) {
        // perform your test and return a value
        return strtoupper($args);
    },
    /**
     * The next items are arrays of testing criteria and their expected result
     */
    [ "hello world",        "HELLO WORLD" ],        // succeeds
    [ "blåbærsyltetøy",     "BLåBæRSYLTETøY" ],     // succeeds
    [ "blåbærsyltetøy",     "BLÅBÆRSYLTEDØY" ],     // fails, but is the correct result
];
The test report
---------------
The test report contains the date and the result of all the tests with a nice
side-by-side diff highlighting the difference between the expected result and
the actual result.
Running the tests
-----------------
Run the function `vendor/bin/charm-testing` and you will see the tests being performed.
The output is a markdown file that you can save for future reference.
Simple Automation Example
-------------------------
The `charm-testing` command can easily be automated in various contexts, because it
provides an exit code which indicates the percentage of failed tests rounded up.
 * If no tests failed, the exit code is `0`.
 * If all tests failed, the exit code is `100`.
 * If 1 test failed, the exit code is `1` (or `100` if you only have
   one test. ;-)
Invoking the tests from PHP:
exec('exec /usr/bin/env vendor/bin/charm-testing', $output, $exitCode); if ($exitCode > 0) {
// some tests failed!
}
Handling failed tests from the command line:
./vendor/bin/charm-testing || echo "Some tests failed!"
or
if [[ ! $(./vendor/bin/charm-testing) ]]; then
echo "Some tests failed"
fi