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 <tobias.hunger@digia.com>
This commit is contained in:
Orgad Shaneh
2013-01-21 22:56:01 +02:00
committed by Tobias Hunger
parent 23844410fd
commit 3b66b11ac4
8 changed files with 77 additions and 12 deletions

View File

@@ -71,6 +71,10 @@
#include <QMenu> #include <QMenu>
#include <QMessageBox> #include <QMessageBox>
#ifdef WITH_TESTS
#include <QTest>
#endif
using namespace VcsBase; using namespace VcsBase;
using namespace Core; using namespace Core;
@@ -1376,6 +1380,28 @@ CvsControl *CvsPlugin::cvsVersionControl() const
return static_cast<CvsControl *>(versionControl()); return static_cast<CvsControl *>(versionControl());
} }
#ifdef WITH_TESTS
void CvsPlugin::testDiffFileResolving_data()
{
QTest::addColumn<QByteArray>("header");
QTest::addColumn<QByteArray>("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 Internal
} // namespace Cvs } // namespace Cvs

View File

@@ -123,6 +123,10 @@ private slots:
void uneditCurrentFile(); void uneditCurrentFile();
void uneditCurrentRepository(); void uneditCurrentRepository();
void cvsDiff(const Cvs::Internal::CvsDiffParameters &p); void cvsDiff(const Cvs::Internal::CvsDiffParameters &p);
#ifdef WITH_TESTS
void testDiffFileResolving_data();
void testDiffFileResolving();
#endif
protected: protected:
void updateActions(VcsBase::VcsBasePlugin::ActionState); void updateActions(VcsBase::VcsBasePlugin::ActionState);

View File

@@ -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 CHANGESETID40[] = " ([a-f0-9]{40,40}) ";
const char CHANGEIDEXACT12[] = "[a-f0-9]{12,12}"; //match 12 hex chars a const char CHANGEIDEXACT12[] = "[a-f0-9]{12,12}"; //match 12 hex chars a
const char CHANGEIDEXACT40[] = "[a-f0-9]{40,40}"; 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 // Base editor parameters
const char COMMANDLOG_ID[] = "Mercurial Command Log Editor"; const char COMMANDLOG_ID[] = "Mercurial Command Log Editor";

View File

@@ -685,4 +685,41 @@ void MercurialPlugin::updateActions(VcsBasePlugin::ActionState as)
repoAction->setEnabled(repoEnabled); repoAction->setEnabled(repoEnabled);
} }
#ifdef WITH_TESTS
#include <QTest>
void MercurialPlugin::testDiffFileResolving_data()
{
QTest::addColumn<QByteArray>("header");
QTest::addColumn<QByteArray>("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) Q_EXPORT_PLUGIN(MercurialPlugin)

View File

@@ -103,6 +103,10 @@ private slots:
void showCommitWidget(const QList<VcsBase::VcsBaseClient::StatusItem> &status); void showCommitWidget(const QList<VcsBase::VcsBaseClient::StatusItem> &status);
void commitFromEditor(); void commitFromEditor();
void diffFromEditorSelected(const QStringList &files); void diffFromEditorSelected(const QStringList &files);
#ifdef WITH_TESTS
void testDiffFileResolving_data();
void testDiffFileResolving();
#endif
//TODO implement //TODO implement
/* //repository management action slots /* //repository management action slots

View File

@@ -255,9 +255,4 @@ void DiffHighlighter::setFormats(const QVector<QTextCharFormat> &s)
} }
} }
QRegExp DiffHighlighter::filePattern() const
{
return d->m_filePattern;
}
} // namespace VcsBase } // namespace VcsBase

View File

@@ -59,8 +59,6 @@ public:
// Set formats from a sequence of type QTextCharFormat // Set formats from a sequence of type QTextCharFormat
void setFormats(const QVector<QTextCharFormat> &s); void setFormats(const QVector<QTextCharFormat> &s);
QRegExp filePattern() const;
private: private:
Internal::DiffHighlighterPrivate *const d; Internal::DiffHighlighterPrivate *const d;
}; };

View File

@@ -184,10 +184,6 @@ public:
bool setConfigurationWidget(QWidget *w); bool setConfigurationWidget(QWidget *w);
QWidget *configurationWidget() const; 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 /* 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 * 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). */ * the editor, they get a 'tag' containing type and parameters (dynamic property string). */
@@ -248,6 +244,10 @@ protected:
// Factory functions for highlighters // Factory functions for highlighters
virtual BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes, virtual BaseAnnotationHighlighter *createAnnotationHighlighter(const QSet<QString> &changes,
const QColor &bg) const = 0; 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" // Implement to return decorated annotation change for "Annotate version"
virtual QString decorateVersion(const QString &revision) const; virtual QString decorateVersion(const QString &revision) const;
// Implement to return the previous version[s] of an annotation change // Implement to return the previous version[s] of an annotation change