aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/blackbox/testdata
Commit message (Collapse)AuthorAgeFilesLines
* Fix probes referencing project properties1.15Richard Weickelt2020-02-051-20/+31
| | | | | | | | | This patch fixes a regression introduced in e8637511. Probes in Project items could no longer reference project properties by writing project.xxx on the right hand side of a property assignment expression. Change-Id: I7d04c71f4c493481a00411f12666bd6c2caa8caa Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Add test for cpp.generateLinkerMapFile propertyDenis Shienkov2019-10-212-0/+54
| | | | | | | | | This test cover only the applications using the MSVC and GCC-like toolchains yet. Other toolchains and a product types can be added later if it will required. Change-Id: I37db96015774447e1e30b503d9853599be0177f2 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Introduce the session commandChristian Kandeler2019-09-187-0/+38
| | | | | | | | | | Offers a JSON-based API for interaction with other tools via stdin/ stdout. This allows for proper qbs support in IDEs that do not use Qt or even C++. Change-Id: Ib051a40b7ebe1c6e0c3147cca9bd96e7daec1fde Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* Merge 1.14 into masterChristian Kandeler2019-08-265-0/+41
|\ | | | | | | Change-Id: Ic9ee11d628ba278271517aae0af020aec28ecbf7
| * Process Command: Do not needlessly interpret output as textChristian Kandeler2019-08-265-0/+41
| | | | | | | | | | | | | | | | | | ... when redirecting process output. Only do that if there is an output filter function. Otherwise, we break redirection of binary data. Fixes: QBS-1488 Change-Id: Ic5a1d2653fa8fc9c4f0eb5d31b7315d7aba3e030 Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* | More autotest fixesChristian Kandeler2019-08-151-0/+1
| | | | | | | | | | Change-Id: Icf6b9f7528bdb4b062b6586b12a08d8b410090fd Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* | C++: Add support for clang on WindowsChristian Kandeler2019-08-146-4/+59
| | | | | | | | | | | | | | | | | | | | | | | | | | This is about clang in "mingw mode", not clang-cl. When targeting Windows, clang is a lot like mingw, so factor out the common parts into a new base module. Testing uncovered a number of invalid assumptions in our autotests, which are also fixed in this patch. In addition, minor adjustments had to be made to the Qt.core module and to the qbscore lib. Change-Id: I73085dc62a65e2a9d0397cf234c8641989246f22 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com> Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* | Fix autotests for older compilersChristian Kandeler2019-08-071-0/+1
| | | | | | | | | | | | | | | | | | Amends 923f98062b. Change-Id: Ib98279e962128573a46d8d6f9cfd822494d0dfd8 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io> Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Jochen Ulrich <jochenulrich@t-online.de>
* | Add command and AutotestRunner timeoutJochen Ulrich2019-08-012-0/+46
|/ | | | | | | Task-number: QBS-1454 Change-Id: I6e2514d10cca0cba0a14456ecd2abfb495539ee4 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io> Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com>
* Add support for gRPC to the protobuf.cpp moduleIvan Komissarov2019-06-273-0/+90
| | | | | | | | This implements support for the gRPC framework: https://www.grpc.io Change-Id: Ia85461b9618e73827114c137fce8615e5a8139e3 Reviewed-by: Qbs CI Bot <travis-bot@weickelt.de> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Add PathProbe::candidateFilter propertyIvan Komissarov2019-06-262-0/+14
| | | | | | | | | | | | | | | This property can be used to check if candidate conforms with some conditions. For example, an architecture of a shared library candidate should match the current qbs.architecture. Also, this will allow to implement support for the "text based stub libraries" (yaml files that point to a real library in a system) on macOS - instead of checking real file architecture, it should be read from .tbd file Change-Id: Ie84a3e70d883dec949440358e2f08213a8501982 Reviewed-by: Qbs CI Bot <travis-bot@weickelt.de> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io> Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
* Allow PathProbe to search multiple filesIvan Komissarov2019-06-2520-0/+158
| | | | | | Change-Id: I6ae2dd130cbafb03e51bc6e8e8a3e262d6d45fc6 Reviewed-by: Qbs CI Bot <travis-bot@weickelt.de> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Add test for precompiled header and redefined macroIvan Komissarov2019-05-114-0/+80
| | | | | | | | | | | This illustrates the warning emitted by clang-cl when macro definition differs in a file and pch. Warning is emitted because of -Wclang-cl-pch flag which is enabled by default Change-Id: I48f39bd77db5be85b9cd2e0226c0b4e7931a9d5b Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Merge 1.13 into masterChristian Kandeler2019-05-101-0/+13
|\ | | | | | | Change-Id: Ic02d717f80f5d831f0cedb3b7c565a9bfef3a2a3
| * Print LC_BUILD_VERSION instead of LC_VERSION_MIN_MACOSXIvan Komissarov2019-04-261-0/+13
| | | | | | | | | | | | | | LC_BUILD_VERSION was introduced in apple clang 10.0 Change-Id: I06dd5bba7cab7d28d83c50f2878b5b434e97cca0 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* | Fix tests on non-latin systemsIvan Komissarov2019-04-231-1/+1
| | | | | | | | | | | | | | | | Qt Creator uses non-latin letters in path to the build directory in case of ru_RU.UTF-8 $LANG on Linux. Now QBS does handle that correctly. Change-Id: Ifc727b120a5f0ee60972c5e3ed24067426db8df2 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* | Add support for the clang-cl compilerIvan Komissarov2019-04-104-2/+13
|/ | | | | | Task-number: QBS-1316 Change-Id: Ibf9da364610c260ead088a8990a70c7739d53c39 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Use 'const auto' keywords more at objects allocationsDenis Shienkov2019-02-231-1/+1
| | | | | | Change-Id: I592d433e7c473ae9f27ca08e701516efe53650ba Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Introduce module providersChristian Kandeler2019-01-236-0/+75
| | | | | | | | | | | | | | | | | | | | | | If a dependency is not found, we now search for a matching module provider that can generate one for us. We also provide a generic fall-back provider which uses pkg-config to locate the dependency (but could be extended to incorporate other methods in the future). This is the most important part of this change for practical purposes, as it makes hundreds of popular libraries available for use in qbs projects without users having to write any boilerplate code. In a future patch, a module provider could also be used to implement the functionality of the qtprofilesetup library, relieving users of the need to create a profile for building Qt applications. [ChangeLog] The Depends item now falls back to pkg-config to locate dependencies whose names do not correspond to a qbs module. Fixes: QBS-1107 Change-Id: Ifd4f05c237cf58cd9fe707c3da648d3dbb33e82b Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Add recursive dependency scanning of GNU ld linkerscriptsOla Røer Thorsen2019-01-184-1/+39
| | | | | | | | | | | | | | Linkerscripts may contain INCLUDE and SEARCH_DIR commands that allows it to include other linkerscripts in a similary way as headers are included in C++. This commit adds a scanner that adds these additional dependencies. [ChangeLog] Added recursive dependency scanning of GNU ld linkerscripts that contain INCLUDE and SEARCH_DIR commands. Change-Id: I7549e27aad4fe7ade2a6a26eba14f66880261077 Reviewed-by: Ola Røer Thorsen <ola@silentwings.no> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Scanner item: Do not re-use the searchPaths value for other inputsChristian Kandeler2019-01-156-0/+33
| | | | | | | | | | | For the C++ scanner, the search paths depend on module properties, not on the actual input file. This assumption does not generally hold for Scanner items, which was not taken into account when this feature was originally introduced. As a result, the first input to get scanned by a Scanner item erroneously provided the search paths for all others. Change-Id: I0159d826dac1f5605494d54cfe96fe468044ca34 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* GCC: Make it possible to force the linker variantChristian Kandeler2019-01-072-0/+21
| | | | | | | | | | | | ...via cpp.linkerVariant. [ChangeLog] Added new cpp property linkerVariant to force use of gold, bfd or lld. Task-number: QBS-1421 Change-Id: I98f9d2581515ac8e9c984a2f8d70f4a7a3ab230b Reviewed-by: Orgad Shaneh <orgads@gmail.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Add atEnd() function to the Process serviceOla Røer Thorsen2019-01-031-0/+18
| | | | | | | | | | | | This makes it possible to use readLine in a while loop until the complete stream is read, even when reading empty lines. [ChangeLog] Added atEnd() function to the Process service, to make it possible to use readLine() in a while loop until the complete stream is read. Change-Id: Ie5f047651977195d6a93c4575bd7a8796b83ab5d Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Fix FileInfo.canonicalPath blackbox test for non-UnixJoerg Bornemann2019-01-021-1/+2
| | | | | | | The path passed to canonicalPath has to exist. Change-Id: Ibcc0a142ab5714e6a937c688fd1fd035fdfea9e3 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Add FileInfo.canonicalPathJoerg Bornemann2018-12-201-0/+1
| | | | | | | | | [ChangeLog] Added the canonicalPath() function to the FileInfo extension. Task-number: QBS-742 Change-Id: I8490b1bbdb3ac4ce84b80e82ca9f37bd2816e150 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Rename PathProbe.pathPrefixes and PathProbe.platformPaths propertiesIvan Komissarov2018-12-103-4/+4
| | | | | | | | | The naming was misleading - prefixes had the same logical meaning as platformPaths, despite the fact completely different PathProbe.pathSuffixes property exists. Change-Id: Ie593b5e03d27de4f8aafed821a3b37cc1b3b0b9e Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Fix protobuf autotestsChristian Kandeler2018-11-224-30/+18
| | | | | | | | | | Product-level probes run before module validate scripts, so we cannot use a Probe to determine whether the protobuf module was successfully set up. Change-Id: I6debc86f1b6b06c8bbdb276a7ff786828b9f9819 Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Add protobuf.cpp and protobuf.objc modulesIvan Komissarov2018-11-2212-0/+352
| | | | | | | | | | | These modules implement google protobuf support for QBS for c++ and objective-c languages [ChangeLog] Added protobuf support for C++ and Objective-C. Fixes: QBS-563 Change-Id: I4bb7e0bdfc1e09ea26c0cd3d3739a741ff834e5d Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Prevent "dynamic" values from getting assigned to command propertiesChristian Kandeler2018-10-252-7/+13
| | | | | | | | | | Values such as artifact objects are not plain data and we therefore must not attempt to make deep copies of them. Catch attempts to assign them to command properties. Fixes: QBS-1404 Change-Id: I1fa02720a3543cd8e2c734ed9437d31b5a573d57 Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
* Merge 1.12 into masterChristian Kandeler2018-10-125-7/+7
|\ | | | | | | Change-Id: I96c735aeda89e02f1fa9107ecfc10ebf4b554dbc
| * Fix autotests for Xcode 10Christian Kandeler2018-10-055-7/+7
| | | | | | | | | | Change-Id: I0d218f415eedbfc75c2cf10877646f6831f38f89 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* | Merge 1.12 into masterChristian Kandeler2018-09-041-0/+31
|\| | | | | | | Change-Id: Ia115255ae46772a83c1196fbe291ff295927ee92
| * Executor: Fix invalid assertionChristian Kandeler2018-09-031-0/+31
| | | | | | | | | | | | | | | | An artifact whose alwaysUpdated property is false does not need to exist and is therefore not required to have a valid timestamp. Change-Id: I642349c49a53e6e45d6b09d1acc87f4c9a0edae9 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
* | MSVC: Give hint about possible reason for missing import libChristian Kandeler2018-09-044-0/+41
| | | | | | | | | | | | | | | | | | | | If an import lib is unexpectedly not present, the reason is usually that no symbols are exported from the DLL. This is not obvious at all, so catch this condition and explain what is happening. Task-number: QBS-1291 Change-Id: Ia2df8e1a27e0231e855413245703ffc05221722e Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* | Filter references to importingProduct from exported list propertiesChristian Kandeler2018-09-041-1/+6
| | | | | | | | | | | | | | | | It's just a heuristic, because we don't have access to single elements of JS arrays, but it should cover the most common cases. Change-Id: I02f9ff215394d108f7ba52662eff7b4f5e8e1a62 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* | Merge 1.12 into masterChristian Kandeler2018-08-105-0/+45
|\| | | | | | | Change-Id: I20256cb4a06cab8d191e389f08d77ace82e4d6b9
| * Fix potential false caching of module prototypesChristian Kandeler2018-08-105-0/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Our code assumed that products with the same profile and the same multiplex configuration would also evaluate a module's condition to the same value, which is not true: Properties such as qbs.architecture, which are commonly checked in module conditions, can be set in a product item independently of multiplexing. We now evaluate the module condition for every product. According to our benchmarker, the slowdown is a very modest 2% and does not appear to increase for larger projects. This patch amends 08ce978733, which tried to address the same problem, but succeeded only for a subset of the possible cases. Change-Id: I992e0f0d5cf207949cf5d863f242b9476ecdfc05 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* | Merge "Merge 1.12 into master"Christian Kandeler2018-08-031-0/+27
|\ \
| * | Merge 1.12 into masterChristian Kandeler2018-08-031-0/+27
| |\| | | | | | | | | | Change-Id: I0ce6c28f9117f945c9fec0654bd06daf3d13ace0
| | * Fix false positives in artifacts map change trackingChristian Kandeler2018-07-301-0/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We used to invalidate a script if it accessed the artifacts map and that map's keys are now different from what they were. However, that logic was too coarse: All rules that run after the command will add new artifacts, so such changes will be the norm, at least when the project is built for the first time. As a result, some artifacts might get rebuilt unnecessarily on the next qbs invocation. The reason why we did it that way was that we needed to consider the case where a script iterated over the elements of an artifacts map, e.g. using a for..in loop. In such a case, we cannot know which part of the map the code is interested in and the script needs to be re-run if the keys change. This is now solved with the help of a QScriptClass, which informs us if a script enumerates the keys. In all other cases, the script only accesses well-known tags, so we only have to compare the respective artifact lists and do not care about other keys getting added or removed. Change-Id: I182a50c34ece28f7ff3f7eba7a8f246e9b79b30e Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* | | RulesApplicator: Fix possible assertion failureChristian Kandeler2018-08-031-0/+42
|/ / | | | | | | | | | | | | | | | | | | | | The RuleNode class disconnects removed input artifacts, which could break an assertion in the RulesApplicator in the case that a rule that can provide different tags to the same artifact switches back and forth between these tags. Fix this by re-establishing the connection between output artifact and parent rule node if necessary. Change-Id: I8d50190cba782ffe63d3a73b3d5400d95c99ea0e Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* | Extend TestBlackbox::addFileTagToGeneratedArtifactChristian Kandeler2018-07-181-0/+2
| | | | | | | | | | | | | | | | Verify also that the final output artifact disappears if we cut the connection between the rules. Change-Id: I31df34136e8b6305578e004abe06cd4a53f7dee5 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* | RulesApplicator: Fix assertionChristian Kandeler2018-07-181-0/+40
| | | | | | | | | | | | | | | | | | | | | | There can be input artifacts that are produced by a rule that is not connected to the current rule. This happens if at least one of the outputs of the rule that produces the input matches the excluded inputs of the current rule, in which case there is no connection between the rules. Change-Id: If51344e95e971ae89745ce7c20c2623774af42ae Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* | Fix change tracking edge case for when no outputs get createdChristian Kandeler2018-07-171-3/+39
| | | | | | | | | | | | | | | | | | | | | | Our change tracking information is stored per transformer. However, if Rule.outputArtifacts returns an empty array, then no transformer gets created. For this case, we need to "manually" force re-application of the rule if properties of the input artifact have changed, in case they've been accessed in the outputArtifacts script. Change-Id: I0f2b8a9834f5268a282c775a945e240d3d1d9763 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* | Make Artifact::setFileTags() a little smarterChristian Kandeler2018-07-161-0/+16
| | | | | | | | | | | | | | | | There's no general need for wholesale removal from the artifacts map, followed by (re-)adding. Instead, do just what is necessary. Change-Id: I5d4aa3c456d91bde94a8c77fb85f4e28ad5742d0 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* | RuleNode: Fix calculation of changed inputsChristian Kandeler2018-07-162-0/+58
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The old code had a number of problems: - It partially overlapped with the calculation of compatible inputs. - It was wrong in that it failed to consider inputs from dependencies. - It was wrong in that it assumed that after rule application, input artifacts always have parent artifacts to later compare timestamps with. This is not the case for e.g. a generated cpp file without a Q_OBJECT macro on which moc is run: No transformer is created in such a case, because the outputArtifacts array is empty. The last problem was glossed over by the fact that we held a global list of "changed source artifacts" in the executor, so such changes were spotted when they happened in source artifacts. However, that code was also rather dubious in itself because the criterion for "changed" was that the timestamp was newer than it was on the last run of the executor, so I don't think it was completely safe when doing partial builds. We solve these problems by remembering when we last applied the rule. An input artifact is considered "changed" if it has been modified after that. Change-Id: Ib1bafd9e1078122776626155c4f2cc11ad622191 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* | Report an error on unexpected output tagsChristian Kandeler2018-07-131-0/+35
| | | | | | | | | | | | | | | | | | | | The artifacts a dynamic rule produces need to be consistent with what it declares in its outputFileTags property. Somewhat suprisingly, such a check was missing so far, so we managed to make such mistakes in our very own modules. These are also fixed here. Change-Id: I9052a8c4b0423e8fd146c9fc67bf5c3ce752c638 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* | Track direct accesses to an artifact's fileTags propertyChristian Kandeler2018-07-102-0/+28
| | | | | | | | | | | | | | | | | | | | There are rules that access e.g. input.fileTags to look at file tags that are not the rules' declared tags. Such accesses were not tracked, so we did not re-run the respective prepare script or command when the tags changed. Change-Id: I7615c0c058ce42fb85963c8f481c18331c29ada7 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* | Merge "Merge 1.12 into master"Christian Kandeler2018-07-062-2/+8
|\ \
| * | Merge 1.12 into masterChristian Kandeler2018-07-062-2/+8
| |\| | | | | | | | | | Change-Id: I616949b321c26699ada0f2ae81b20a88db40b610