Commit Graph

50 Commits

Author SHA1 Message Date
hjk
960e99ecb1 Autotest: Convert to Tr::tr
Change-Id: Ifd4b6ace78d02804ec3b3c1d60c5418081cad6c4
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2022-08-01 12:16:41 +00:00
Christian Stenger
7b6f1000c6 AutoTest: Improve handling of pch usage
Using a regular expression to search for possible macro usages
will not omit commented out lines.
So, check matches for being commented out to be able to filter
out false positives.

Change-Id: Ie8f982ef418a4538e87567354adb0eb54ea918de
Reviewed-by: David Schulz <david.schulz@qt.io>
2021-09-24 04:34:02 +00:00
Christian Kandeler
284817fae6 Merge CppTools into CppEditor
There was no proper separation of responsibilities between these
plugins. In particular, CppTools had lots of editor-related
functionality, so it's not clear why it was separated out in the first
place.
In fact, for a lot of code, it seemed quite arbitrary where it was put
(just one example: switchHeaderSource() was in CppTools, wheras
switchDeclarationDefinition() was in CppEditor).
Merging the plugins will enable us to get rid of various convoluted
pseudo-abstractions that were only introduced to keep up the artificial
separation.

Change-Id: Iafc3bce625b4794f6d4aa03df6cddc7f2d26716a
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-09-01 14:53:58 +00:00
Jarek Kobus
cd3f82f247 Pass QFutureInterface by reference
No need for a copy.

Change-Id: I0308da77199942ef49e36fb04e81713cb9d9a901
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2021-08-30 12:06:12 +00:00
Christian Kandeler
a952500e90 CppTools: Use only const pointers for ProjectInfo and ProjectPart
All members were already const, but this makes it clear at all points of
use that these data structures are immutable.

Change-Id: Iea615c090bde462c445d15223caccc561b0c713d
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
2021-08-27 10:53:54 +00:00
Christian Stenger
7c56923704 AutoTest: Fix location information of data tags
Broke while moving over to use Utils::FilePath and correcting
the varying usages of name.

Change-Id: I6099f5f0dbc022d831fef78652932d69bd2e4326
Reviewed-by: David Schulz <david.schulz@qt.io>
2021-07-09 06:11:57 +00:00
Christian Stenger
354a0b17ab AutoTest: More filepathification
Change-Id: Ibb76f4332fa2e682709520cebe5e243dc3b70bb2
Reviewed-by: David Schulz <david.schulz@qt.io>
2021-06-17 08:30:48 +00:00
Christian Stenger
9db6569c43 AutoTest: Take precompiled headers into account
Test frameworks might be added to the precompiled
headers. This in turn would make some pre-checks
whether a file has to be processed or not fail.

Fixes: QTCREATORBUG-25821
Change-Id: Iff69c1a83889cb6f79a3e3f9b2e59c5383989ccd
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: David Schulz <david.schulz@qt.io>
2021-06-07 12:05:37 +00:00
Jarek Kobus
ba0c797e6d Compile fix
Amends: 615b37193b

Change-Id: Ic40e13320a964f20e50ddaf6a776592632361b3a
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-06-01 08:40:14 +00:00
Christian Stenger
615b37193b AutoTest: Support multiple test cases for Qt
Multiple testcases inside a single executable are not
supported officially, but widely used.
Detect them and handle them as appropriate as possible.
Single test functions or data tags are not selectable
as they cannot get addressed correctly and rely
strongly on the implementation of the test main.

Fixes: QTCREATORBUG-18347
Change-Id: I0f0f42579709d8896e034a6df356cb560291d2ba
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: David Schulz <david.schulz@qt.io>
2021-06-01 07:36:25 +00:00
Christian Stenger
5525f2b112 AutoTest: Use Utils::FilePath for files and directories
Still some missing bits as some QString members had different meanings
depending on their context.

Change-Id: Ib48eab54498974a26bbd5123cbffeefee5f7e79c
Reviewed-by: hjk <hjk@qt.io>
2021-05-27 12:24:05 +00:00
Christian Stenger
80f61a5db9 AutoTest: Extract data gathering and parse result creation
Function processDocument() became to huge. Beside this it
might be needed to re-use functionality partially.

Change-Id: I4c31caa4458c165938c3d6f1170d8ac4806d2af1
Reviewed-by: David Schulz <david.schulz@qt.io>
2021-05-06 07:19:42 +00:00
Alessandro Portale
72d91dc94a Use qAsConst with non-const Qt containers in range-loops
... in various places

Change-Id: Ic6c0c1b9437a1ed402105c7a14a1f5f9454a68d4
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
2021-02-17 14:43:29 +00:00
Bernhard Beschow
ed6083b521 AutoTest: Improve type safety in TestParseResult
By having TestParseResults take ITestFramework rather than ITestBase as
parameter, some base->asFramework() casts can be avoided today which
could possibly fail in the future.

Moreover, it allows TestTreeItem to take ITestFramework rather than
ITestBase as parameter which improves type safety further. This shall be
done in a separate commit though.

Change-Id: I66594415d68c3423076a0830ecd11080d3b6c186
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: David Schulz <david.schulz@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-02-04 11:31:56 +00:00
Bernhard Beschow
5d7f2d7444 AutoTest: Use working copy of own parser
In TestCodeParser::syncTestFrameworks(), a parser is created for every
test framework. As a result, the last parser being created would "win"
the global s_parserInstance variable, which is not predictable and
probably not intended. So turn CppParser::getFileContent() into a non-
static method, avoiding the global variable altogether.

Change-Id: I9f7560f1185bc4a3bc7b2b36e89280351998465e
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-01-22 10:51:53 +00:00
Christian Stenger
24db5dcc4f AutoTest: Use base of framework inside TestTreeItem
...and respectively inside the parse results which hold the
information that are used to create the items.

Change-Id: I78f7b5632df5d449d39fa03ffbf48036a138e337
Reviewed-by: David Schulz <david.schulz@qt.io>
2020-11-09 08:23:00 +00:00
hjk
77c4caf4ea Autotest: Keep track of generating framework in TestTreeItem
... and TestConfiguration. This allows dropping code that
reconstruct framework ids and framework lookup by id.

Change-Id: I0bb1e6e135376e21f96b9fab7971aa097787e483
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-03-27 14:11:11 +00:00
hjk
d3f79fcc68 AutoTest: Use ITestFramework * instead of its id in some cases
Change-Id: Ic327e31185247b6479c78af8bf8156f44bb4bdfb
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-03-16 12:18:29 +00:00
hjk
e5d1e9d274 Work around QHash::unite deprecation
Change-Id: Ibf199b5e3f2ca99b7e0cafe20893a509d9eab906
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2020-02-25 10:43:10 +00:00
Federico Guerinoni
04119f9039 Change QMap to QHash as written in TODO annotation
Change-Id: I1e72b6bac63fd2930b9808bbffe8e7f6fbb70934
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-01-13 08:16:46 +00:00
hjk
7ab6783e24 Standardize on int for line and column values
Recently tons of warnings show up for presumably "problematic"
singned <-> unsigned and size conversions.

The Qt side uses 'int', and that's the biggest 'integration surface'
for us, so instead of establishing some internal boundary between
signed and unsigned areas, push that boundary out of creator core code,
and use 'int' everywhere.

Because it reduces friction further, also do it in libcplusplus.

Change-Id: I84f3b79852c8029713e7ea6f133ffb9ef7030a70
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2019-07-26 09:23:48 +00:00
hjk
6a58666f44 More Utils::toSet/toList
... and unrelated cosmetic changes.

Change-Id: I591b17fd5289831e701b683f8fb47816efd1fa67
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2019-07-04 12:28:38 +00:00
David Schulz
2f505fd0f9 Autotest: extract cpp document lookup into cpp test parser
Change-Id: I261684206ec7ff9a97ca4a88b5846ebbc0fdda47
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-05-13 08:31:16 +00:00
Andre Hartmann
bcafe202c9 AutoTest: Allow redefinition of integrated QTest macros
Undefining the macro could lead to a crash when evaluating the
arguments; at least the test was not recognized (probably as
the loop was exited at the first ocurrence of the macro name).

Use case:

 #ifdef QTEST_APPLESS_MAIN
 #  undef QTEST_APPLESS_MAIN
 #  define QTEST_APPLESS_MAIN TF_TEST_MAIN
 #endif
 QTEST_APPLESS_MAIN(tst_MyClass)

Task-number: QTCREATORBUG-19910
Change-Id: I9f935f82a30b9681398e5d93fccfe6d474765022
Reviewed-by: Robert Szefner <robertsz27@interia.pl>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-01-07 09:25:18 +00:00
Christian Stenger
1d894c0f7a AutoTest: Code cosmetics
* use nullptr
* override
* remove old style casts
* fix most of the code model warnings

Change-Id: Ia08e846f9326ae28ca7e7d66748e25a8b817b9b1
Reviewed-by: Xing Xiong
Reviewed-by: David Schulz <david.schulz@qt.io>
2018-07-20 08:34:48 +00:00
Eike Ziller
115afed94b Merge remote-tracking branch 'origin/4.6'
Conflicts:
	tests/unit/unittest/gtest-creator-printing.cpp
	tests/unit/unittest/gtest-creator-printing.h

Change-Id: I43d2571617bfbf41c0fcf23502ab77975540eba4
2018-01-17 09:30:57 +01:00
Christian Stenger
a4c318d5e1 AutoTest: Fix wrong behavior when rescan is triggered
If the code parsers perform a full scan then do not use
cached information.

Change-Id: Ib9635c9715841ab71b97edfe42c4fe9d9d20c23a
Reviewed-by: David Schulz <david.schulz@qt.io>
2018-01-16 07:35:06 +00:00
Christian Stenger
d226c84cca AutoTest: Omit tests that cannot get handled
We might find some test constructs that cannot get run
without further knowledge which should be provided by the
user (e.g. plugin unit tests of QC)
Omit these tests to avoid user irritation and useless
warnings.

Change-Id: Ia8f533b931a7c58bd768697c0915cbdd44225534
Reviewed-by: David Schulz <david.schulz@qt.io>
2018-01-15 13:01:07 +00:00
Christian Stenger
0d87abee8b AutoTest: Fix handling of forward declared test classes
If a class has been forward declared we might not end up
inside the real class declaration when trying to find
declared test functions. So, do not just take the first
found symbol into account, continue to process others if
we haven't found the real declaration.

Task-number: QTCREATORBUG-19319
Change-Id: I752d7a10470f5362e2214596966d93c037d58f4a
Reviewed-by: David Schulz <david.schulz@qt.io>
2017-11-20 14:45:18 +00:00
Christian Stenger
66423bcb3e AutoTest: Fix parsing for Qt test
Broke with b6e12f4a.

Change-Id: If72b668b12cf9af7d154a8be8909a9c85645b457
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
2017-09-18 10:38:39 +00:00
Marco Bubke
b6e12f4a1c Convert macros from plain QByteArray to a vector of structs
The old code model expected the macros as C++ formatted text
("#define Foo 42) but newer targets like the Clang codemodel expect key
value arguments like "-DFoo=42". So instead of parsing the text again and
again we use an abstract data description.

Task-number: QTCREATORBUG-17915
Change-Id: I0179fd13c48a581e91ee79bba9d42d501c26f19f
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2017-09-14 15:23:56 +00:00
Christian Stenger
cccc6b37ec AutoTest: Remove not needed code
As this functionality had been simplified GTest* classes had been
ignored. Continue the simplification and finally remove now useless
code and file.

Change-Id: I89170cd5f05bb93bf30a05fdbf5370012bc9741a
Reviewed-by: David Schulz <david.schulz@qt.io>
2017-05-19 10:02:55 +00:00
Tim Jenssen
2631ffabd5 Remove spaces in initializer lists
Format initializer lists code style like.

Change-Id: Ib82c235e4ba7dc75ee96a7abc0c47eff7b0a9013
Reviewed-by: hjk <hjk@qt.io>
2017-02-22 16:25:09 +00:00
Christian Stenger
23398229e9 AutoTest: Modernize code
* remove unnecessary QLatin1String where possible
* foreach
* nullptr
* bad naming of static members

Change-Id: If0f7c6839be4d2efbfef6f7f0775d2034775bd90
Reviewed-by: David Schulz <david.schulz@qt.io>
2017-02-17 08:01:36 +00:00
Christian Stenger
40174187cb AutoTest: Remove unnecessary indirection when creating test tree items
Change-Id: Id4648196011b6769a2cd51b4daee146068272f00
Reviewed-by: David Schulz <david.schulz@qt.io>
2017-01-12 05:50:32 +00:00
Christian Stenger
92db5afba4 AutoTest: Handle re-implemented test functions appropriate
If a derived test case implements the same private slot as one of
its base classes one of these information got lost as both were
using the same key to store the information at.
Additionally take care of what is possible and sensible when using
QtTest and deriving test cases from others.

Task-number: QTCREATORBUG-17522
Change-Id: I0d2a47c820d5eb002f8bdd851a07a4774e9838f0
Reviewed-by: David Schulz <david.schulz@qt.io>
2017-01-10 05:39:05 +00:00
Christian Stenger
572b04a00a AutoTest: Find data tags of inherited functions
Task-number: QTCREATORBUG-17522
Change-Id: I9fa1db3c2d7f338afe343fc835b9e3dbae353131
Reviewed-by: David Schulz <david.schulz@qt.io>
2017-01-06 06:19:44 +00:00
Christian Stenger
0ceea628b0 AutoTest: Do not lose information of base classes
In case the base class is defined outside of the file with the
derived class we are missing the correct entry point.
Work around this by getting alternative entry points beforehand
and using them if we cannot find a valid entry point.

Task-number: QTCREATORBUG-17522
Change-Id: I07ef87b2fcdac4f78240da9e57eaa518ff0f4d20
Reviewed-by: David Schulz <david.schulz@qt.io>
2017-01-06 06:19:35 +00:00
Christian Stenger
4a634a23cf AutoTest: Find inherited Qt test methods
Task-number: QTCREATORBUG-17522
Change-Id: Ie7cfed2bd38944c28ea8502552593e0083f9727c
Reviewed-by: David Schulz <david.schulz@qt.io>
2017-01-06 06:19:28 +00:00
Christian Stenger
7d1d4471f0 AutoTest: Introduce inherited state for Qt test tree items
Preparation for later detection and displaying inherited functions
for Qt tests.

Task-number: QTCREATORBUG-17522
Change-Id: I2af1f758a837049ef676840b03f9cd73a2cb9873
Reviewed-by: David Schulz <david.schulz@qt.io>
2017-01-06 06:19:22 +00:00
Christian Stenger
9050f19046 AutoTest: Re-use snapshot instead of fetching it while visiting
Change-Id: Ia41da67cb1fa047473b84baebafdbcaf6586c7ae
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2016-11-07 12:05:27 +00:00
Christian Stenger
b0bf07c64a AutoTest: Modernize code a bit
Change-Id: Ie56f6e5cb8a4f1962bd8df5e57214911ae609921
Reviewed-by: David Schulz <david.schulz@qt.io>
2016-09-29 12:27:14 +00:00
Christian Stenger
38484d463c AutoTest: Correctly release resources
Change-Id: I8023c1468f9cf9cc0c549a466b298e19a6b40a15
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2016-07-15 09:19:18 +00:00
Christian Stenger
48b2af5e77 AutoTest: Cancel possible running tasks on shutdown
If tasks are running while shutting down we might end up in a crash,
so cancel all tasks and handle possible invalid accesses of the
current running processing.

Change-Id: I69f7cac5f44390e322fa301af6d6794270c95c2a
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2016-07-15 09:18:01 +00:00
Christian Stenger
72e6dd2ab1 AutoTest: Avoid fetching WorkingCopy from multiple threads
Instead fetch it once before starting asynchronous processing and
accept that current state of the WorkingCopy might be not completely
up to date. This avoids a crash that might happen when the code model
tries to update the WorkingCopy while the test code parser fetches
information of the WorkingCopy.

Change-Id: I2a893bc8814090361305657ed3c3d772c7bf07d5
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2016-06-20 10:50:28 +00:00
Christian Stenger
e4ff33e622 AutoTest: Move function into framework related class
TestTreeModel::testCaseNamesForFiles() is a helper that is currently
needed only for handling the Qt test framework.
Move it down into Qt framework's helper class and make it static.

Change-Id: I03c377a76402593584870cbbdaa4621d19278443
Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
2016-06-09 11:52:19 +00:00
Christian Stenger
01747388d4 AutoTest: Pass parameter by reference and use framework id...
...for determining from which root node test cases names are needed.
Another preparation for introducing test frameworks.

Change-Id: I02910f3e4736d9be6e6822eea7863fc62252d4db
Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
2016-06-08 12:33:52 +00:00
Christian Stenger
d198c4a22f AutoTest: Add Id to parsers and remove now useless enum
Preparation for introducing test frameworks.

Change-Id: Iefaa4ca9dd9af665444556afa9c6e326041cfd0f
Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
2016-06-07 09:12:12 +00:00
Christian Stenger
af81016e64 AutoTest: Rename 'AutoTest*' to reflect what it is
AutoTest* is too generic within the context where it is used.
This patch renames respective classes, members and string occurrences.

Change-Id: Ie413e4a344ddaf7892ecf248ba486defb4b9e3ef
Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
2016-06-06 13:23:24 +00:00
Christian Stenger
2f8b4b3fbf AutoTest: Move test framework related code...
...into files and respective sub folders.

Change-Id: Ic80d693bd73993a6e74b6d422349e47276e8cb6e
Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
2016-06-01 11:37:32 +00:00