summaryrefslogtreecommitdiffstats
path: root/tests/postbuild/bic/README
blob: ff78bbaf5a25424eb0cb3026c2d23b5025c5999c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
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