summaryrefslogtreecommitdiff
path: root/plugins/autotest/testsquishutils.cpp
blob: cafe9cb5cee6b69eba2f1e197fe14e83d4d77b65 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd
** All rights reserved.
** For any questions to The Qt Company, please use contact form at
** http://www.qt.io/contact-us
**
** This file is part of the Qt Creator Enterprise Auto Test Add-on.
**
** Licensees holding valid Qt Enterprise licenses may use this file in
** accordance with the Qt Enterprise License Agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company.
**
** If you have questions regarding the use of this file, please use
** contact form at http://www.qt.io/contact-us
**
****************************************************************************/

#include "testsquishutils.h"

#include <QDir>
#include <QFileInfo>
#include <QString>
#include <QSettings>

namespace Autotest {
namespace Internal {

const static QString squishLanguageKey = QLatin1String("LANGUAGE");
const static QString squishTestCasesKey = QLatin1String("TEST_CASES");

QStringList TestSquishUtils::validTestCases(QString baseDirectory)
{
    QStringList validCases;
    QDir subDir(baseDirectory);
    QFileInfo suiteConf(subDir, QLatin1String("suite.conf"));
    if (suiteConf.exists()) {
        QVariantMap conf = readSuiteConf(suiteConf.absoluteFilePath());
        QString extension = extensionForLanguage(conf.value(squishLanguageKey).toString());
        QStringList cases = conf.value(squishTestCasesKey).toString().split(
                    QRegExp(QLatin1String("\\s+")));

        foreach (const QString &testCase, cases) {
            QFileInfo testCaseDirInfo(subDir, testCase);
            if (testCaseDirInfo.isDir()) {
                QFileInfo testCaseTestInfo(testCaseDirInfo.filePath(),
                                           QLatin1String("test") + extension);
                if (testCaseTestInfo.isFile())
                    validCases.append(testCaseTestInfo.absoluteFilePath());
            }
        }
    }

    return validCases;
}

QVariantMap TestSquishUtils::readSuiteConf(QString suiteConfPath)
{
    const QSettings suiteConf(suiteConfPath, QSettings::IniFormat);
    QVariantMap result;
    // TODO get all information - actually only the information needed now is fetched
    result.insert(squishLanguageKey, suiteConf.value(squishLanguageKey));
    result.insert(squishTestCasesKey, suiteConf.value(squishTestCasesKey));
    return result;
}

QString TestSquishUtils::extensionForLanguage(QString language)
{
    if (language == QLatin1String("Python"))
        return QLatin1String(".py");
    else if (language == QLatin1String("Perl"))
        return QLatin1String(".pl");
    else if (language == QLatin1String("JavaScript"))
        return QLatin1String(".js");
    else if (language == QLatin1String("Ruby"))
        return QLatin1String(".rb");
    else if (language == QLatin1String("Tcl"))
        return QLatin1String(".tcl");
    else
        return QString(); // better return an invalid extension?
}

} // namespace Internal
} // namespace Autotest