* Add button to change billboard symbol. * Add shaders for billboards. * Add billboard material class. * Add sample billboard image. * Add dummy handler for billboard. * Add billboard geometry class. * First working version of 3D point as billboard. * Make selected feature bigger. * Use default symbol preview as billboard. * Update billboard when changes the viewport size. * Use QgsTerrainTextureImage for adding image to texture. * Show better quality of billboard default symbol. * Promote QgsSymbolButton not working. * Add QgsSymbolButton properly. * Add seTexture2DFromSymbol. * Use default symbol * [On Progress] Get symbol from the QgsSymbolButton. * [On progress] failed to change the symbol * Fix billboard fragment shader for macOS * Better transparency handling. * Use size from the symbol. * Add set layer for 3d billboard symbol. * Set billboard size from the symbol pixel size * 20 * Use size from the image. * [Debug] set white symbol to success kid, it work when previous billboard is success kid. * Use store and restore symbol from Nyall. * Remove unrelated code. * Apply random extent to fix the bug, from Martin. * Remove add mesh entities for billboard. * Hide material and transformation widget for billboard. * Remove add scene entities for billboard. * Add selected as parameter in drawPreviewIcon. * Add QgsMarkerSymbol to store the symbol in billboard * Put billboard symbol in point3dsymbol serialization. * Add billboard height in the UI. * Set height for billboard. * Store billboard height separately. Perhaps better to use existing transform. * Set height of billboard to TY. * Flipped image for billboard symbol. * Add helper function to set billboard function. * Generate billboard transform from general transform. * Use static dpi for context size. * Remove debug message. * Use Qgs3DRenderContext for selection color and dpi from QgsApplication. * Remove unnecessary file and code. * Remove commented iut code. * Add documentation of new classes. * Fix banned keywords. * Add missing parameter's documentation. * Address PR review. * Use context from readXML. * Remove one line function. * Fix billboard size. * Make some functions private, remove unused function. * Use unique_ptr for the ownership. * Use unique_ptr for default symbol to avoid memory leak. * Add parent to texture2D. * Fix documentation. * Add copy constructor. * Fix documentation. * Remove documentation warning. * Fix sip error. * Add unit test for billboard rendering. * Set ambient to not transparent for measurement line. * Add dpi in the Qgs3DMapSetting * Update billboard rendering unit test. * Remove layer from 3d point widget since it's not supported yet. * Addressing PR review from Martin. * Attach dom directly for the billboard symbol. * Remove unused constructor for point3dsymbol. * Use stroke width ratio for solving big stroke width. * Update unit test for rendering with some stroke color. * Fix typo.
QGIS unit tests
Build tests
Make sure that you have enabled building of tests in CMake.
cmake -DENABLE_TESTS=ON ..
Run tests
You can run all tests using make check
.
Note you will need xvfb-run
for that (sudo apt-get install xfvb).
Individual tests can be run using ctest
.
For example if the output of make check
ends like this:
The following tests FAILED:
77 - PyQgsLocalServer (Failed)
You could re-run the failing test with:
ctest -V -R PyQgsLocalServer
The parameter -V
enables verbose mode and -R
takes a regular expression as
parameter and will only run matching tests.
For python tests, you can run a specific test inside a unit file with something like this:
QGIS_PREFIX_PATH=output PYTHONPATH=output/python:$PYTHONPATH \
python ${srcdir}/tests/src/python/test_qgsvectorfilewriter.py
TestQgsVectorLayer.testOverwriteLayer
If you get Could not connect to any X display
errors it means that your build
machine does not have an X server. In that case you need to run the test under
xvfb-run
. For example:
xvfb-run --server-args=-screen\ 10\ 1024x768x24 ctest -V -R PyQgsServerWMSGetMap
Advanced configuration
Postgres
Make sure that you have enabled building of postgres test in CMake.
cmake -DENABLE_TESTS=ON -DENABLE_PGTEST=ON ..
To test the postgres provider you will need to have a database available to which the postgres provider can connect. The server will need to have PostGIS support enabled.
By default the test uses one of the following connection string:
dbname=qgis_test
service=qgis_test
If these do not match your setup you can set the environment variable
QGIS_PGTEST_DB
to the desired connection string. Note that you can
rely on standard libpq environment variables to tweak host, port user
and password (PGHOST, PGPORT, PGUSER, PGPASSWORD).
Please note that the test database needs to be initialized using the sql-scripts:
tests/testdata/provider/testdata_pg*.sql
They take care of activating PostGIS for the test database and create some tables containing test data.
For convenience, a shell script is provided to create the database and initialize it as needed:
tests/testdata/provider/testdata_pg.sh
Write tests
Instructions about writing tests for the processing framework can be found in a separate README file:
${TOP_SRCDIR}/python/plugins/processing/tests/README.md
Information about labeling tests design and organization:
${TOP_SRCDIR}/tests/testdata/labeling/README.rst
WCS testing information can be found in:
${TOP_SRCDIR}/tests/testdata/raster/README.WCS
About benchmark tests you can read:
${TOP_SRCDIR}/tests/bench/README
Run python tests in GDB
First find out the required environment variables by running the test outside the debugger.
ctest -V -R ProcessingQgisAlgorithmsTest
Which prints for somewhere in the initialization code something like:
export LD_LIBRARY_PATH=NOTFOUND:/home/m-kuhn/dev/cpp/qgis/build-qt5/output/lib:
export PYTHONPATH=/home/m-kuhn/dev/cpp/qgis/build-qt5/output/python/:/home/m-kuhn/dev/cpp/qgis/build-qt5/output/python/plugins:/home/m-kuhn/dev/cpp/qgis/QGIS/tests/src/python:
First, run these two commands in the terminal.
On the following line it says something like:
-- Running /usr/bin/python3 /home/m-kuhn/dev/cpp/qgis/QGIS/python/plugins/processing/tests/QgisAlgorithmsTest.py
Which you can run in gdb with:
gdb -ex r --args /usr/bin/python3 /home/m-kuhn/dev/cpp/qgis/QGIS/python/plugins/processing/tests/QgisAlgorithmsTest.py
Now you can start using the usual gdb (bt
etc.) interface or - if you have
installed the appropriate debug tools (adjust for python3!)
even allows doing python introspection (py-bt
).