aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorSami Shalayel <sami.shalayel@qt.io>2024-04-05 11:04:22 +0200
committerUlf Hermann <ulf.hermann@qt.io>2024-04-29 09:21:21 +0200
commit1635ca51f018bbb8d1ea5069a7f2ed8503be8cb9 (patch)
tree8181636d38c791b85a31ce7f8a873348d13f261b /tests
parent4861a1b65a6f3b41acde109caca6024bb89da6af (diff)
qmlls: adapt the qtlanguageserver changes in WorkspaceEdit
Adapt to the changes in WorkspaceEdit that makes the handling of the documentChanges variant easier in the tests. Task-number: QTBUG-114993 Change-Id: Ic092d8faccbe3fb32e81e8b08d5ecef22bad908a Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/qmlls/modules/tst_qmlls_modules.cpp120
-rw-r--r--tests/auto/qmlls/modules/tst_qmlls_modules.h2
-rw-r--r--tests/auto/qmlls/qmlls/tst_qmlls.cpp8
3 files changed, 61 insertions, 69 deletions
diff --git a/tests/auto/qmlls/modules/tst_qmlls_modules.cpp b/tests/auto/qmlls/modules/tst_qmlls_modules.cpp
index 764a8f65cd..9145bb7566 100644
--- a/tests/auto/qmlls/modules/tst_qmlls_modules.cpp
+++ b/tests/auto/qmlls/modules/tst_qmlls_modules.cpp
@@ -874,7 +874,7 @@ void tst_qmlls_modules::renameUsages_data()
// TODO: create workspace edit for the tests
QLspSpecification::WorkspaceEdit sumRenames{
std::nullopt, // TODO
- QList<TextDocumentEdit>{
+ QList<QLspSpecification::WorkspaceEdit::DocumentChange>{
TextDocumentEdit{
OptionalVersionedTextDocumentIdentifier{ { jsIdentifierUsagesUri } },
{
@@ -907,6 +907,38 @@ void tst_qmlls_modules::renameUsages_data()
};
}
+void tst_qmlls_modules::compareQTextDocumentEdit(const TextDocumentEdit &a,
+ const TextDocumentEdit &b)
+{
+
+ QCOMPARE(a.textDocument.uri, b.textDocument.uri);
+ QVERIFY(a.textDocument.uri.startsWith("file://"));
+ QCOMPARE(a.textDocument.version, b.textDocument.version);
+ QCOMPARE(a.edits.size(), b.edits.size());
+
+ for (qsizetype j = 0; j < a.edits.size(); ++j) {
+ std::visit(
+ [](auto &&textEdit, auto &&expectedTextEdit) {
+ using U = std::decay_t<decltype(textEdit)>;
+ using V = std::decay_t<decltype(expectedTextEdit)>;
+
+ if constexpr (std::conjunction_v<std::is_same<U, V>,
+ std::is_same<U, TextEdit>>) {
+ QCOMPARE(textEdit.range.start.line, expectedTextEdit.range.start.line);
+ QCOMPARE(textEdit.range.start.character,
+ expectedTextEdit.range.start.character);
+ QCOMPARE(textEdit.range.end.line, expectedTextEdit.range.end.line);
+ QCOMPARE(textEdit.range.end.character,
+ expectedTextEdit.range.end.character);
+ QCOMPARE(textEdit.newText, expectedTextEdit.newText);
+ } else {
+ QFAIL("Comparison not implemented");
+ }
+ },
+ a.edits[j], b.edits[j]);
+ }
+}
+
void tst_qmlls_modules::renameUsages()
{
QFETCH(QString, filePath);
@@ -944,66 +976,24 @@ void tst_qmlls_modules::renameUsages()
QCOMPARE(result->documentChanges.has_value(),
expectedEdit.documentChanges.has_value());
- std::visit(
- [&expectedError](auto &&documentChanges, auto &&expectedDocumentChanges) {
- if (!expectedError.message.isEmpty())
- QVERIFY2(false, "No expected error was thrown.");
-
- QCOMPARE(documentChanges.size(), expectedDocumentChanges.size());
- using U = std::decay_t<decltype(documentChanges)>;
- using V = std::decay_t<decltype(expectedDocumentChanges)>;
-
- if constexpr (std::conjunction_v<
- std::is_same<U, V>,
- std::is_same<U, QList<TextDocumentEdit>>>) {
- for (qsizetype i = 0; i < expectedDocumentChanges.size(); ++i) {
- QCOMPARE(documentChanges[i].textDocument.uri,
- expectedDocumentChanges[i].textDocument.uri);
- QVERIFY(documentChanges[i].textDocument.uri.startsWith(
- "file://"));
- QCOMPARE(documentChanges[i].textDocument.version,
- expectedDocumentChanges[i].textDocument.version);
- QCOMPARE(documentChanges[i].edits.size(),
- expectedDocumentChanges[i].edits.size());
-
- for (qsizetype j = 0; j < documentChanges[i].edits.size();
- ++j) {
- std::visit(
- [](auto &&textEdit, auto &&expectedTextEdit) {
- using U = std::decay_t<decltype(textEdit)>;
- using V = std::decay_t<
- decltype(expectedTextEdit)>;
-
- if constexpr (std::conjunction_v<
- std::is_same<U, V>,
- std::is_same<U,
- TextEdit>>) {
- QCOMPARE(textEdit.range.start.line,
- expectedTextEdit.range.start.line);
- QCOMPARE(textEdit.range.start.character,
- expectedTextEdit.range.start
- .character);
- QCOMPARE(textEdit.range.end.line,
- expectedTextEdit.range.end.line);
- QCOMPARE(textEdit.range.end.character,
- expectedTextEdit.range.end
- .character);
- QCOMPARE(textEdit.newText,
- expectedTextEdit.newText);
- } else {
- QFAIL("Comparison not implemented");
- }
- },
- documentChanges[i].edits[j],
- expectedDocumentChanges[i].edits[j]);
- }
- }
+ auto &documentChanges = *result->documentChanges;
+ auto &expectedDocumentChanges = *expectedEdit.documentChanges;
- } else {
- QFAIL("Comparison not implemented");
- }
- },
- result->documentChanges.value(), expectedEdit.documentChanges.value());
+ if (!expectedError.message.isEmpty())
+ QVERIFY2(false, "No expected error was thrown.");
+
+ QCOMPARE(documentChanges.size(), expectedDocumentChanges.size());
+
+ for (qsizetype i = 0; i < expectedDocumentChanges.size(); ++i) {
+ QCOMPARE(documentChanges[i].index(), expectedDocumentChanges[i].index());
+ if (std::holds_alternative<TextDocumentEdit>(documentChanges[i])) {
+ compareQTextDocumentEdit(
+ std::get<TextDocumentEdit>(documentChanges[i]),
+ std::get<TextDocumentEdit>(expectedDocumentChanges[i]));
+ } else {
+ QFAIL("TODO: implement me!");
+ }
+ }
},
[clean, &expectedError](const ResponseError &err) {
QScopeGuard cleanup(clean);
@@ -1487,12 +1477,12 @@ void tst_qmlls_modules::quickFixes()
QVERIFY(codeAction.edit);
QVERIFY(codeAction.edit->documentChanges);
- QVERIFY(std::holds_alternative<QList<TextDocumentEdit>>(*codeAction.edit->documentChanges));
- auto edits = std::get<QList<TextDocumentEdit>>(*codeAction.edit->documentChanges);
+ const auto &edits = *codeAction.edit->documentChanges;
QCOMPARE(edits.size(), 1);
- QCOMPARE(edits.front().edits.size(), 1);
- QVERIFY(std::holds_alternative<TextEdit>(edits.front().edits.front()));
- auto textEdit = std::get<TextEdit>(edits.front().edits.front());
+ const auto& firstEdit = std::get<TextDocumentEdit>(edits.front());
+ QCOMPARE(firstEdit.edits.size(), 1);
+ QVERIFY(std::holds_alternative<TextEdit>(firstEdit.edits.front()));
+ auto textEdit = std::get<TextEdit>(firstEdit.edits.front());
// make sure that the quick fix does something
QCOMPARE(textEdit.newText, replacementText);
diff --git a/tests/auto/qmlls/modules/tst_qmlls_modules.h b/tests/auto/qmlls/modules/tst_qmlls_modules.h
index 352af1d928..d48bc99407 100644
--- a/tests/auto/qmlls/modules/tst_qmlls_modules.h
+++ b/tests/auto/qmlls/modules/tst_qmlls_modules.h
@@ -37,6 +37,8 @@ public:
std::optional<QByteArray> openFile(const QString &uri);
std::optional<QByteArray> openFileFromAbsolutePath(const QString &uri);
void ignoreDiagnostics();
+ void compareQTextDocumentEdit(const QLspSpecification::TextDocumentEdit &a,
+ const QLspSpecification::TextDocumentEdit &b);
private slots:
void init() final;
void cleanup();
diff --git a/tests/auto/qmlls/qmlls/tst_qmlls.cpp b/tests/auto/qmlls/qmlls/tst_qmlls.cpp
index 4507a4b8b9..9e057992c4 100644
--- a/tests/auto/qmlls/qmlls/tst_qmlls.cpp
+++ b/tests/auto/qmlls/qmlls/tst_qmlls.cpp
@@ -219,12 +219,12 @@ void tst_Qmlls::didOpenTextDocument()
WorkspaceEdit edit = action.edit.value();
QVERIFY(edit.documentChanges.has_value());
- auto docChangeVariant = edit.documentChanges.value();
- QVERIFY(std::holds_alternative<QList<TextDocumentEdit>>(docChangeVariant));
- auto documentChanges = std::get<QList<TextDocumentEdit>>(docChangeVariant);
+ auto documentChanges = edit.documentChanges.value();
QCOMPARE(documentChanges.size(), 1);
- TextDocumentEdit textDocEdit = documentChanges.first();
+ QVERIFY(std::holds_alternative<TextDocumentEdit>(documentChanges.first()));
+ TextDocumentEdit textDocEdit
+ = std::get<TextDocumentEdit>(documentChanges.first());
QCOMPARE(textDocEdit.textDocument.uri, textDocument.uri);
QVERIFY(std::holds_alternative<int>(textDocEdit.textDocument.version));