aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qml/debugger/qqmldebugjs
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote-tracking branch 'origin/5.12' into devQt Forward Merge Bot2018-12-121-8/+8
|\ | | | | | | | | | | | | Conflicts: tests/auto/qml/debugger/qqmldebugjs/tst_qqmldebugjs.cpp Change-Id: Ic1dace832ad4b29023d24808b8617b5dcc915eb5
| * Fix compilation with gcc 4.8Ville Voutilainen2018-12-031-8/+8
| | | | | | | | | | | | | | GCC 4.8 doesn't like using QPointers in signal connections. Change-Id: Ide55318374183e52eaf09176a118f7d22b7cfd6e Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | QmlDebug: Add QQmlEngineDebugClientUlf Hermann2018-10-242-3/+2
| | | | | | | | | | | | | | | | | | We use it in 3 tests already, and we may want to use it in other applications, too. Task-number: QTBUG-66504 Change-Id: Id73b6ccf49a701fbbc79ee3fe1ac638a70c4c939 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | QmlDebug: Add V4 debug client from tst_qqmldebugjs.cppUlf Hermann2018-10-232-784/+116
|/ | | | | | | | | | | This is useful for implementing additional V4 debug clients. Along the way, we also drop the dependency on QML by using the JSON API from QtCore for JSON manipulation. Task-number: QTBUG-66504 Change-Id: Ib51e8e97b030a49fe8185ad5354d1cca63efef4a Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* QML Tooling: Prevent property capture while collecting dataUlf Hermann2018-10-101-1/+1
| | | | | | | | | We don't want additional connections to be formed as result of reporting data to the debugger. Task-number: QTBUG-70989 Change-Id: I78b038a159addac43a8661e402a70e5b14fb222b Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* QML Tooling: Don't read properties in order to count themUlf Hermann2018-10-103-1/+90
| | | | | | | | | Reading properties may have side effects and we don't actually need the values here. Task-number: QTBUG-70989 Change-Id: If9f43f3c6a390ebd0ab1d1375fd021189adb10f7 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Avoid potential race condition in qqmldebugjs testUlf Hermann2018-07-201-5/+13
| | | | | | | | The stopped() signal could arrive while we are waiting for the result() signal. Change-Id: I6dcc66aaf0b05221d7ad78572c483a506366e2bb Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* V4 Debugger: Add command to change break pointsUlf Hermann2018-07-191-2/+127
| | | | | | | | | | | The function to do so has been around for a long time. Finally expose the functionality to the client. It doesn't make much sense to allow the client to set the initial enabled/disabled state, but not to change it later. Task-number: QTCREATORBUG-20795 Change-Id: Ie2cb01ca3ca5578b6bc85650d7ee38d0aad9bbab Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* V4 Debuger: Drop namesAsObjects optionUlf Hermann2018-07-181-57/+29
| | | | | | | | There is no client that uses this anymore, and dropping it allows us to eliminate a lot of code. Change-Id: I6b09669c9dd7fcf9c2d249f133bfbb78d2b6f7f4 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* V4 debugger: Drop redundantRefs optionUlf Hermann2018-07-181-65/+39
| | | | | | | | No client is using this anymore and we can eliminate a lot of code this way. Change-Id: I454581928fe88e59cd28738c4f7fddd060999181 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-07-161-44/+51
|\ | | | | | | | | | | | | | | Conflicts: src/quick/items/qquickloader.cpp tests/auto/quick/qquickanimations/tst_qquickanimations.cpp Change-Id: I0cb9f637d24ccd0ecfb50c455cc210119f744b02
| * Tooling: Increase timeouts in qqmldebugjs test by a factor of 6Ulf Hermann2018-07-121-44/+51
| | | | | | | | | | | | | | | | | | The CI is slow. It takes up to a minute to start a process, and therefore I'm not surprised the resulting process won't hit a break point within 5s. Let's hope 30s is enough. Change-Id: Idd5b8ad517a866ad577693e3279a4ded031d4eb6 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | QML Profiler: Test that only one Complete message is sent per sessionUlf Hermann2018-07-1018-85/+26
| | | | | | | | | | | | Task-number: QTBUG-65767 Change-Id: I0485092f9a36da73e9e86ef8216be736b6560ec1 Reviewed-by: Michael Brasser <michael.brasser@live.com>
* | Merge remote-tracking branch 'origin/5.11' into devLars Knoll2018-05-243-1/+88
|\| | | | | | | Change-Id: I0127f2c16de1d930bdd8cbccd42ec6785f31ab96
| * V4 debugger: Allow retrieval of non-CallContext scopesUlf Hermann2018-05-233-1/+88
| | | | | | | | | | | | | | | | | | | | | | | | | | | | We need to encode the scope type properly and we need to return something from the "scope" command. Previously the client didn't even get notified about QML contexts and couldn't actually retrieve anything but call context. The other scope types are not terribly interesting right now, but at least for the global context it should be possible to provide more data in the future. Task-number: QTBUG-68218 Change-Id: I88d3dbc15a93f19b00f6f12365e4fb64ec78862e Reviewed-by: hjk <hjk@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | QQmlDebugClient: Make stateChanged a signalUlf Hermann2018-03-201-2/+4
|/ | | | | | | | | | | This way we can observe it from the outside and drop all the code that genrated extra signals from the virtual method. Also drop the unused QQmlDebugTestService::stateHasChanged signal to reduce the confusion. Change-Id: Ia37c1eaf8b392e594b0931694f43f84fe09b000c Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Fix evaluation of V4 debug jobsUlf Hermann2017-11-071-13/+6
| | | | | | | | There may not be a current stack frame and there may not be a function in either the current frame or the global scope. Change-Id: I15daf10586cf8895a9a80ccc3dd4bf4117a947c5 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* V4 Debugger: Allow executing jobs on contexts without v4FunctionUlf Hermann2017-11-071-1/+0
| | | | | | | | | Previously this would crash as it tried to determine strict mode by querying the function. Check the functions of out contexts, too, and finally try the global context if none is found. Change-Id: Ib21c2f4f242a67909944b71640a154ff181c33e1 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Codegen: Set source location for return instructionUlf Hermann2017-11-061-1/+0
| | | | | | | | We need that in order to be able to break on the closing brace of a function. Change-Id: I4049f0553b01442025bda32c34fac6ce3d77246d Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Re-enable Debug instructions and locations for QML functionsUlf Hermann2017-11-061-26/+13
| | | | | | | | | | | | | | | | | | | | | | Debug instructions are used to trigger break points and are added for every source line. We also need to insert Debug instructions before Ret, so that we can step out. We also need to assign line numbers to the entry and return points of "abbreviated" QML functions (by simulating lbrace and rbrace) so that we can set break points on them. The line numbers on Ret need to be negative, so that you cannot (accidentally) set break points on them. A typical signal handler or binding in QML consists of only one line and if you set a break point on that line, you want it to hit only once, when entering the function. If the line numbers on Ret were positive, it would be hit again on exit. Some of the tests in tst_qqmldebugjs implicitly check for that. Also the new interpreter does something on the left brace, so a function actually starts there, not on the first statement. Change-Id: Id9dfb20e35696b420d0950deab988f7cc5197bfc Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Re-enable tests/auto/qml/debuggerUlf Hermann2017-10-241-0/+19
| | | | | | | | Enable the tests, make them compile, and QSKIP the ones that don't work for now. Change-Id: Iaa175a8160b219be4054e8b9f7a3edff90f56505 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* Move QQmlDebugProcess into its own header and source filesUlf Hermann2017-09-061-0/+1
| | | | | | | This way we can easily extract it and test it separately. Change-Id: I05e78ac705a5b52ee978947f3e0aed596e0a03a0 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Merge remote-tracking branch 'origin/5.9' into devSimon Hausmann2017-08-231-2/+0
|\ | | | | | | | | | | | | Conflicts: tests/auto/qml/debugger/qqmlenginedebuginspectorintegrationtest/tst_qqmlenginedebuginspectorintegration.cpp Change-Id: I31375151eb239f348bec988d2d0506c2b4d9604c
| * Make sure QQmlDebugProcess correctly reports session as startedUlf Hermann2017-08-171-2/+0
| | | | | | | | | | | | | | | | | | | | | | If the "Waiting" output appears before we wait, the event loop could run forever. Also, the timeout of 5s was too low. We increase it to 15s. Remove the blacklists and other workarounds in turn. Task-number: QTQAINFRA-1334 Change-Id: Ib1032a8e57ab8dada3e56163ebab1523a7357aeb Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Tests: Unify debugger tests' connection mechanismsUlf Hermann2017-08-181-319/+221
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | All the tests do pretty much the same thing in their init() or connect() methods: Create a process, create a debug connection, create some clients and make sure they're all running. We can deduplicate the code by moving all this into a common base class. Furthermore, the QSKIP in the qqmlenginedebuginspectorintegration test was obviously done because the BLACKLIST mechanism doesn't cover failures from internally called methods. As we don't have that problem anymore now, we can use BLACKLIST instead. Change-Id: I6d45d3b4e9645558ecc783a81fd740b00235cdc1 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Move QQmlDebugJs test init failures to outer functionUlf Hermann2017-08-171-93/+69
| | | | | | | | | | | | | | | | | | Apparently the blacklisting doesn't catch tests failures outside the test function and using QTest::currentTestFailed() to handle that after the fact is ugly. Change-Id: I101abd3e8e467a5ca258a6019542251d26235139 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Tests: Clean up inclusion of util.pri and debugutil.priUlf Hermann2017-08-171-2/+0
| | | | | | | | | | | | | | | | | | | | | | When we include debugutil.pri, we always want util.pri, too. We can as well nest the inclusions. Also, setting the include path is much easier from within the .pri files than from outside. Change-Id: I1205bdc3051e16e635d4ea9626f44e51002ddb50 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Ignore qqmldebugjs/profilerservice failures in win/gccSimon Hausmann2017-08-021-0/+54
|/ | | | | | | | | Amends 80e03bbd9a42401d50af450aff5351c3a0c95444 for dev, adapting to tests in dev. Task-number: Task-number: QTQAINFRA-1334 Change-Id: I1aede768f40f42bfc2af7caf342f7cf2d06c523a Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
* Ignore debugger failures with GCC on WindowsSimon Hausmann2017-07-281-0/+2
| | | | | | | | | | | | | | | Capturing the output of the started process mysteriously fails on Windows with gcc. While the nested event loop is run, the readyRead() signal is never emitted. Only after the timer fired and the event loop is terminated, we receive the output we were expecting. Some tests needed adapting to the initializing sub-function failing in QVERIFY/QCOMPARE calls, in order for the process to not crash and the blacklisting to work. Task-number: QTQAINFRA-1334 Change-Id: I4804d94580e7db65595137d19d7b75d75c243257 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
* QV4DebugService: Reduce unnecessary recursion and redundancyUlf Hermann2017-03-141-29/+89
| | | | | | | | | | | | | | | | | | | | | | | | | | | Large parts of the protocol are unnecessary. There is no reason to send a separate chunk of "handles" with almost every reply. The refs are given as part of the regular data and if the client wants to find out more, it can do further lookups. Also, it makes no sense to encode the function and script names as objects, as they are in fact not JavaScript objects. Unfortunately these cleanups require some cooperation from the client. Older clients will misbehave if we just drop the redundancy. Therefore, we introduce parameters which the client can explicitly set with the "connect" message. redundantRefs tells the service if redundant references are required, namesAsObjects tells it if script and function names have to be sent as objects/ Once we can require clients that support these options, we can drop the code that generates redundant data. Also, fix tst_qv4debugger::evaluateExpression() to actually check all the expressions evaluated, not only the first and second one. Task-number: QTBUG-42435 Change-Id: If93d2a2b9d0b8035f85dbef871bc1b03f199171d Reviewed-by: hjk <hjk@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* V4 Debugger: Add an option to pass additional context for evaluateUlf Hermann2016-12-092-3/+66
| | | | | | | | | | | Interpret the "context" option as an ID for a QObject whose QML context is then injected when evaluating the expression. The QObject needs to be tracked by some other debug service for this to work, e.g. the QML debugger or the inspector. Task-number: QTCREATORBUG-17177 Change-Id: I6a9e8b9ae23e8bb67ed1905a2ef73f7c4faeb990 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Remove Windows CE.Friedemann Kleint2016-03-101-5/+0
| | | | | | | | Remove #ifdef sections for Q_OS_WINCE and wince .pro file clauses. Task-number: QTBUG-51673 Change-Id: I33ab74f0c2ce9086c3610c5fa727f281197b6b55 Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
* Updated license headersJani Heikkinen2016-01-2014-238/+168
| | | | | | | | | | | | From Qt 5.7 -> tools & applications are lisenced under GPL v3 with some exceptions, see http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/ Updated license headers to use new GPL-EXCEPT header instead of LGPL21 one (in those files which will be under GPL 3 with exceptions) Change-Id: I04760a0801837cfc516d1c7c02d4f503f6bb70b6 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* Fixed qtdeclarative tests to pass with updated license headerJani Heikkinen2016-01-201-26/+26
| | | | | Change-Id: I3c826a7b3ee9ff66fac89a7a3d6f0e7057f03eed Reviewed-by: Antti Kokko <antti.kokko@theqtcompany.com>
* V4 Debugger: Clean up testsUlf Hermann2016-01-111-170/+78
| | | | | | | | | | | | Now that we can evaluate expressions without pausing, we might as well test for that. The race conditions should also be resolved by now. Clarify the reason why the break-on-attach test cannot work (so that whoever tries to fix it the next time doesn't have to figure it out for the (n+1)th time) and remove some dead code. Change-Id: Ib1aab03d40779c6876db914b852f05061a2be046 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* Support multiple QML engines in V4 debuggerUlf Hermann2015-12-0217-53/+183
| | | | | | | | | | | | | | | | | | | | Whenever the debugger is paused, there is exactly one engine that caused the debuggerPaused() slot to be called. We can only interact with that engine in any meaningful way. Of course you can shoot yourself in the foot with this tool. You can, for example, set a breakpoint that will be hit by multiple engines and then get confused about which engine just hit the breakpoint. Similar things are also possible with other kinds of debuggers, though. If this becomes a problem we can add an engine ID to the responses. Also, this does not fix the other debug services. So you might still not see the "correct" locals and expressions from the QQmlEngineDebugService while the debugger is not paused. Task-number: QTBUG-49615 Change-Id: Ie044f0aedb51481c4cf851635d7c12839251cbd0 Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
* QmlDebug: Change "macx" to "osx" in tests' .pro filesUlf Hermann2015-11-171-1/+1
| | | | | | | | "macx" is deprecated. Change-Id: Iefdd1aab8a221e39f0651368fd132a842210f58a Reviewed-by: hjk <hjk@theqtcompany.com> Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* QmlDebug: Restructure QPacket and QPacketProtocolUlf Hermann2015-11-171-8/+6
| | | | | | | | | | | | | | | | | | | | | | We cannot use the same data stream version for the client and server versions of QPacket and QPacketProtocol should not deal with QPackets but with simple byte arrays because the underlying QDataStream is hard to copy. The new QQmlDebugPacket picks its data stream version from QQmlDebugConnector now, which adjusts it when connecting. As there can only ever be one QQmlDebugConnector, we can keep the version static. The clients need to query the connection for the correct version. We may connect to several different servers sequentially or we may have a server running while using a client, and we don't want to confuse the versions between those. With this in place, all remaining occurrences of QDataStream are replaced with QPacket or QQmlDebugPacket. Change-Id: I3f6ba73fcbfad5e8df917c5feb9308116738a614 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* Move QQmlDebugClient into separate static libraryUlf Hermann2015-10-301-11/+13
| | | | | Change-Id: Ib3daf9da2cf6798bd022cfcf54d11e565c9cb4ca Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* Properly test services arguments for QQmlDebugServerUlf Hermann2015-10-151-0/+6
| | | | | | | | | So far we have only tested that each service is still functional when the services:<service> argument is given on the command line. This test checks that services which aren't specified are indeed not loaded. Change-Id: Ica935da0337b2215898f65cf283d6e11365432a8 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* Remove QT_DISABLE_DEPRECATED_BEFORE=0 from tests not using deprecated API.Friedemann Kleint2015-09-031-1/+0
| | | | | Change-Id: I691b8ddff60b5f16f06d32b379c76e87f44f84a9 Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
* Allow specification of loadable debug services via command lineUlf Hermann2015-08-131-43/+53
| | | | | | | | | We don't want to load the debugger when profiling and vice versa. This makes it easier to prevent unwanted services from getting loaded. Task-number: QTBUG-47623 Change-Id: I28893b6218110274a6d30b27805d89dbb443add3 Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
* Merge remote-tracking branch 'origin/5.4' into 5.5Liang Qi2015-04-161-1/+1
|\ | | | | | | | | | | | | | | Conflicts: tests/auto/qml/debugger/qv4profilerservice/qv4profilerservice.pro tests/auto/qml/debugger/qqmldebuggingenabler/qqmldebuggingenabler.pro Change-Id: I76d87e3df97ebdba902ca3d7488c1582eca2a83c
| * Use qt_subtract_from_timeout instead of duplicating qt_timeout_valueDaniel Teske2015-04-141-1/+1
| | | | | | | | | | | | | | | | The same function was duplicated 5 times in qtbase, so create one copy to rule them all and use it also in QtDeclarative. Change-Id: I4e39a7ee0541ce4fe9710cea344e537ee011bbe9 Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
* | Tests: Make qqmldebugjs significant againCaroline Chao2015-04-081-2/+0
| | | | | | | | | | | | | | | | The test is now passing in CI. Change-Id: I9414e05d40fe373878afa43121fcfa7cf95fcbdf Task-number: QTBUG-28263 Reviewed-by: Ulf Hermann <ulf.hermann@theqtcompany.com>
* | Update copyright headersJani Heikkinen2015-02-1213-91/+91
|/ | | | | | | | | Qt copyrights are now in The Qt Company, so we could update the source code headers accordingly. In the same go we should also fix the links to point to qt.io. Change-Id: I61120571787870c0ed17066afb31779b1e6e30e9 Reviewed-by: Iikka Eklund <iikka.eklund@theqtcompany.com>
* Update license headers and add new licensesJani Heikkinen2014-08-2513-271/+167
| | | | | | | | | - Renamed LICENSE.LGPL to LICENSE.LGPLv21 - Added LICENSE.LGPLv3 & LICENSE.GPLv2 - Removed LICENSE.GPL Change-Id: I84a565e2e0caa3b76bf291a7d188a57a4b00e1b0 Reviewed-by: Jani Heikkinen <jani.heikkinen@digia.com>
* Add support for conditional breakpoints and evaluate.Erik Verbruggen2014-08-081-19/+17
| | | | | | | | | | | | Also centralized the context state saver and added line number saving, so that the JS jobs for evaluation of breakpoint conditions don't change the state of the current engine context. Task-number: QTBUG-37119 Task-number: QTCREATORBUG-11516 Change-Id: Ia21b3d64e239e5b67f3c07e1c006d8e6748f29b6 Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com> Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Set breakpoints before connect() in JS debugging unit testUlf Hermann2014-02-041-29/+14
| | | | | | | | | | | | | connect() starts the JS engine. Any break point set after that may be missed because the engine has already passed its location when the breakpoint request arrives. The problem can easily be visualized by inserting an artificial delay (e.g. sleep(1)) between connect() and setBreakpoint(). I'm also removing a piece of dead code that gets that wrong and has never actually worked. Change-Id: Ie4410ac3eaf89f02993c653b17148c14048652ab Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* V4 debugging: Fix instable test.Erik Verbruggen2013-11-141-2/+2
| | | | | | | | | Request the scripts after hitting a breakpoint. The reason this test could fail before, is that the engine might be calling into the debugger even before any script was loaded. Change-Id: Iba49f445ab97afaf2bb168b04063432ca2f9dddd Reviewed-by: Lars Knoll <lars.knoll@digia.com>