forked from qt-creator/qt-creator
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:
committed by
Tobias Hunger
parent
23844410fd
commit
3b66b11ac4
@@ -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
|
||||||
|
|
||||||
|
@@ -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);
|
||||||
|
@@ -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";
|
||||||
|
@@ -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)
|
||||||
|
@@ -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
|
||||||
|
@@ -255,9 +255,4 @@ void DiffHighlighter::setFormats(const QVector<QTextCharFormat> &s)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QRegExp DiffHighlighter::filePattern() const
|
|
||||||
{
|
|
||||||
return d->m_filePattern;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace VcsBase
|
} // namespace VcsBase
|
||||||
|
@@ -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;
|
||||||
};
|
};
|
||||||
|
@@ -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
|
||||||
|
Reference in New Issue
Block a user