Directory Layouts
When using this build and test environment, your directory layout looks like this:
<project>/ # Your project's root directory
|- build/ # The GreenCape build environment as a git submodule
| |- cache/ # [gen] Cache for downloaded Joomla! versions
| |- config/ # Configuration files
| |- docker/ # Definition of individual Docker images, that are not (yet) available from DockerHub
| |- logs/ # [gen] Log files produced by the build and test environment
| |- phing/ # Phing related files
| | |- *.xml # Build target definitions, included by build.xml
| |- plantuml # Files for embedding of PlantUML
| |- report/ # [gen] HTML reports generated from the log files
| |- screenshots # [gen] Screenshots by failing system tests
| |- servers/ # [gen] Volumes and configuration files for the Docker containers
| |- template/ # Templates for container files
| |- vendor/ # [gen] Dependencies installed by Composer
| |- build.xml.dist # Template for the main build file
| |- composer.json # Description of the dependencies
| |- composer.lock # Composer lock file
| |- README.md # This file
| |- *.* # Files related to the build project itself
| `- version.json # [gen] Available Joomla! versions
|- dist/ # [gen] Your project's distribution packages
|- docs/ # Your project's documentation
|- source/ # Your project's source
|- tests/ # Your project's test sources
`- build.xml # Your project's build file
The marker [gen]
denotes files and directories that will be generated during the build process when needed.
Source Directory Layout
Usually, the source directory layout follows the structure of the installation package. While that makes packaging easier, it is hard to combine coverage reports from the integration tests and the unit tests, if their directory layouts are different. The integration tests are always run with the runtime structure.
Because of that, the source directory has the same structure as in a running installation.
For a foobar
component, that would be
administrator/components/com_foobar/
administrator/language/en-GB/
components/com_foobar/
language/en-GB/
media/com_foobar/
Unused directories can of course be omitted.
All installation related files are located in the installation
directory.
Test Directory Layout
The test directory layout follows the same structure as the source directory for integration and unit tests.
integration
administrator/components/com_foobar/
components/com_foobar/
unit
administrator/components/com_foobar/
components/com_foobar/
The integration tests are copied to prepared test installations of different Joomla! versions and run there. The unit tests are run where they are, and can thus only contain tests, that do not need the CMS, framework or platform in any way.
Test Installations
The test installations need a certain layout, too. For each installation, a source
and a
tests
directory are created. The source
directory contains the Joomla! installation.
It is recommended to name the root directories with the version number, e.g. J3.1.1
.
To reduce changes due to new versions, symlinks should be created, e.g. J3-latest
pointing
to the newest 3.x.x installation of Joomla!.
PHPUnit on a test installation must be configured to create clover.xml
and junit.xml
in the build/logs
directory. These log files will be used for a consolidated test report.