SquishTests: Improve tst_memberoperator

- Update expected behavior
- Update to ClangCodeModel replacing "." with "->"
  only after selecting a completion
- Update to ClangCodeModel no longer announcing
  needed substitution in proposal widget
- Added test for unchanged lines
- Stabilize by using proper wait conditions
- Fix surplus warning

Change-Id: Ia90e0102d44fbd8abb41acaa83509657ad11bf4d
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
Robert Loehning
2022-11-03 15:46:41 +01:00
committed by Christian Stenger
parent b36cc91acb
commit b85183d966
2 changed files with 32 additions and 18 deletions

View File

@@ -16,7 +16,22 @@ def __getGenericProposalListView__(timeout):
def __verifyLineUnderCursor__(cppwindow, record):
found = str(lineUnderCursor(cppwindow)).strip()
exp = testData.field(record, "expected")
test.compare(found, exp)
test.verify(found.startswith(exp),
"Completed line '%s' should start with '%s'" % (found, exp))
def __noBuildIssues__():
return len(getBuildIssues()) == 0
def __syntaxErrorDetected__():
buildIssues = getBuildIssues()
for issue in buildIssues:
if issue[3] in ["Expected ';' after expression (fix available)",
"Expected ';' at end of declaration (fix available)",
"Use of undeclared identifier 'syntaxError'"]:
return True
return False
def main():
@@ -38,7 +53,13 @@ def main():
placeCursorToLine(cppwindow, "return a.exec();")
typeLines(cppwindow, ("<Up>", testData.field(record, "declaration")))
type(cppwindow, testData.field(record, "usage"))
snooze(1) # maybe find something better
if useClang:
if not waitFor(__syntaxErrorDetected__, 5000):
test.warning("Waiting for code model to find a syntax error timed out",
"If the code model's messages didn't change, "
"consider raising the timeout.")
else:
snooze(1)
type(cppwindow, testData.field(record, "operator"))
genericProposalWidget = __getGenericProposalListView__(1500)
# the clang code model does not change the . to -> before applying a proposal
@@ -49,22 +70,11 @@ def main():
'Verifying whether proposal widget is displayed as expected.')
if genericProposalWidget is not None:
model = genericProposalWidget.model()
proposalToolTips = dumpItems(model, role=WhatsThisRole)
needCorrection = filter(lambda x: 'Requires changing "." to "->"' in x,
proposalToolTips)
correction = testData.field(record, "correction")
if correction == 'all':
if correction in ['all', 'none']:
type(genericProposalWidget, "<Return>")
__verifyLineUnderCursor__(cppwindow, record)
test.compare(len(needCorrection), 0,
"Verifying whether operator has been already corrected.")
elif correction == 'mixed':
test.verify(len(proposalToolTips) > len(needCorrection) > 0,
"Verifying whether some of the proposals need correction.")
elif correction == 'none':
test.verify(len(needCorrection) == 0,
"Verifying whether no proposal needs a correction.")
else:
elif correction != 'mixed' and expectProposal:
test.warning("Used tsv file seems to be broken - found '%s' in "
"correction column." % correction)
elif not expectProposal:
@@ -73,5 +83,9 @@ def main():
__verifyLineUnderCursor__(cppwindow, record)
invokeMenuItem("File", 'Revert "main.cpp" to Saved')
clickButton(waitForObject(":Revert to Saved.Proceed_QPushButton"))
if useClang and not waitFor(__noBuildIssues__, 5000):
test.warning("Waiting for code model timed out",
"If there is no new issue detected in the code, "
"consider raising the timeout.")
invokeMenuItem("File", "Exit")
waitForCleanShutdown()

View File

@@ -9,13 +9,13 @@
"" "QCoreApplication &ref = a;" "ref" "." "ref." "True" "none"
"<QPointer>" "QPointer<QCoreApplication> p;" "p" "." "p." "True" "mixed"
"<QPointer>" "QPointer<QCoreApplication> *poi;" "poi" "." "poi->" "True" "all"
"<QPointer>" "QPointer<QCoreApplication> &poi;" "poi" "." "poi." "False" ""
"<QPointer>" "QPointer<QCoreApplication> &poi;" "poi" "." "poi." "True" "mixed"
"<QPointer>" "QPointer<QCoreApplication> pa; QPointer<QCoreApplication> &poi = pa;" "poi" "." "poi." "True" "mixed"
"<QPointer>" "QPointer<QCoreApplication> poi[5];" "poi[2]" "." "poi[2]." "True" "mixed"
"<QPointer>" "QPointer<QCoreApplication> *poi[5];" "poi[2]" "." "poi[2]->" "True" "all"
"<memory>" "std::auto_ptr<QCoreApplication> sap;" "sap" "." "sap." "True" "mixed"
"<memory>" "std::auto_ptr<QCoreApplication> *sap;" "sap" "." "sap->" "True" "all"
"<memory>" "std::auto_ptr<QCoreApplication> &sap;" "sap" "." "sap." "False" ""
"<memory>" "std::auto_ptr<QCoreApplication> &sap;" "sap" "." "sap." "True" "mixed"
"<memory>" "std::auto_ptr<QCoreApplication> sapqa; std::auto_ptr<QCoreApplication> &sap = sapqa;" "sap" "." "sap." "True" "mixed"
"<memory>" "std::auto_ptr<QCoreApplication> sap[10];" "sap[2]" "." "sap[2]." "True" "mixed"
"<memory>" "std::auto_ptr<QCoreApplication> *sap[10];" "sap[2]" "." "sap[2]->" "True" "all"
1 include declaration usage operator expected clangProposal correction
9 QCoreApplication &ref = a; ref . ref. True none
10 <QPointer> QPointer<QCoreApplication> p; p . p. True mixed
11 <QPointer> QPointer<QCoreApplication> *poi; poi . poi-> True all
12 <QPointer> QPointer<QCoreApplication> &poi; poi . poi. False True mixed
13 <QPointer> QPointer<QCoreApplication> pa; QPointer<QCoreApplication> &poi = pa; poi . poi. True mixed
14 <QPointer> QPointer<QCoreApplication> poi[5]; poi[2] . poi[2]. True mixed
15 <QPointer> QPointer<QCoreApplication> *poi[5]; poi[2] . poi[2]-> True all
16 <memory> std::auto_ptr<QCoreApplication> sap; sap . sap. True mixed
17 <memory> std::auto_ptr<QCoreApplication> *sap; sap . sap-> True all
18 <memory> std::auto_ptr<QCoreApplication> &sap; sap . sap. False True mixed
19 <memory> std::auto_ptr<QCoreApplication> sapqa; std::auto_ptr<QCoreApplication> &sap = sapqa; sap . sap. True mixed
20 <memory> std::auto_ptr<QCoreApplication> sap[10]; sap[2] . sap[2]. True mixed
21 <memory> std::auto_ptr<QCoreApplication> *sap[10]; sap[2] . sap[2]-> True all