summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/test_signatures.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/tests/test_signatures.cpp b/tests/test_signatures.cpp
index 31f9eb4..47b404b 100644
--- a/tests/test_signatures.cpp
+++ b/tests/test_signatures.cpp
@@ -40,6 +40,7 @@ private slots:
void selectingNoneRemovesAKnownSignature();
void aBlockMatchingNoKnownSignatureIsNotRemoved();
void aDelimiterInsideTheQuoteIsNotTheSignature();
+ void aSignatureReadBackFromDiskIsReplaced();
private:
/// Writes \p files as name -> content into a fresh temporary directory.
@@ -273,5 +274,21 @@ void TestSignatures::aDelimiterInsideTheQuoteIsNotTheSignature()
QVERIFY(result.endsWith(QStringLiteral("-- \nJane Doe")));
}
+void TestSignatures::aSignatureReadBackFromDiskIsReplaced()
+{
+ // known here is what knownSignatures() produces: text() verbatim, carrying
+ // the trailing newline every editor writes into a file. The block scan
+ // treats a trailing blank line as separation rather than text, so a naive
+ // match compares "Jane Doe" against "Jane Doe\n" and silently fails, and
+ // switching then APPENDS a second signature instead of replacing the first.
+ const QStringList known = { QStringLiteral("Jane Doe\n") };
+ const QString buffer = QStringLiteral("Hello.\n\n-- \nJane Doe\n");
+
+ const QString result = Signatures::replace(
+ buffer, QStringLiteral("Brief"), known, Signatures::Position::End);
+
+ QCOMPARE(result, QStringLiteral("Hello.\n\n-- \nBrief"));
+}
+
QTEST_MAIN(TestSignatures)
#include "test_signatures.moc"