framework_src/directory and includes everything in the
Cspray\Labrador\AsyncUnitnamespace. The second module is the cli module; it can be found in the
cli_src/directory and includes everything in the
Cspray\Labrador\AsyncUnitClinamespace. Each module also has a corresponding
cli_test/, respectively, where the test suite for each module is located. The test suites utilize PHPUnit to ensure that each module behaves as it is expected to.
Cspray\Labrador\AsyncUnit\Parser\Parserimplementation to initiate test compilation. By default the
Cspray\Labrador\AsyncUnit\Parser\StaticAnalysisParseris used. This implementation makes use of PHP-Parser to statically analyze tests for the appropriate information needed to run them.
StaticAnalysisParserdelegates the responsibility for the actual parsing to other objects, all of these objects live in the
Cspray\Labrador\AsyncUnit\Parsernamespace. The first is the
AsyncUnitModelNodeVisitor. It is responsible for interacting with the PHP-Parser API and converting the
Nodethat are generated into AsyncUnit models. The second is the
AsyncUnitModelCollector. The node visitor attaches all created models to this implementation. After all code has been traversed the collector can then ensure all the appropriate tests are associated to the appropriate test cases that are associated to the appropriate test suites. It also takes care of ensuring that some other things related to test suite and test case inheritance are taken care of. For example, if a
TestCaseare marked as disabled this implementation ensure that all the corresponding tests are also marked disabled.
Cspray\Labrador\AsyncUnit\TestSuiteRunner. This class knows how to instantiate and invoke the correct tests and hooks based on the
ParserResultgenerated from the compilation phase. Based on the outcome of these test invocations a series of events will be emitted that informs you about what has happened. Please check out the "Events" Reference for more information.
runcommand, or based on a configuration if using the default command. Ultimately the documentation for Symfony Console is outside the scope of this guide and understanding the CLI is ensuring you know how both the Console package and the AsyncUnit framework operate.