From 3b66b11ac4d0c4c9728578be952f3e0356eaae62 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Mon, 21 Jan 2013 22:56:01 +0200 Subject: [PATCH] VCS: Add diff pattern tests for CVS and Mercurial * Fix Mercurial pattern * Make fileNameFromDiffSpecification protected again (it was made public for running tests, but they are now run from VCSBaseEditor) * Remove DiffHighlighter::filePattern(). Not used anymore. Change-Id: Ifc99f761f0ab96cc79f1d018e3f3c8cf4603da10 Reviewed-by: Tobias Hunger --- src/plugins/cvs/cvsplugin.cpp | 26 ++++++++++++++++ src/plugins/cvs/cvsplugin.h | 4 +++ src/plugins/mercurial/constants.h | 3 +- src/plugins/mercurial/mercurialplugin.cpp | 37 +++++++++++++++++++++++ src/plugins/mercurial/mercurialplugin.h | 4 +++ src/plugins/vcsbase/diffhighlighter.cpp | 5 --- src/plugins/vcsbase/diffhighlighter.h | 2 -- src/plugins/vcsbase/vcsbaseeditor.h | 8 ++--- 8 files changed, 77 insertions(+), 12 deletions(-) diff --git a/src/plugins/cvs/cvsplugin.cpp b/src/plugins/cvs/cvsplugin.cpp index d921d9efd49..2b99b0df0d9 100644 --- a/src/plugins/cvs/cvsplugin.cpp +++ b/src/plugins/cvs/cvsplugin.cpp @@ -71,6 +71,10 @@ #include #include +#ifdef WITH_TESTS +#include +#endif + using namespace VcsBase; using namespace Core; @@ -1376,6 +1380,28 @@ CvsControl *CvsPlugin::cvsVersionControl() const return static_cast(versionControl()); } +#ifdef WITH_TESTS +void CvsPlugin::testDiffFileResolving_data() +{ + QTest::addColumn("header"); + QTest::addColumn("fileName"); + + QTest::newRow("Modified") << QByteArray( + "Index: src/plugins/cvs/cvseditor.cpp\n" + "===================================================================\n" + "--- src/plugins/cvs/cvseditor.cpp\t21 Jan 2013 20:34:20 -0000\t1.1\n" + "+++ src/plugins/cvs/cvseditor.cpp\t21 Jan 2013 20:34:28 -0000\n" + "@@ -120,7 +120,7 @@\n\n") + << QByteArray("src/plugins/cvs/cvseditor.cpp"); +} + +void CvsPlugin::testDiffFileResolving() +{ + CvsEditor editor(editorParameters + 3, 0); + VcsBase::VcsBaseEditorWidget::testDiffFileResolving(&editor); +} +#endif + } // namespace Internal } // namespace Cvs diff --git a/src/plugins/cvs/cvsplugin.h b/src/plugins/cvs/cvsplugin.h index ed326f3bc96..7326890ad49 100644 --- a/src/plugins/cvs/cvsplugin.h +++ b/src/plugins/cvs/cvsplugin.h @@ -123,6 +123,10 @@ private slots: void uneditCurrentFile(); void uneditCurrentRepository(); void cvsDiff(const Cvs::Internal::CvsDiffParameters &p); +#ifdef WITH_TESTS + void testDiffFileResolving_data(); + void testDiffFileResolving(); +#endif protected: void updateActions(VcsBase::VcsBasePlugin::ActionState); diff --git a/src/plugins/mercurial/constants.h b/src/plugins/mercurial/constants.h index b5b1daa6b2a..f27849e2e0f 100644 --- a/src/plugins/mercurial/constants.h +++ b/src/plugins/mercurial/constants.h @@ -42,7 +42,8 @@ const char CHANGESETID12[] = " ([a-f0-9]{12,12}) "; //match 12 hex chars and cap const char CHANGESETID40[] = " ([a-f0-9]{40,40}) "; const char CHANGEIDEXACT12[] = "[a-f0-9]{12,12}"; //match 12 hex chars a const char CHANGEIDEXACT40[] = "[a-f0-9]{40,40}"; -const char DIFFIDENTIFIER[] = "^[-+]{3} [ab]/(.+)$"; // match e.g. +++ b/filename +// match diff header. e.g. +++ b/filename +const char DIFFIDENTIFIER[] = "^(?:diff --git a/|[+-]{3} (?:/dev/null|[ab]/(.+$)))"; // Base editor parameters const char COMMANDLOG_ID[] = "Mercurial Command Log Editor"; diff --git a/src/plugins/mercurial/mercurialplugin.cpp b/src/plugins/mercurial/mercurialplugin.cpp index f4682644842..05c8afc6dff 100644 --- a/src/plugins/mercurial/mercurialplugin.cpp +++ b/src/plugins/mercurial/mercurialplugin.cpp @@ -685,4 +685,41 @@ void MercurialPlugin::updateActions(VcsBasePlugin::ActionState as) repoAction->setEnabled(repoEnabled); } +#ifdef WITH_TESTS +#include + +void MercurialPlugin::testDiffFileResolving_data() +{ + QTest::addColumn("header"); + QTest::addColumn("fileName"); + + QTest::newRow("New") << QByteArray( + "diff --git a/src/plugins/mercurial/mercurialeditor.cpp b/src/plugins/mercurial/mercurialeditor.cpp\n" + "new file mode 100644\n" + "--- /dev/null\n" + "+++ b/src/plugins/mercurial/mercurialeditor.cpp\n" + "@@ -0,0 +1,112 @@\n\n") + << QByteArray("src/plugins/mercurial/mercurialeditor.cpp"); + QTest::newRow("Deleted") << QByteArray( + "diff --git a/src/plugins/mercurial/mercurialeditor.cpp b/src/plugins/mercurial/mercurialeditor.cpp\n" + "deleted file mode 100644\n" + "--- a/src/plugins/mercurial/mercurialeditor.cpp\n" + "+++ /dev/null\n" + "@@ -1,112 +0,0 @@\n\n") + << QByteArray("src/plugins/mercurial/mercurialeditor.cpp"); + QTest::newRow("Normal") << QByteArray( + "diff --git a/src/plugins/mercurial/mercurialeditor.cpp b/src/plugins/mercurial/mercurialeditor.cpp\n" + "--- a/src/plugins/mercurial/mercurialeditor.cpp\n" + "+++ b/src/plugins/mercurial/mercurialeditor.cpp\n" + "@@ -49,6 +49,8 @@\n\n") + << QByteArray("src/plugins/mercurial/mercurialeditor.cpp"); +} + +void MercurialPlugin::testDiffFileResolving() +{ + MercurialEditor editor(editorParameters + 3, 0); + VcsBase::VcsBaseEditorWidget::testDiffFileResolving(&editor); +} +#endif + Q_EXPORT_PLUGIN(MercurialPlugin) diff --git a/src/plugins/mercurial/mercurialplugin.h b/src/plugins/mercurial/mercurialplugin.h index f23295986de..44c3dfca70b 100644 --- a/src/plugins/mercurial/mercurialplugin.h +++ b/src/plugins/mercurial/mercurialplugin.h @@ -103,6 +103,10 @@ private slots: void showCommitWidget(const QList &status); void commitFromEditor(); void diffFromEditorSelected(const QStringList &files); +#ifdef WITH_TESTS + void testDiffFileResolving_data(); + void testDiffFileResolving(); +#endif //TODO implement /* //repository management action slots diff --git a/src/plugins/vcsbase/diffhighlighter.cpp b/src/plugins/vcsbase/diffhighlighter.cpp index 463449e0dcd..a5af1d47e0f 100644 --- a/src/plugins/vcsbase/diffhighlighter.cpp +++ b/src/plugins/vcsbase/diffhighlighter.cpp @@ -255,9 +255,4 @@ void DiffHighlighter::setFormats(const QVector &s) } } -QRegExp DiffHighlighter::filePattern() const -{ - return d->m_filePattern; -} - } // namespace VcsBase diff --git a/src/plugins/vcsbase/diffhighlighter.h b/src/plugins/vcsbase/diffhighlighter.h index 05ccce2b1f8..04a5c0859f3 100644 --- a/src/plugins/vcsbase/diffhighlighter.h +++ b/src/plugins/vcsbase/diffhighlighter.h @@ -59,8 +59,6 @@ public: // Set formats from a sequence of type QTextCharFormat void setFormats(const QVector &s); - QRegExp filePattern() const; - private: Internal::DiffHighlighterPrivate *const d; }; diff --git a/src/plugins/vcsbase/vcsbaseeditor.h b/src/plugins/vcsbase/vcsbaseeditor.h index 9cd0cbb1c25..0b0539a79f4 100644 --- a/src/plugins/vcsbase/vcsbaseeditor.h +++ b/src/plugins/vcsbase/vcsbaseeditor.h @@ -184,10 +184,6 @@ public: bool setConfigurationWidget(QWidget *w); QWidget *configurationWidget() const; - // Returns a local file name from the diff file specification - // (text cursor at position above change hunk) - QString fileNameFromDiffSpecification(const QTextBlock &inBlock) const; - /* Tagging editors: Sometimes, an editor should be re-used, for example, when showing * a diff of the same file with different diff-options. In order to be able to find * the editor, they get a 'tag' containing type and parameters (dynamic property string). */ @@ -248,6 +244,10 @@ protected: // Factory functions for highlighters virtual BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet &changes, const QColor &bg) const = 0; + // Returns a local file name from the diff file specification + // (text cursor at position above change hunk) + QString fileNameFromDiffSpecification(const QTextBlock &inBlock) const; + // Implement to return decorated annotation change for "Annotate version" virtual QString decorateVersion(const QString &revision) const; // Implement to return the previous version[s] of an annotation change