1/****************************************************************************
2**
3** Copyright (C) 2016 The Qt Company Ltd.
4** Contact: https://www.qt.io/licensing/
5**
6** This file is part of the test suite of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:GPL-EXCEPT$
9** Commercial License Usage
10** Licensees holding valid commercial Qt licenses may use this file in
11** accordance with the commercial license agreement provided with the
12** Software or, alternatively, in accordance with the terms contained in
13** a written agreement between you and The Qt Company. For licensing terms
14** and conditions see https://www.qt.io/terms-conditions. For further
15** information use the contact form at https://www.qt.io/contact-us.
16**
17** GNU General Public License Usage
18** Alternatively, this file may be used under the terms of the GNU
19** General Public License version 3 as published by the Free Software
20** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
21** included in the packaging of this file. Please review the following
22** information to ensure the GNU General Public License requirements will
23** be met: https://www.gnu.org/licenses/gpl-3.0.html.
24**
25** $QT_END_LICENSE$
26**
27****************************************************************************/
28
29#include <qmakeevaluator.h>
30
31#include <QObject>
32#include <QProcessEnvironment>
33#include <QtTest/QtTest>
34
35class tst_qmakelib : public QObject
36{
37 Q_OBJECT
38
39public:
40 tst_qmakelib() {}
41 virtual ~tst_qmakelib() {}
42
43private slots:
44 void initTestCase();
45 void cleanupTestCase();
46
47 void quoteArgUnix_data();
48 void quoteArgUnix();
49 void quoteArgWin_data();
50 void quoteArgWin();
51
52 void pathUtils();
53 void ioUtilRelativity_data();
54 void ioUtilRelativity();
55 void ioUtilResolve_data();
56 void ioUtilResolve();
57
58 void proString();
59 void proStringList();
60
61 void proParser_data();
62 void proParser();
63
64 void proEval_data();
65 void proEval();
66
67private:
68 void addParseOperators();
69 void addParseValues();
70 void addParseConditions();
71 void addParseControlStatements();
72 void addParseBraces();
73 void addParseCustomFunctions();
74 void addParseAbuse();
75
76 void addAssignments();
77 void addExpansions();
78 void addControlStructs();
79 void addReplaceFunctions(const QString &qindir);
80 void addTestFunctions(const QString &qindir);
81
82 QProcessEnvironment m_env;
83 QHash<ProKey, ProString> m_prop;
84 QString m_indir, m_outdir;
85};
86
87class QMakeTestHandler : public QMakeHandler {
88public:
89 QMakeTestHandler() : QMakeHandler(), printed(false) {}
90 virtual void message(int type, const QString &msg, const QString &fileName, int lineNo)
91 { print(fileName, lineNo, type, msg); }
92
93 virtual void fileMessage(int type, const QString &msg)
94 { Q_UNUSED(type) doPrint(msg); }
95
96 virtual void aboutToEval(ProFile *, ProFile *, EvalFileType) {}
97 virtual void doneWithEval(ProFile *) {}
98
99 void setExpectedMessages(const QStringList &msgs) { expected = msgs; }
100 QStringList expectedMessages() const { return expected; }
101
102 bool printedMessages() const { return printed; }
103
104private:
105 void print(const QString &fileName, int lineNo, int type, const QString &msg);
106 void doPrint(const QString &msg);
107
108 QStringList expected;
109 bool printed;
110};
111
112

source code of qtbase/tests/auto/tools/qmakelib/tst_qmakelib.h