Class for testing run valentina.exe.
--HG-- branch : develop
This commit is contained in:
parent
f03d5f515d
commit
852bd63fe1
|
@ -3133,7 +3133,14 @@ bool MainWindow::LoadPattern(const QString &fileName, const QString& customMeasu
|
||||||
{
|
{
|
||||||
qCCritical(vMainWindow, "%s", qUtf8Printable(tr("This file already opened in another window.")));
|
qCCritical(vMainWindow, "%s", qUtf8Printable(tr("This file already opened in another window.")));
|
||||||
Clear();
|
Clear();
|
||||||
return false;
|
if (VApplication::CheckGUI())
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
std::exit(V_EX_NOINPUT);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3189,7 +3196,14 @@ bool MainWindow::LoadPattern(const QString &fileName, const QString& customMeasu
|
||||||
qCCritical(vMainWindow, "%s\n\n%s\n\n%s", qUtf8Printable(tr("File error.")),
|
qCCritical(vMainWindow, "%s\n\n%s\n\n%s", qUtf8Printable(tr("File error.")),
|
||||||
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
qUtf8Printable(e.ErrorMessage()), qUtf8Printable(e.DetailedInformation()));
|
||||||
Clear();
|
Clear();
|
||||||
return false;
|
if (VApplication::CheckGUI())
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
std::exit(V_EX_NOINPUT);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef Q_OS_WIN32
|
#ifdef Q_OS_WIN32
|
||||||
|
|
|
@ -44,7 +44,8 @@ SOURCES += \
|
||||||
tst_varc.cpp \
|
tst_varc.cpp \
|
||||||
stable.cpp \
|
stable.cpp \
|
||||||
tst_measurementregexp.cpp \
|
tst_measurementregexp.cpp \
|
||||||
tst_tapecommandline.cpp
|
tst_tapecommandline.cpp \
|
||||||
|
tst_valentinacommandline.cpp
|
||||||
|
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
tst_vposter.h \
|
tst_vposter.h \
|
||||||
|
@ -56,7 +57,8 @@ HEADERS += \
|
||||||
tst_varc.h \
|
tst_varc.h \
|
||||||
stable.h \
|
stable.h \
|
||||||
tst_measurementregexp.h \
|
tst_measurementregexp.h \
|
||||||
tst_tapecommandline.h
|
tst_tapecommandline.h \
|
||||||
|
tst_valentinacommandline.h
|
||||||
|
|
||||||
# Set using ccache. Function enable_ccache() defined in common.pri.
|
# Set using ccache. Function enable_ccache() defined in common.pri.
|
||||||
$$enable_ccache()
|
$$enable_ccache()
|
||||||
|
@ -192,9 +194,14 @@ TAPE_TEST_FILES += \
|
||||||
tst_tape/broken3.vit \
|
tst_tape/broken3.vit \
|
||||||
tst_tape/broken4.vit
|
tst_tape/broken4.vit
|
||||||
|
|
||||||
|
VALENTINA_TEST_FILES += \
|
||||||
|
tst_valentina/empty.val \
|
||||||
|
tst_valentina/issue_372.val
|
||||||
|
|
||||||
# Compilation will fail without this files after we added them to this section.
|
# Compilation will fail without this files after we added them to this section.
|
||||||
OTHER_FILES += \
|
OTHER_FILES += \
|
||||||
$$TAPE_TEST_FILES
|
$$TAPE_TEST_FILES \
|
||||||
|
$$VALENTINA_TEST_FILES
|
||||||
|
|
||||||
for(DIR, TAPE_TEST_FILES) {
|
for(DIR, TAPE_TEST_FILES) {
|
||||||
#add these absolute paths to a variable which
|
#add these absolute paths to a variable which
|
||||||
|
@ -203,3 +210,11 @@ for(DIR, TAPE_TEST_FILES) {
|
||||||
}
|
}
|
||||||
|
|
||||||
copyToDestdir($$tape_path, $$shell_path($${OUT_PWD}/$$DESTDIR/tst_tape))
|
copyToDestdir($$tape_path, $$shell_path($${OUT_PWD}/$$DESTDIR/tst_tape))
|
||||||
|
|
||||||
|
for(DIR, VALENTINA_TEST_FILES) {
|
||||||
|
#add these absolute paths to a variable which
|
||||||
|
#ends up as 'mkcommands = path1 path2 path3 ...'
|
||||||
|
valentina_path += $${PWD}/$$DIR
|
||||||
|
}
|
||||||
|
|
||||||
|
copyToDestdir($$valentina_path, $$shell_path($${OUT_PWD}/$$DESTDIR/tst_valentina))
|
||||||
|
|
|
@ -55,7 +55,7 @@ QString AbstractTest::ValentinaPath() const
|
||||||
{
|
{
|
||||||
const QString path = QStringLiteral("/../../../app/valentina/bin/valentina");
|
const QString path = QStringLiteral("/../../../app/valentina/bin/valentina");
|
||||||
#ifdef Q_OS_WIN
|
#ifdef Q_OS_WIN
|
||||||
return QApplication::applicationDirPath() + path + QStringLiteral(".exe");
|
return QApplication::applicationDirPath() + path + QLatin1Literal(".exe");
|
||||||
#else
|
#else
|
||||||
return QApplication::applicationDirPath() + path;
|
return QApplication::applicationDirPath() + path;
|
||||||
#endif
|
#endif
|
||||||
|
@ -66,14 +66,14 @@ QString AbstractTest::TapePath() const
|
||||||
{
|
{
|
||||||
const QString path = QStringLiteral("/../../../app/tape/bin/tape");
|
const QString path = QStringLiteral("/../../../app/tape/bin/tape");
|
||||||
#ifdef Q_OS_WIN
|
#ifdef Q_OS_WIN
|
||||||
return QApplication::applicationDirPath() + path + QStringLiteral(".exe");
|
return QApplication::applicationDirPath() + path + QLatin1Literal(".exe");
|
||||||
#else
|
#else
|
||||||
return QApplication::applicationDirPath() + path;
|
return QApplication::applicationDirPath() + path;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
bool AbstractTest::Run(bool showWarn, int &exitCode, const QString &program, const QStringList &arguments)
|
bool AbstractTest::Run(bool showWarn, int &exitCode, const QString &program, const QStringList &arguments, int msecs)
|
||||||
{
|
{
|
||||||
const QString parameters = QString("Program: %1 \nArguments: %2.").arg(program).arg(arguments.join(", "));
|
const QString parameters = QString("Program: %1 \nArguments: %2.").arg(program).arg(arguments.join(", "));
|
||||||
|
|
||||||
|
@ -90,7 +90,7 @@ bool AbstractTest::Run(bool showWarn, int &exitCode, const QString &program, con
|
||||||
process->setWorkingDirectory(info.absoluteDir().absolutePath());
|
process->setWorkingDirectory(info.absoluteDir().absolutePath());
|
||||||
process->start(program, arguments);
|
process->start(program, arguments);
|
||||||
|
|
||||||
if (not process->waitForFinished())// 30 sec
|
if (not process->waitForFinished(msecs))
|
||||||
{
|
{
|
||||||
const QString msg = QString("The operation timed out or an error occurred.\n%1").arg(parameters);
|
const QString msg = QString("The operation timed out or an error occurred.\n%1").arg(parameters);
|
||||||
QWARN(qUtf8Printable(msg));
|
QWARN(qUtf8Printable(msg));
|
||||||
|
|
|
@ -48,7 +48,7 @@ protected:
|
||||||
QString ValentinaPath() const;
|
QString ValentinaPath() const;
|
||||||
QString TapePath() const;
|
QString TapePath() const;
|
||||||
|
|
||||||
bool Run(bool showWarn, int &exitCode, const QString &program, const QStringList &arguments);
|
bool Run(bool showWarn, int &exitCode, const QString &program, const QStringList &arguments, int msecs = 30000);
|
||||||
bool CopyRecursively(const QString &srcFilePath, const QString &tgtFilePath) const;
|
bool CopyRecursively(const QString &srcFilePath, const QString &tgtFilePath) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
#include "tst_varc.h"
|
#include "tst_varc.h"
|
||||||
#include "tst_measurementregexp.h"
|
#include "tst_measurementregexp.h"
|
||||||
#include "tst_tapecommandline.h"
|
#include "tst_tapecommandline.h"
|
||||||
|
#include "tst_valentinacommandline.h"
|
||||||
|
|
||||||
int main(int argc, char** argv)
|
int main(int argc, char** argv)
|
||||||
{
|
{
|
||||||
|
@ -56,6 +57,7 @@ int main(int argc, char** argv)
|
||||||
ASSERT_TEST(new TST_VArc());
|
ASSERT_TEST(new TST_VArc());
|
||||||
ASSERT_TEST(new TST_MeasurementRegExp());
|
ASSERT_TEST(new TST_MeasurementRegExp());
|
||||||
ASSERT_TEST(new TST_TapeCommandLine());
|
ASSERT_TEST(new TST_TapeCommandLine());
|
||||||
|
ASSERT_TEST(new TST_ValentinaCommandLine());
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
18
src/test/ValentinaTest/tst_valentina/empty.val
Normal file
18
src/test/ValentinaTest/tst_valentina/empty.val
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<pattern>
|
||||||
|
<!--Pattern created with Valentina (http://www.valentina-project.org/).-->
|
||||||
|
<version>0.2.0</version>
|
||||||
|
<unit>cm</unit>
|
||||||
|
<author/>
|
||||||
|
<description/>
|
||||||
|
<notes/>
|
||||||
|
<measurements/>
|
||||||
|
<increments/>
|
||||||
|
<draw name="Pattern piece 1">
|
||||||
|
<calculation>
|
||||||
|
<point type="single" x="0.926042" y="1.05833" id="1" name="A" mx="0.132292" my="0.264583"/>
|
||||||
|
</calculation>
|
||||||
|
<modeling/>
|
||||||
|
<details/>
|
||||||
|
</draw>
|
||||||
|
</pattern>
|
33
src/test/ValentinaTest/tst_valentina/issue_372.val
Normal file
33
src/test/ValentinaTest/tst_valentina/issue_372.val
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<pattern>
|
||||||
|
<!--Pattern created with Valentina (http://www.valentina-project.org/).-->
|
||||||
|
<version>0.2.0</version>
|
||||||
|
<unit>cm</unit>
|
||||||
|
<author/>
|
||||||
|
<description/>
|
||||||
|
<notes/>
|
||||||
|
<measurements/>
|
||||||
|
<increments/>
|
||||||
|
<draw name="Чертеж 1">
|
||||||
|
<calculation>
|
||||||
|
<point type="single" x="0.926042" y="1.05833" id="1" name="A" mx="0.132292" my="0.264583"/>
|
||||||
|
<point type="endLine" typeLine="hair" id="2" name="A1" basePoint="1" mx="0.132292" lineColor="black" my="0.264583" angle="0" length="3"/>
|
||||||
|
<point type="endLine" typeLine="hair" id="3" name="A2" basePoint="2" mx="0.132292" lineColor="black" my="0.264583" angle="270" length="3"/>
|
||||||
|
<line typeLine="hair" id="4" firstPoint="1" secondPoint="3" lineColor="black"/>
|
||||||
|
</calculation>
|
||||||
|
<modeling>
|
||||||
|
<point type="modeling" id="5" idObject="1" mx="0.132292" my="0.264583"/>
|
||||||
|
<point type="modeling" id="6" idObject="2" mx="0.132292" my="0.264583"/>
|
||||||
|
<point type="modeling" id="7" idObject="3" mx="0.132292" my="0.264583"/>
|
||||||
|
<point type="modeling" id="8" idObject="1" mx="0.132292" my="0.264583"/>
|
||||||
|
</modeling>
|
||||||
|
<details>
|
||||||
|
<detail closed="1" id="9" name="Деталь" supplement="1" mx="0.608542" width="1" my="0.608542">
|
||||||
|
<node type="NodePoint" nodeType="Contour" idObject="5" mx="0" my="0"/>
|
||||||
|
<node type="NodePoint" nodeType="Contour" idObject="6" mx="0" my="0"/>
|
||||||
|
<node type="NodePoint" nodeType="Contour" idObject="7" mx="0" my="0"/>
|
||||||
|
<node type="NodePoint" nodeType="Contour" idObject="8" mx="0" my="0"/>
|
||||||
|
</detail>
|
||||||
|
</details>
|
||||||
|
</draw>
|
||||||
|
</pattern>
|
135
src/test/ValentinaTest/tst_valentinacommandline.cpp
Normal file
135
src/test/ValentinaTest/tst_valentinacommandline.cpp
Normal file
|
@ -0,0 +1,135 @@
|
||||||
|
/************************************************************************
|
||||||
|
**
|
||||||
|
** @file tst_valentinacommandline.cpp
|
||||||
|
** @author Roman Telezhynskyi <dismine(at)gmail.com>
|
||||||
|
** @date 4 10, 2015
|
||||||
|
**
|
||||||
|
** @brief
|
||||||
|
** @copyright
|
||||||
|
** This source code is part of the Valentine project, a pattern making
|
||||||
|
** program, whose allow create and modeling patterns of clothing.
|
||||||
|
** Copyright (C) 2015 Valentina project
|
||||||
|
** <https://bitbucket.org/dismine/valentina> All Rights Reserved.
|
||||||
|
**
|
||||||
|
** Valentina is free software: you can redistribute it and/or modify
|
||||||
|
** it under the terms of the GNU General Public License as published by
|
||||||
|
** the Free Software Foundation, either version 3 of the License, or
|
||||||
|
** (at your option) any later version.
|
||||||
|
**
|
||||||
|
** Valentina is distributed in the hope that it will be useful,
|
||||||
|
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
** GNU General Public License for more details.
|
||||||
|
**
|
||||||
|
** You should have received a copy of the GNU General Public License
|
||||||
|
** along with Valentina. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
**
|
||||||
|
*************************************************************************/
|
||||||
|
|
||||||
|
#include "tst_valentinacommandline.h"
|
||||||
|
#include "../vmisc/vsysexits.h"
|
||||||
|
|
||||||
|
#include <QtTest>
|
||||||
|
|
||||||
|
const QString tmpTestFolder = QStringLiteral("tst_valentina_tmp");
|
||||||
|
|
||||||
|
TST_ValentinaCommandLine::TST_ValentinaCommandLine(QObject *parent)
|
||||||
|
:AbstractTest(parent)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
// cppcheck-suppress unusedFunction
|
||||||
|
void TST_ValentinaCommandLine::init()
|
||||||
|
{
|
||||||
|
QDir tmpDir(tmpTestFolder);
|
||||||
|
if (not tmpDir.removeRecursively())
|
||||||
|
{
|
||||||
|
QFAIL("Fail to remove temp directory.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (not CopyRecursively(QApplication::applicationDirPath() + QLatin1Char('/') + QLatin1Literal("tst_valentina"),
|
||||||
|
QApplication::applicationDirPath() + QLatin1Char('/') + tmpTestFolder))
|
||||||
|
{
|
||||||
|
QFAIL("Fail to prepare files for testing.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
// cppcheck-suppress unusedFunction
|
||||||
|
void TST_ValentinaCommandLine::OpenPatterns_data() const
|
||||||
|
{
|
||||||
|
QTest::addColumn<QString>("file");
|
||||||
|
QTest::addColumn<bool>("result");
|
||||||
|
QTest::addColumn<int>("exitCode");
|
||||||
|
|
||||||
|
// The file doesn't exist!
|
||||||
|
QTest::newRow("Send wrong path to a file") << "wrongPath.val"
|
||||||
|
<< false
|
||||||
|
<< V_EX_NOINPUT;
|
||||||
|
|
||||||
|
QTest::newRow("Measurement independent empty file") << "empty.val"
|
||||||
|
<< true
|
||||||
|
<< V_EX_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
// cppcheck-suppress unusedFunction
|
||||||
|
void TST_ValentinaCommandLine::OpenPatterns()
|
||||||
|
{
|
||||||
|
QFETCH(QString, file);
|
||||||
|
QFETCH(bool, result);
|
||||||
|
QFETCH(int, exitCode);
|
||||||
|
|
||||||
|
int exit;
|
||||||
|
const bool res = Run(result, exit, ValentinaPath(), QStringList() << "--test"
|
||||||
|
<< QApplication::applicationDirPath() + QLatin1Char('/') + tmpTestFolder + QLatin1Char('/') + file);
|
||||||
|
|
||||||
|
QCOMPARE(res, result);
|
||||||
|
QCOMPARE(exit, exitCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
// cppcheck-suppress unusedFunction
|
||||||
|
void TST_ValentinaCommandLine::ExportMode_data() const
|
||||||
|
{
|
||||||
|
QTest::addColumn<QString>("file");
|
||||||
|
QTest::addColumn<QString>("arguments");
|
||||||
|
QTest::addColumn<bool>("result");
|
||||||
|
QTest::addColumn<int>("exitCode");
|
||||||
|
|
||||||
|
QTest::newRow("Issue #372")<< "issue_372.val"
|
||||||
|
<< "-p;;0;;-o;;output"
|
||||||
|
<< true
|
||||||
|
<< V_EX_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
// cppcheck-suppress unusedFunction
|
||||||
|
void TST_ValentinaCommandLine::ExportMode()
|
||||||
|
{
|
||||||
|
QFETCH(QString, file);
|
||||||
|
QFETCH(QString, arguments);
|
||||||
|
QFETCH(bool, result);
|
||||||
|
QFETCH(int, exitCode);
|
||||||
|
|
||||||
|
int exit;
|
||||||
|
const QStringList arg = QStringList() << QApplication::applicationDirPath() + QLatin1Char('/') + tmpTestFolder +
|
||||||
|
QLatin1Char('/') + file
|
||||||
|
<< arguments.split(";;");
|
||||||
|
const bool res = Run(result, exit, ValentinaPath(), arg);
|
||||||
|
|
||||||
|
QCOMPARE(res, result);
|
||||||
|
QCOMPARE(exit, exitCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
// cppcheck-suppress unusedFunction
|
||||||
|
void TST_ValentinaCommandLine::cleanup()
|
||||||
|
{
|
||||||
|
QDir tmpDir(tmpTestFolder);
|
||||||
|
if (not tmpDir.removeRecursively())
|
||||||
|
{
|
||||||
|
QWARN("Fail to remove temp directory.");
|
||||||
|
}
|
||||||
|
}
|
52
src/test/ValentinaTest/tst_valentinacommandline.h
Normal file
52
src/test/ValentinaTest/tst_valentinacommandline.h
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
/************************************************************************
|
||||||
|
**
|
||||||
|
** @file tst_valentinacommandline.h
|
||||||
|
** @author Roman Telezhynskyi <dismine(at)gmail.com>
|
||||||
|
** @date 4 10, 2015
|
||||||
|
**
|
||||||
|
** @brief
|
||||||
|
** @copyright
|
||||||
|
** This source code is part of the Valentine project, a pattern making
|
||||||
|
** program, whose allow create and modeling patterns of clothing.
|
||||||
|
** Copyright (C) 2015 Valentina project
|
||||||
|
** <https://bitbucket.org/dismine/valentina> All Rights Reserved.
|
||||||
|
**
|
||||||
|
** Valentina is free software: you can redistribute it and/or modify
|
||||||
|
** it under the terms of the GNU General Public License as published by
|
||||||
|
** the Free Software Foundation, either version 3 of the License, or
|
||||||
|
** (at your option) any later version.
|
||||||
|
**
|
||||||
|
** Valentina is distributed in the hope that it will be useful,
|
||||||
|
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
** GNU General Public License for more details.
|
||||||
|
**
|
||||||
|
** You should have received a copy of the GNU General Public License
|
||||||
|
** along with Valentina. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
**
|
||||||
|
*************************************************************************/
|
||||||
|
|
||||||
|
#ifndef TST_VALENTINACOMMANDLINE_H
|
||||||
|
#define TST_VALENTINACOMMANDLINE_H
|
||||||
|
|
||||||
|
#include "abstracttest.h"
|
||||||
|
|
||||||
|
class TST_ValentinaCommandLine : public AbstractTest
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
TST_ValentinaCommandLine(QObject *parent = 0);
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void init();
|
||||||
|
void OpenPatterns_data() const;
|
||||||
|
void OpenPatterns();
|
||||||
|
void ExportMode_data() const;
|
||||||
|
void ExportMode();
|
||||||
|
void cleanup();
|
||||||
|
|
||||||
|
private:
|
||||||
|
Q_DISABLE_COPY(TST_ValentinaCommandLine)
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // TST_VALENTINACOMMANDLINE_H
|
Loading…
Reference in New Issue
Block a user