Development environment

Setting up a development environment for CMSimple_XH is quite simple: a web server with PHP support and the CMSimple_XH sources are already sufficient. Of course, a suitable editor is also needed. If the own designs should also flow into the general development of CMSimple_XH, an additional Git client is needed.

Requirements

To use the CMSimple_XH build system (recommended), the following components are also required:

All other development dependencies are installed via Composer.

Optional: Phan, which requires PHP 7.1 and the php-ast extension.

Setup

Phing Targets

The CMSimple_XH build system is supported by Phing and provides several targets, which are described below. A short help on the available targets can be obtained by running phing without parameters.

In a recent version of Phing, the default logger has changed to phing.listener.AnsiColorLogger, resulting in strange output on terminals that cannot handle ANSI escape codes. You must explicitly use phing.listener.DefaultLogger in this case, or on Windows you can use Ansicon as a replacement for cmd.exe.

Static code analysis

phing sniff

Checks the core and internal plugins (filebrowser, meta_tags and page_params) for violations of the encoding standard.

phing mess

Checks for unused code. Only available in master, but not in release branches before 1.6.

phing compat

Checks the core and default plugins for compatibility with different PHP versions.

phing phan

Performs a general static code analysis. For this target, the phan command must be present in the path.

Test Suites

phing unit-tests

Runs the unit test suite. Currently, this requires a “correct” configuration, in particular language_default must be set to 'en'.

phing attack-tests

Runs the attack test suite. To do this, the CMSIMPLEDIR environment variable must be set to the URL path of the development installation. For example, if the URL is http://localhost/xh/, CMSIMPLEDIR must be set to /xh/ (note the leading and trailing slashes).

phing validation-tests

Runs the validation test suite. CMSIMPLEDIR must be set accordingly (see above). Note that this test suite uses the W3C-Validator, so the tests may sometimes fail because this service is not available.

phing all-tests

Short command to run all three test suites.

Code verification

phing coverage

Generates a code review test report based on the unit test suite. The report is located in tests/unit/coverage/.

Documentation

phing php-doc

Creates the PHP documentation from the sources and tutorials in tutorials/. The documentation is then located in doc/php/.

phing js-doc

Generates the JS documentation from the sources. It is located in doc/js/.

phing doc

A shortcut to create the PHP and JS documentation.

Building

phing -Dversion=<version> build

Creates the complete installation package as a ZIP archive in the root directory, ready for publishing.

phing -Dversion=<version> -Dpatchee=<filename> build-patch

Creates an update package as a ZIP archive in the root folder, ready for publishing. <filename> should be the filename of the full installation package of the version for which the patch is to be built.

So, for example, if CMSimple_XH 1.7.6 is to be released, we run the following:

phing -Dversion="1.7.6" build
phing -Dversion="1.7.6" -Dpatchee="CMSimple_XH-1.7.zip" build-patch
mv "CMSimple_XH-1.7.6-patch.zip" "CMSimple_XH-update-1.7-to-1.7.6.zip"
phing -Dversion="1.7.6" -Dpatchee="CMSimple_XH-1.7.5.zip" build-patch
mv "CMSimple_XH-1.7.6-patch.zip" "CMSimple_XH-update-1.7.5-to-1.7.6.zip"
The generated ZIP archives may not be suitable for redistribution because unzipping may result in too lax file system permissions. Therefore, the ZIP archive may need to be re-zipped using a suitable tool.

Troubleshooting

If you have problems setting up the development environment or running the phing targets, you can contact other developers in the Open Development section of the CMSimple_XH forum. In particular, take a look at the thread “How I ride the bullet – How I set up a testing environment?”