Revision control
++ Simple guide to running the bic test outside the CI environment
++ ---------------------------------------------------------------
++
++ 1) Set up the environment for Qt
++
++ The script for generating bic data (gen.sh) relies on the variable QTDIR being set
++ since it targets Qt 4 and Qt 5. It is therefore recommended to set QTDIR in Qt 5
++ as well:
++
++ For repositories:
++ export QTDIR=~/dev/qt/qtbase
++
++ For SDKs:
++ export QTDIR=/opt/Qt5.4.0/5.4/gcc_64
++
++ export PATH=$QTDIR/bin:$PATH
++
++ 2) Compile tst_bic
++
++ cd $QTDIR/../qtqa/tests/postbuild/bic
++ qmake
++ make
++
++ 3) Set the environment variable QT_MODULE_TO_TEST to point to the module to test:
++
++ export QT_MODULE_TO_TEST=$QTDIR/../qtmodule
++
++ 4) Run:
++
++ $QTDIR/../qtqa/tests/postbuild/bic/tst_bic
++
++ The expected output looks like:
++
++ ********* Start testing of tst_Bic *********
++ Config: Using QtTest library 5.4.0, Qt 5.4.0 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 4.6.1)
++ WARNING: tst_Bic::initTestCase() This test needs the correct qmake in PATH, we need it to generate INCPATH for qt modules.
++ Loc: [tst_bic.cpp(149)]
++ QDEBUG : tst_Bic::initTestCase() modules keys: ("QtQuick", "QtQml", "QtQuickTest")
++ QDEBUG : tst_Bic::initTestCase() modules values: ("quick", "qml", "qmltest")
++ PASS : tst_Bic::initTestCase()
++ PASS : tst_Bic::sizesAndVTables(QtQuick:5.0)
++ PASS : tst_Bic::sizesAndVTables(QtQuick:5.1)
++ PASS : tst_Bic::sizesAndVTables(QtQuick:5.2)
++ PASS : tst_Bic::sizesAndVTables(QtQuick:5.3)
++ PASS : tst_Bic::sizesAndVTables(QtQml:5.0)
++ PASS : tst_Bic::sizesAndVTables(QtQml:5.1)
++ PASS : tst_Bic::sizesAndVTables(QtQml:5.2)
++ PASS : tst_Bic::sizesAndVTables(QtQml:5.3)
++ PASS : tst_Bic::sizesAndVTables(QtQuickTest:5.0)
++ PASS : tst_Bic::sizesAndVTables(QtQuickTest:5.1)
++ PASS : tst_Bic::sizesAndVTables(QtQuickTest:5.2)
++ PASS : tst_Bic::sizesAndVTables(QtQuickTest:5.3)
++ PASS : tst_Bic::cleanupTestCase()
++ Totals: 14 passed, 0 failed, 0 skipped, 0 blacklisted
++ ********* Finished testing of tst_Bic *********
++
++ Simple guide to generate the bic test data
++ ------------------------------------------
++
++ Assuming the environment including QTDIR has been set up and tst_bic has been
++ compiled as described above, the data can be generated using the script
++ $QTDIR/../qtqa/tests/postbuild/bic/gen.sh, for example for qtdeclarative:
++
++ cd $QTDIR/../qtdeclarative/tests/auto/bic/data
++ $QTDIR/../qtqa/tests/postbuild/bic/gen.sh "QtQml QtQuick QtQuickTest" 5.4.0.linux-gcc-amd64
++
++ To verify, run the test as described above.
++
++ The new way
++ -----------
++
++ It's also possible to test multiple modules at once. This avoids the problem
++ we've had occasionally in Qt 6, namely that modules can include headers from
++ other modules, and then those cross-module includes may later be refactored
++ away. This used to cause false positives in BiC tests, because the symbols
++ are no longer there when tested against old data that had them.
++
++ This is facilitated by running the test with QTDIR set as explained above,
++ and then listing all the modules in QT_MODULE_TO_TEST, while also providing
++ the directory where the test data resides (the old way automatically
++ gets the test data location from the module directory, in the new way we
++ need to provide the location). Looks like this:
++
++ QT_MODULE_TO_TEST="qt=QtConcurrent,QtCore,QtDBus,QtDesigner,QtGui,QtHelp,QtNetwork,QtOpenGL,QtPrintSupport,QtQml,QtQuick,QtQuickTest,QtSql,QtSvg,QtTest,QtWidgets,QtXml;/your-qt-sources/qtbase" ./tst_bic
++
++ In other words, the format of QT_MODULE_TEST is
++ qt=module1,module1;path-to-test-data
++
++ The corresponding new way to generate test data is similar; you again
++ set QTDIR, and then invoke the script with slightly different
++ arguments:
++
++ gen.sh qt=QtConcurrent,QtCore,QtDBus,QtDesigner,QtGui,QtHelp,QtNetwork,QtOpenGL,QtPrintSupport,QtQml,QtQuick,QtQuickTest,QtSql,QtSvg,QtTest,QtWidgets,QtXml 6.3.0.linux-gcc-amd64
++
++ The format of the invocation is
++
++ gen.sh qt=mod1,mod2,... platform