summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorQt Continuous Integration System <qt-info@nokia.com>2010-01-13 14:02:58 +0100
committerQt Continuous Integration System <qt-info@nokia.com>2010-01-13 14:02:58 +0100
commite1b03bac22f87edbbe78eba366966259be6eb0ed (patch)
tree90d6aaa0557aa36007867aeb65839a9954622bcc /tests
parent5099edac8485e41ed4187fc18a42cbfc2bc43023 (diff)
parent3aca005d4721b82446922310496271ebe206a0d7 (diff)
Merge branch '4.6' of scm.dev.nokia.troll.no:qt/berlin-staging-1 into 4.6-integration
* '4.6' of scm.dev.nokia.troll.no:qt/berlin-staging-1: (22 commits) really, *really* fix the test :} QFile cannot deal with crlf-translated stdio, so use binary mode remove trimming of (expected) output really fix the autotest support regexp-like quantifiers of expected output lines remove superfluous \r filtering print actual rather than expected output for matching text Do not set the font size unnecessarily in the simulated s60 style. Doc typos fixed Translations: Update German for 4.6.1 fix test under windows don't complain about unresolved base when the reference is absolute make the lupdate tests more verbose in case of failure don't use qmake for test setup move equivalent of output_ts test to good/ look for the .result file in the dir where the output is expected to go fix sametext and number heuristics fix number heuristics, part 1 no point in specifying -ts when a .pro file is specified clean up the lupdatecmd files ...
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/linguist/lupdate/.gitignore2
-rw-r--r--tests/auto/linguist/lupdate/lupdate.pro3
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/backslashes/lupdatecmd2
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/backslashes/project.pro16
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/backslashes/ts/project.ts.result (renamed from tests/auto/linguist/lupdate/testdata/good/backslashes/project.ts.result)0
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/codecforsrc/project.pro15
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/codecfortr/project.pro15
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/codecfortr1/project.pro11
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/codecfortr2/project.pro11
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/heuristics/expectedoutput.txt6
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/heuristics/lupdatecmd2
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/heuristics/main.cpp (renamed from tests/auto/linguist/lupdate/testlupdate.h)53
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/heuristics/project.pro3
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/heuristics/project.ts.before38
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/heuristics/project.ts.result22
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/lacksqobject/project.pro11
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/merge_ordering/lupdatecmd6
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/merge_ordering/project.pro13
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/merge_versions/project.pro13
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/merge_whitespace/project.pro13
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/mergecpp/project.pro13
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/mergecpp_noobsolete/lupdatecmd6
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/mergecpp_noobsolete/project.pro13
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/mergecpp_obsolete/project.pro13
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/mergeui/project.pro13
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/mergeui_obsolete/project.pro13
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/multiple_locations/project.pro11
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/namespaces/project.pro11
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/parse_special_chars/project.pro11
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/parsecontexts/project.pro11
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/parsecpp/project.pro11
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/parsecpp2/expectedoutput.txt1
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/parsecpp2/project.pro11
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/parsejava/project.pro11
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/parseui/project.pro12
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/prefix/project.pro11
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/preprocess/project.pro11
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsing/project.pro11
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsing2/project.pro11
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsingpaths/project.pro5
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsingpri/project.pro9
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsingsubdirs/project.pro5
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsingsubdirs/sub1/sub1.pro11
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsingsubs/common/common.pro5
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsingsubs/lupdatecmd1
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsingsubs/mac/mac.pro6
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsingsubs/project.pro5
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsingsubs/unix/unix.pro6
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsingsubs/win/win.pro6
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/reloutput/lupdatecmd2
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/reloutput/main.cpp (renamed from tests/auto/linguist/lupdate/testdata/output_ts/toplevel/library/tools/main.cpp)0
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/reloutput/project.pro3
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/reloutput/translations/project.ts.result (renamed from tests/auto/linguist/lupdate/testdata/output_ts/project.ts.result)0
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/textsimilarity/project.pro13
-rw-r--r--tests/auto/linguist/lupdate/testdata/output_ts/lupdatecmd5
-rw-r--r--tests/auto/linguist/lupdate/testdata/output_ts/toplevel/library/tools/tools.pro12
-rw-r--r--tests/auto/linguist/lupdate/testdata/output_ts/toplevel/library/tools/translations/readme.txt2
-rw-r--r--tests/auto/linguist/lupdate/testlupdate.cpp158
-rw-r--r--tests/auto/linguist/lupdate/tst_lupdate.cpp251
59 files changed, 278 insertions, 687 deletions
diff --git a/tests/auto/linguist/lupdate/.gitignore b/tests/auto/linguist/lupdate/.gitignore
index 4ba5b79ece..389f2dc8bf 100644
--- a/tests/auto/linguist/lupdate/.gitignore
+++ b/tests/auto/linguist/lupdate/.gitignore
@@ -1,4 +1,4 @@
tst_lupdate
testdata/good/*/project.ts
-testdata/output_ts/toplevel/library/tools/translations/project.ts
+testdata/good/*/*/project.ts
testdata/recursivescan/*.ts
diff --git a/tests/auto/linguist/lupdate/lupdate.pro b/tests/auto/linguist/lupdate/lupdate.pro
index 19259dc399..bcaaf66865 100644
--- a/tests/auto/linguist/lupdate/lupdate.pro
+++ b/tests/auto/linguist/lupdate/lupdate.pro
@@ -2,6 +2,5 @@ CONFIG += qttest_p4
TARGET = tst_lupdate
-HEADERS += testlupdate.h
-SOURCES += tst_lupdate.cpp testlupdate.cpp
+SOURCES += tst_lupdate.cpp
diff --git a/tests/auto/linguist/lupdate/testdata/good/backslashes/lupdatecmd b/tests/auto/linguist/lupdate/testdata/good/backslashes/lupdatecmd
index 9b83a04c77..f0e1ab2009 100644
--- a/tests/auto/linguist/lupdate/testdata/good/backslashes/lupdatecmd
+++ b/tests/auto/linguist/lupdate/testdata/good/backslashes/lupdatecmd
@@ -1,3 +1 @@
-# Add the command that lupdate should run here. If it can't find anything it will default to
TRANSLATION: ts\project.ts
-lupdate -silent project.pro
diff --git a/tests/auto/linguist/lupdate/testdata/good/backslashes/project.pro b/tests/auto/linguist/lupdate/testdata/good/backslashes/project.pro
index 3584c8910b..4698b2b795 100644
--- a/tests/auto/linguist/lupdate/testdata/good/backslashes/project.pro
+++ b/tests/auto/linguist/lupdate/testdata/good/backslashes/project.pro
@@ -1,19 +1,3 @@
-######################################################################
-# Automatically generated by qmake (2.01a) ma 22. jan 10:10:16 2007
-######################################################################
-
-TEMPLATE = app
-TARGET =
-DEPENDPATH += .
-INCLUDEPATH += .
-
-# Input
SOURCES += src\main.cpp
TRANSLATIONS = ts\project.ts
-
-
-!exists(ts) {
- win32: system(md ts)
- else: system(mkdir ts)
-}
diff --git a/tests/auto/linguist/lupdate/testdata/good/backslashes/project.ts.result b/tests/auto/linguist/lupdate/testdata/good/backslashes/ts/project.ts.result
index d3a5fdf9e4..d3a5fdf9e4 100644
--- a/tests/auto/linguist/lupdate/testdata/good/backslashes/project.ts.result
+++ b/tests/auto/linguist/lupdate/testdata/good/backslashes/ts/project.ts.result
diff --git a/tests/auto/linguist/lupdate/testdata/good/codecforsrc/project.pro b/tests/auto/linguist/lupdate/testdata/good/codecforsrc/project.pro
index 848ebda266..7225608b80 100644
--- a/tests/auto/linguist/lupdate/testdata/good/codecforsrc/project.pro
+++ b/tests/auto/linguist/lupdate/testdata/good/codecforsrc/project.pro
@@ -1,20 +1,7 @@
-TEMPLATE = app
-TARGET +=
-DEPENDPATH += .
-INCLUDEPATH += .
-
-# Input
SOURCES += main.cpp
+CONFIG+= console
TRANSLATIONS = project.ts
-CONFIG+= console
CODECFORTR = utf-8
CODECFORSRC = utf-8
-
-exists( $$TRANSLATIONS ) {
- win32: system(del $$TRANSLATIONS)
- unix: system(rm $$TRANSLATIONS)
-}
-
-
diff --git a/tests/auto/linguist/lupdate/testdata/good/codecfortr/project.pro b/tests/auto/linguist/lupdate/testdata/good/codecfortr/project.pro
index 81273ee3ca..64f3c8590c 100644
--- a/tests/auto/linguist/lupdate/testdata/good/codecfortr/project.pro
+++ b/tests/auto/linguist/lupdate/testdata/good/codecfortr/project.pro
@@ -1,19 +1,6 @@
-TEMPLATE = app
-TARGET +=
-DEPENDPATH += .
-INCLUDEPATH += .
-
-# Input
SOURCES += main.cpp
+CONFIG+= console
TRANSLATIONS = project.ts
-CONFIG+= console
CODECFORTR = CP1251
-
-exists( $$TRANSLATIONS ) {
- win32: system(del $$TRANSLATIONS)
- unix: system(rm $$TRANSLATIONS)
-}
-
-
diff --git a/tests/auto/linguist/lupdate/testdata/good/codecfortr1/project.pro b/tests/auto/linguist/lupdate/testdata/good/codecfortr1/project.pro
index 1d5b0710df..d5697ebb9a 100644
--- a/tests/auto/linguist/lupdate/testdata/good/codecfortr1/project.pro
+++ b/tests/auto/linguist/lupdate/testdata/good/codecfortr1/project.pro
@@ -1,15 +1,6 @@
-TEMPLATE = app
-
SOURCES += main.cpp
+CONFIG += console
TRANSLATIONS = project.ts
-CONFIG += console
CODECFORTR = CP1252
-
-exists( $$TRANSLATIONS ) {
- win32: system(del $$TRANSLATIONS)
- unix: system(rm $$TRANSLATIONS)
-}
-
-
diff --git a/tests/auto/linguist/lupdate/testdata/good/codecfortr2/project.pro b/tests/auto/linguist/lupdate/testdata/good/codecfortr2/project.pro
index f4975f208e..c95939c3bf 100644
--- a/tests/auto/linguist/lupdate/testdata/good/codecfortr2/project.pro
+++ b/tests/auto/linguist/lupdate/testdata/good/codecfortr2/project.pro
@@ -1,16 +1,7 @@
-TEMPLATE = app
-
SOURCES += main.cpp
+CONFIG += console
TRANSLATIONS = project.ts
-CONFIG += console
CODECFORSRC = CP1252
CODECFORTR = UTF-8
-
-exists( $$TRANSLATIONS ) {
- win32: system(del $$TRANSLATIONS)
- unix: system(rm $$TRANSLATIONS)
-}
-
-
diff --git a/tests/auto/linguist/lupdate/testdata/good/heuristics/expectedoutput.txt b/tests/auto/linguist/lupdate/testdata/good/heuristics/expectedoutput.txt
new file mode 100644
index 0000000000..093610dbdb
--- /dev/null
+++ b/tests/auto/linguist/lupdate/testdata/good/heuristics/expectedoutput.txt
@@ -0,0 +1,6 @@
+*.*Function 'eval' is not implemented
+Updating 'project\.ts'\.\.\.
+ Found 3 source text\(s\) \(3 new and 0 already existing\)
+ Removed 5 obsolete entries
+ Number heuristic provided 1 translation\(s\)
+ Same-text heuristic provided 1 translation\(s\)
diff --git a/tests/auto/linguist/lupdate/testdata/good/heuristics/lupdatecmd b/tests/auto/linguist/lupdate/testdata/good/heuristics/lupdatecmd
new file mode 100644
index 0000000000..6bda26175c
--- /dev/null
+++ b/tests/auto/linguist/lupdate/testdata/good/heuristics/lupdatecmd
@@ -0,0 +1,2 @@
+TRANSLATION: project.ts
+lupdate -verbose -disable-heuristic similartext -no-obsolete project.pro
diff --git a/tests/auto/linguist/lupdate/testlupdate.h b/tests/auto/linguist/lupdate/testdata/good/heuristics/main.cpp
index 0b670579d6..542c2284ae 100644
--- a/tests/auto/linguist/lupdate/testlupdate.h
+++ b/tests/auto/linguist/lupdate/testdata/good/heuristics/main.cpp
@@ -4,7 +4,7 @@
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
-** This file is part of the Qt Linguist of the Qt Toolkit.
+** This file is part of the test suite of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** No Commercial Usage
@@ -39,49 +39,24 @@
**
****************************************************************************/
-#ifndef TESTLUPDATE_H
-#define TESTLUPDATE_H
+// IMPORTANT!!!! If you want to add testdata to this file,
+// always add it to the end in order to not change the linenumbers of translations!!!
-#include <QObject>
-#include <QProcess>
-#include <QStringList>
+#define QTCORE <QtCore>
+#include QTCORE // Hidden from lupdate, but compiles
-class TestLUpdate : public QObject
-{
+class A: public QObject {
Q_OBJECT
+ void foo()
+ {
+ // number Heuristics
+ tr("version 2.0 now");
-public:
- TestLUpdate();
- virtual ~TestLUpdate();
+ // same text match
+ tr("this is the matched same text");
- void setWorkingDirectory( const QString &workDir);
- bool run( const QString &commandline);
- bool updateProFile( const QString &arguments);
- bool qmake();
- QStringList getErrorMessages() {
- return make_result;
+ // failed same text
+ tr("this is the non-matched same text");
}
- void clearResult() {
- make_result.clear();
- }
-private:
- QString m_cmdLupdate;
- QString m_cmdQMake;
- QString m_workDir;
- QProcess *childProc;
- QStringList env_list;
- QStringList make_result;
-
- bool child_show;
- bool qws_mode;
- bool exit_ok;
-
- bool runChild( bool showOutput, const QString &program, const QStringList &argList = QStringList());
- void addMakeResult( const QString &result );
- void childHasData();
-
-private slots:
- void childReady(int exitCode);
};
-#endif // TESTLUPDATE_H
diff --git a/tests/auto/linguist/lupdate/testdata/good/heuristics/project.pro b/tests/auto/linguist/lupdate/testdata/good/heuristics/project.pro
new file mode 100644
index 0000000000..759bea0682
--- /dev/null
+++ b/tests/auto/linguist/lupdate/testdata/good/heuristics/project.pro
@@ -0,0 +1,3 @@
+SOURCES = main.cpp
+
+TRANSLATIONS = project.ts
diff --git a/tests/auto/linguist/lupdate/testdata/good/heuristics/project.ts.before b/tests/auto/linguist/lupdate/testdata/good/heuristics/project.ts.before
new file mode 100644
index 0000000000..ce82810336
--- /dev/null
+++ b/tests/auto/linguist/lupdate/testdata/good/heuristics/project.ts.before
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+ <name>A</name>
+ <message>
+ <location filename="main.cpp" line="53"/>
+ <source>version 1.0 now</source>
+ <translation>teraz wersja 1.0</translation>
+ </message>
+</context>
+<context>
+ <name>B</name>
+ <message>
+ <location filename="main.cpp" line="56"/>
+ <source>this is the matched same text</source>
+ <translation>der same-text-treffer</translation>
+ </message>
+ <message>
+ <location filename="main.cpp" line="59"/>
+ <source>this is the non-matched same text</source>
+ <translation>same-text-reinfall variante eins</translation>
+ </message>
+</context>
+<context>
+ <name>C</name>
+ <message>
+ <location filename="main.cpp" line="56"/>
+ <source>this is the matched same text</source>
+ <translation>der same-text-treffer</translation>
+ </message>
+ <message>
+ <location filename="main.cpp" line="59"/>
+ <source>this is the non-matched same text</source>
+ <translation>völlig andere variante des reinfalls mit same-text</translation>
+ </message>
+</context>
+</TS>
diff --git a/tests/auto/linguist/lupdate/testdata/good/heuristics/project.ts.result b/tests/auto/linguist/lupdate/testdata/good/heuristics/project.ts.result
new file mode 100644
index 0000000000..402ad9a9bc
--- /dev/null
+++ b/tests/auto/linguist/lupdate/testdata/good/heuristics/project.ts.result
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+ <name>A</name>
+ <message>
+ <location filename="main.cpp" line="53"/>
+ <source>version 2.0 now</source>
+ <translation type="unfinished">teraz wersja 1.0 {2.0 ?}</translation>
+ </message>
+ <message>
+ <location filename="main.cpp" line="56"/>
+ <source>this is the matched same text</source>
+ <translation type="unfinished">der same-text-treffer</translation>
+ </message>
+ <message>
+ <location filename="main.cpp" line="59"/>
+ <source>this is the non-matched same text</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/tests/auto/linguist/lupdate/testdata/good/lacksqobject/project.pro b/tests/auto/linguist/lupdate/testdata/good/lacksqobject/project.pro
index 7547a8d0e5..759bea0682 100644
--- a/tests/auto/linguist/lupdate/testdata/good/lacksqobject/project.pro
+++ b/tests/auto/linguist/lupdate/testdata/good/lacksqobject/project.pro
@@ -1,12 +1,3 @@
-TEMPLATE = app
-LANGUAGE = C++
-
SOURCES = main.cpp
-TRANSLATIONS += project.ts
-
-exists( $$TRANSLATIONS ) {
- win32: system(del $$TRANSLATIONS)
- unix: system(rm $$TRANSLATIONS)
-}
-
+TRANSLATIONS = project.ts
diff --git a/tests/auto/linguist/lupdate/testdata/good/merge_ordering/lupdatecmd b/tests/auto/linguist/lupdate/testdata/good/merge_ordering/lupdatecmd
index 91a480048d..82b4b0d6fc 100644
--- a/tests/auto/linguist/lupdate/testdata/good/merge_ordering/lupdatecmd
+++ b/tests/auto/linguist/lupdate/testdata/good/merge_ordering/lupdatecmd
@@ -1,5 +1 @@
-# Add the command that lupdate should run here. If it can't find anything it will default to
-# 'lupdate project.pro -ts project.ts'
-
-# lupdate project.pro
-lupdate -silent -locations relative project.pro
+lupdate -locations relative project.pro
diff --git a/tests/auto/linguist/lupdate/testdata/good/merge_ordering/project.pro b/tests/auto/linguist/lupdate/testdata/good/merge_ordering/project.pro
index e79456f9ac..614985830d 100644
--- a/tests/auto/linguist/lupdate/testdata/good/merge_ordering/project.pro
+++ b/tests/auto/linguist/lupdate/testdata/good/merge_ordering/project.pro
@@ -1,14 +1,3 @@
-TEMPLATE = app
-LANGUAGE = C++
-
SOURCES += foo.cpp
-TRANSLATIONS = project.ts
-
-# Copy the ts to a temp file because:
-# 1. The depot file is usually read-only
-# 2. We don't want to modify the original file, since then it won't be possible to run the test twice
-# without reverting the original file again.
-
-win32: system(copy /Y project.ts.before $$TRANSLATIONS)
-unix: system(cp -f project.ts.before $$TRANSLATIONS && chmod a+w $$TRANSLATIONS)
+TRANSLATIONS = project.ts
diff --git a/tests/auto/linguist/lupdate/testdata/good/merge_versions/project.pro b/tests/auto/linguist/lupdate/testdata/good/merge_versions/project.pro
index 6c704c22b1..fa56972dd2 100644
--- a/tests/auto/linguist/lupdate/testdata/good/merge_versions/project.pro
+++ b/tests/auto/linguist/lupdate/testdata/good/merge_versions/project.pro
@@ -1,14 +1,3 @@
-TEMPLATE = app
-LANGUAGE = C++
-
FORMS += project.ui
-TRANSLATIONS = project.ts
-
-# Copy the ts to a temp file because:
-# 1. The depot file is usually read-only
-# 2. We don't want to modify the original file, since then it won't be possible to run the test twice
-# without reverting the original file again.
-
-win32: system(copy /Y project.ts.before $$TRANSLATIONS)
-unix: system(cp -f project.ts.before $$TRANSLATIONS && chmod a+w $$TRANSLATIONS)
+TRANSLATIONS = project.ts
diff --git a/tests/auto/linguist/lupdate/testdata/good/merge_whitespace/project.pro b/tests/auto/linguist/lupdate/testdata/good/merge_whitespace/project.pro
index f4faf2fe1f..759bea0682 100644
--- a/tests/auto/linguist/lupdate/testdata/good/merge_whitespace/project.pro
+++ b/tests/auto/linguist/lupdate/testdata/good/merge_whitespace/project.pro
@@ -1,14 +1,3 @@
-TEMPLATE = app
-LANGUAGE = C++
-
SOURCES = main.cpp
-TRANSLATIONS = project.ts
-
-# Copy the ts to a temp file because:
-# 1. The depot file is usually read-only
-# 2. We don't want to modify the original file, since then it won't be possible to run the test twice
-# without reverting the original file again.
-
-win32: system(copy /Y project.ts.before $$TRANSLATIONS)
-unix: system(cp -f project.ts.before $$TRANSLATIONS && chmod a+w $$TRANSLATIONS)
+TRANSLATIONS = project.ts
diff --git a/tests/auto/linguist/lupdate/testdata/good/mergecpp/project.pro b/tests/auto/linguist/lupdate/testdata/good/mergecpp/project.pro
index e988c0ab6d..63f5d66e24 100644
--- a/tests/auto/linguist/lupdate/testdata/good/mergecpp/project.pro
+++ b/tests/auto/linguist/lupdate/testdata/good/mergecpp/project.pro
@@ -1,14 +1,3 @@
-TEMPLATE = app
-LANGUAGE = C++
-
SOURCES += finddialog.cpp
-TRANSLATIONS = project.ts
-
-# Copy the ts to a temp file because:
-# 1. The depot file is usually read-only
-# 2. We don't want to modify the original file, since then it won't be possible to run the test twice
-# without reverting the original file again.
-
-win32: system(copy /Y project.ts.before $$TRANSLATIONS)
-unix: system(cp -f project.ts.before $$TRANSLATIONS && chmod a+w $$TRANSLATIONS)
+TRANSLATIONS = project.ts
diff --git a/tests/auto/linguist/lupdate/testdata/good/mergecpp_noobsolete/lupdatecmd b/tests/auto/linguist/lupdate/testdata/good/mergecpp_noobsolete/lupdatecmd
index d2001439b8..500a822470 100644
--- a/tests/auto/linguist/lupdate/testdata/good/mergecpp_noobsolete/lupdatecmd
+++ b/tests/auto/linguist/lupdate/testdata/good/mergecpp_noobsolete/lupdatecmd
@@ -1,5 +1 @@
-# Add the command that lupdate should run here. If it can't find anything it will default to
-# 'lupdate project.pro -ts project.ts'
-
-# lupdate project.pro
-lupdate -silent -noobsolete project.pro
+lupdate -noobsolete project.pro
diff --git a/tests/auto/linguist/lupdate/testdata/good/mergecpp_noobsolete/project.pro b/tests/auto/linguist/lupdate/testdata/good/mergecpp_noobsolete/project.pro
index e988c0ab6d..63f5d66e24 100644
--- a/tests/auto/linguist/lupdate/testdata/good/mergecpp_noobsolete/project.pro
+++ b/tests/auto/linguist/lupdate/testdata/good/mergecpp_noobsolete/project.pro
@@ -1,14 +1,3 @@
-TEMPLATE = app
-LANGUAGE = C++
-
SOURCES += finddialog.cpp
-TRANSLATIONS = project.ts
-
-# Copy the ts to a temp file because:
-# 1. The depot file is usually read-only
-# 2. We don't want to modify the original file, since then it won't be possible to run the test twice
-# without reverting the original file again.
-
-win32: system(copy /Y project.ts.before $$TRANSLATIONS)
-unix: system(cp -f project.ts.before $$TRANSLATIONS && chmod a+w $$TRANSLATIONS)
+TRANSLATIONS = project.ts
diff --git a/tests/auto/linguist/lupdate/testdata/good/mergecpp_obsolete/project.pro b/tests/auto/linguist/lupdate/testdata/good/mergecpp_obsolete/project.pro
index e988c0ab6d..63f5d66e24 100644
--- a/tests/auto/linguist/lupdate/testdata/good/mergecpp_obsolete/project.pro
+++ b/tests/auto/linguist/lupdate/testdata/good/mergecpp_obsolete/project.pro
@@ -1,14 +1,3 @@
-TEMPLATE = app
-LANGUAGE = C++
-
SOURCES += finddialog.cpp
-TRANSLATIONS = project.ts
-
-# Copy the ts to a temp file because:
-# 1. The depot file is usually read-only
-# 2. We don't want to modify the original file, since then it won't be possible to run the test twice
-# without reverting the original file again.
-
-win32: system(copy /Y project.ts.before $$TRANSLATIONS)
-unix: system(cp -f project.ts.before $$TRANSLATIONS && chmod a+w $$TRANSLATIONS)
+TRANSLATIONS = project.ts
diff --git a/tests/auto/linguist/lupdate/testdata/good/mergeui/project.pro b/tests/auto/linguist/lupdate/testdata/good/mergeui/project.pro
index 28ba29116d..fa56972dd2 100644
--- a/tests/auto/linguist/lupdate/testdata/good/mergeui/project.pro
+++ b/tests/auto/linguist/lupdate/testdata/good/mergeui/project.pro
@@ -1,14 +1,3 @@
-TEMPLATE = app
-LANGUAGE = C++
-
FORMS += project.ui
-TRANSLATIONS = project.ts
-
-# Copy the ts to a temp file because:
-# 1. The depot file is usually read-only
-# 2. We don't want to modify the original file, since then it won't be possible to run the test twice
-# without reverting the original file again.
-
-win32: system(copy /Y project.ts.before $$TRANSLATIONS)
-unix: system(cp -f project.ts.before $$TRANSLATIONS && chmod a+w $$TRANSLATIONS)
+TRANSLATIONS = project.ts
diff --git a/tests/auto/linguist/lupdate/testdata/good/mergeui_obsolete/project.pro b/tests/auto/linguist/lupdate/testdata/good/mergeui_obsolete/project.pro
index 28ba29116d..fa56972dd2 100644
--- a/tests/auto/linguist/lupdate/testdata/good/mergeui_obsolete/project.pro
+++ b/tests/auto/linguist/lupdate/testdata/good/mergeui_obsolete/project.pro
@@ -1,14 +1,3 @@
-TEMPLATE = app
-LANGUAGE = C++
-
FORMS += project.ui
-TRANSLATIONS = project.ts
-
-# Copy the ts to a temp file because:
-# 1. The depot file is usually read-only
-# 2. We don't want to modify the original file, since then it won't be possible to run the test twice
-# without reverting the original file again.
-
-win32: system(copy /Y project.ts.before $$TRANSLATIONS)
-unix: system(cp -f project.ts.before $$TRANSLATIONS && chmod a+w $$TRANSLATIONS)
+TRANSLATIONS = project.ts
diff --git a/tests/auto/linguist/lupdate/testdata/good/multiple_locations/project.pro b/tests/auto/linguist/lupdate/testdata/good/multiple_locations/project.pro
index 4582705946..bbabdfba28 100644
--- a/tests/auto/linguist/lupdate/testdata/good/multiple_locations/project.pro
+++ b/tests/auto/linguist/lupdate/testdata/good/multiple_locations/project.pro
@@ -1,13 +1,4 @@
-TEMPLATE = app
-LANGUAGE = C++
-
SOURCES += main.cpp
SOURCES += finddialog.cpp
-TRANSLATIONS += project.ts
-
-exists( $$TRANSLATIONS ) {
- win32: system(del $$TRANSLATIONS)
- unix: system(rm $$TRANSLATIONS)
-}
-
+TRANSLATIONS = project.ts
diff --git a/tests/auto/linguist/lupdate/testdata/good/namespaces/project.pro b/tests/auto/linguist/lupdate/testdata/good/namespaces/project.pro
index 56d472c055..c96859bdb0 100644
--- a/tests/auto/linguist/lupdate/testdata/good/namespaces/project.pro
+++ b/tests/auto/linguist/lupdate/testdata/good/namespaces/project.pro
@@ -1,12 +1,3 @@
-TEMPLATE = app
-LANGUAGE = C++
-
SOURCES += main.cpp
-TRANSLATIONS += project.ts
-
-exists( $$TRANSLATIONS ) {
- win32: system(del $$TRANSLATIONS)
- unix: system(rm $$TRANSLATIONS)
-}
-
+TRANSLATIONS = project.ts
diff --git a/tests/auto/linguist/lupdate/testdata/good/parse_special_chars/project.pro b/tests/auto/linguist/lupdate/testdata/good/parse_special_chars/project.pro
index cb18ea4b1b..c96859bdb0 100644
--- a/tests/auto/linguist/lupdate/testdata/good/parse_special_chars/project.pro
+++ b/tests/auto/linguist/lupdate/testdata/good/parse_special_chars/project.pro
@@ -1,12 +1,3 @@
-TEMPLATE = app
-LANGUAGE = C++
-
SOURCES += main.cpp
-TRANSLATIONS += project.ts
-
-exists( $$TRANSLATIONS ) {
- win32: system(del $$TRANSLATIONS)
- unix: system(rm $$TRANSLATIONS)
-}
-
+TRANSLATIONS = project.ts
diff --git a/tests/auto/linguist/lupdate/testdata/good/parsecontexts/project.pro b/tests/auto/linguist/lupdate/testdata/good/parsecontexts/project.pro
index 7547a8d0e5..759bea0682 100644
--- a/tests/auto/linguist/lupdate/testdata/good/parsecontexts/project.pro
+++ b/tests/auto/linguist/lupdate/testdata/good/parsecontexts/project.pro
@@ -1,12 +1,3 @@
-TEMPLATE = app
-LANGUAGE = C++
-
SOURCES = main.cpp
-TRANSLATIONS += project.ts
-
-exists( $$TRANSLATIONS ) {
- win32: system(del $$TRANSLATIONS)
- unix: system(rm $$TRANSLATIONS)
-}
-
+TRANSLATIONS = project.ts
diff --git a/tests/auto/linguist/lupdate/testdata/good/parsecpp/project.pro b/tests/auto/linguist/lupdate/testdata/good/parsecpp/project.pro
index 4582705946..bbabdfba28 100644
--- a/tests/auto/linguist/lupdate/testdata/good/parsecpp/project.pro
+++ b/tests/auto/linguist/lupdate/testdata/good/parsecpp/project.pro
@@ -1,13 +1,4 @@
-TEMPLATE = app
-LANGUAGE = C++
-
SOURCES += main.cpp
SOURCES += finddialog.cpp
-TRANSLATIONS += project.ts
-
-exists( $$TRANSLATIONS ) {
- win32: system(del $$TRANSLATIONS)
- unix: system(rm $$TRANSLATIONS)
-}
-
+TRANSLATIONS = project.ts
diff --git a/tests/auto/linguist/lupdate/testdata/good/parsecpp2/expectedoutput.txt b/tests/auto/linguist/lupdate/testdata/good/parsecpp2/expectedoutput.txt
index 8d057d8fbb..e3543c958d 100644
--- a/tests/auto/linguist/lupdate/testdata/good/parsecpp2/expectedoutput.txt
+++ b/tests/auto/linguist/lupdate/testdata/good/parsecpp2/expectedoutput.txt
@@ -5,3 +5,4 @@
.*/lupdate/testdata/good/parsecpp2/main.cpp:61: Excess closing brace .*
.*/lupdate/testdata/good/parsecpp2/main.cpp:65: Excess closing brace .*
+
diff --git a/tests/auto/linguist/lupdate/testdata/good/parsecpp2/project.pro b/tests/auto/linguist/lupdate/testdata/good/parsecpp2/project.pro
index 7547a8d0e5..759bea0682 100644
--- a/tests/auto/linguist/lupdate/testdata/good/parsecpp2/project.pro
+++ b/tests/auto/linguist/lupdate/testdata/good/parsecpp2/project.pro
@@ -1,12 +1,3 @@
-TEMPLATE = app
-LANGUAGE = C++
-
SOURCES = main.cpp
-TRANSLATIONS += project.ts
-
-exists( $$TRANSLATIONS ) {
- win32: system(del $$TRANSLATIONS)
- unix: system(rm $$TRANSLATIONS)
-}
-
+TRANSLATIONS = project.ts
diff --git a/tests/auto/linguist/lupdate/testdata/good/parsejava/project.pro b/tests/auto/linguist/lupdate/testdata/good/parsejava/project.pro
index 7e64c80e90..657b535e27 100644
--- a/tests/auto/linguist/lupdate/testdata/good/parsejava/project.pro
+++ b/tests/auto/linguist/lupdate/testdata/good/parsejava/project.pro
@@ -1,12 +1,3 @@
-TEMPLATE = app
-LANGUAGE = Java
-
SOURCES += main.java
-TRANSLATIONS += project.ts
-
-exists( $$TRANSLATIONS ) {
- win32: system(del $$TRANSLATIONS)
- unix: system(rm $$TRANSLATIONS)
-}
-
+TRANSLATIONS = project.ts
diff --git a/tests/auto/linguist/lupdate/testdata/good/parseui/project.pro b/tests/auto/linguist/lupdate/testdata/good/parseui/project.pro
index bdc06e7c78..fa56972dd2 100644
--- a/tests/auto/linguist/lupdate/testdata/good/parseui/project.pro
+++ b/tests/auto/linguist/lupdate/testdata/good/parseui/project.pro
@@ -1,13 +1,3 @@
-TEMPLATE = app
-LANGUAGE = C++
-
FORMS += project.ui
-TRANSLATIONS = project.ts
-
-exists( $$TRANSLATIONS ) {
- win32 : system(del $$TRANSLATIONS)
- unix : system(rm $$TRANSLATIONS)
-}
-
-
+TRANSLATIONS = project.ts
diff --git a/tests/auto/linguist/lupdate/testdata/good/prefix/project.pro b/tests/auto/linguist/lupdate/testdata/good/prefix/project.pro
index 7547a8d0e5..759bea0682 100644
--- a/tests/auto/linguist/lupdate/testdata/good/prefix/project.pro
+++ b/tests/auto/linguist/lupdate/testdata/good/prefix/project.pro
@@ -1,12 +1,3 @@
-TEMPLATE = app
-LANGUAGE = C++
-
SOURCES = main.cpp
-TRANSLATIONS += project.ts
-
-exists( $$TRANSLATIONS ) {
- win32: system(del $$TRANSLATIONS)
- unix: system(rm $$TRANSLATIONS)
-}
-
+TRANSLATIONS = project.ts
diff --git a/tests/auto/linguist/lupdate/testdata/good/preprocess/project.pro b/tests/auto/linguist/lupdate/testdata/good/preprocess/project.pro
index 012c7e08aa..c96859bdb0 100644
--- a/tests/auto/linguist/lupdate/testdata/good/preprocess/project.pro
+++ b/tests/auto/linguist/lupdate/testdata/good/preprocess/project.pro
@@ -1,12 +1,3 @@
-TEMPLATE = app
-LANGUAGE = C++
-
SOURCES += main.cpp
-TRANSLATIONS += project.ts
-
-exists( $$TRANSLATIONS ) {
- win32: system(del $$TRANSLATIONS)
- unix: system(rm -f $$TRANSLATIONS)
-}
-
+TRANSLATIONS = project.ts
diff --git a/tests/auto/linguist/lupdate/testdata/good/proparsing/project.pro b/tests/auto/linguist/lupdate/testdata/good/proparsing/project.pro
index 3078817b31..0e920f99d6 100644
--- a/tests/auto/linguist/lupdate/testdata/good/proparsing/project.pro
+++ b/tests/auto/linguist/lupdate/testdata/good/proparsing/project.pro
@@ -1,6 +1,3 @@
-TEMPLATE = app
-LANGUAGE = C++
-
# Try to reference a variable that does not exist:
MYVAR=$$THIS_VARIABLE_IS_NOT_DEFINED
@@ -31,10 +28,4 @@ if (exists($$member($$(PATH), 0))) {
SOURCES += main_dependpath.cpp
}
-TRANSLATIONS += project.ts
-
-exists( $$TRANSLATIONS ) {
- win32: system(del $$TRANSLATIONS)
- unix: system(rm -f $$TRANSLATIONS)
-}
-
+TRANSLATIONS = project.ts
diff --git a/tests/auto/linguist/lupdate/testdata/good/proparsing2/project.pro b/tests/auto/linguist/lupdate/testdata/good/proparsing2/project.pro
index 1d6895a892..3dc4208587 100644
--- a/tests/auto/linguist/lupdate/testdata/good/proparsing2/project.pro
+++ b/tests/auto/linguist/lupdate/testdata/good/proparsing2/project.pro
@@ -3,9 +3,6 @@
# It also tries to verify the behaviour of combining quoted and non-quoted elements with literals.
#
-TEMPLATE = app
-LANGUAGE = C++
-
QUOTED = $$quote(variable with spaces)
VERSIONAB = "a.b"
VAB = $$split(VERSIONAB, ".")
@@ -33,10 +30,4 @@ SOURCES += $$Q3
win32: SOURCES += $$system(type files-cc.txt)
unix: SOURCES += $$system(cat files-cc.txt)
-TRANSLATIONS += project.ts
-
-exists( $$TRANSLATIONS ) {
- win32: system(del $$TRANSLATIONS)
- unix: system(rm $$TRANSLATIONS)
-}
-
+TRANSLATIONS = project.ts
diff --git a/tests/auto/linguist/lupdate/testdata/good/proparsingpaths/project.pro b/tests/auto/linguist/lupdate/testdata/good/proparsingpaths/project.pro
index 820b4fab04..6bfe751f4b 100644
--- a/tests/auto/linguist/lupdate/testdata/good/proparsingpaths/project.pro
+++ b/tests/auto/linguist/lupdate/testdata/good/proparsingpaths/project.pro
@@ -3,8 +3,3 @@ SOURCES += file*.cpp filter.cpp non-existing.cpp
include(sub/sub.pri)
TRANSLATIONS = project.ts
-
-exists( $$TRANSLATIONS ) {
- win32: system(del $$TRANSLATIONS)
- unix: system(rm -f $$TRANSLATIONS)
-}
diff --git a/tests/auto/linguist/lupdate/testdata/good/proparsingpri/project.pro b/tests/auto/linguist/lupdate/testdata/good/proparsingpri/project.pro
index 3810a02c13..5e23538b95 100644
--- a/tests/auto/linguist/lupdate/testdata/good/proparsingpri/project.pro
+++ b/tests/auto/linguist/lupdate/testdata/good/proparsingpri/project.pro
@@ -1,6 +1,3 @@
-TEMPLATE = app
-LANGUAGE = C++
-
include(win/win.pri)
include(mac/mac.pri)
include(unix/unix.pri)
@@ -8,9 +5,5 @@ include (common/common.pri) # Important: keep the space before the '
include(relativity/relativity.pri)
message($$SOURCES)
-TRANSLATIONS = project.ts
-exists( $$TRANSLATIONS ) {
- win32: system(del $$TRANSLATIONS)
- unix: system(rm $$TRANSLATIONS)
-}
+TRANSLATIONS = project.ts
diff --git a/tests/auto/linguist/lupdate/testdata/good/proparsingsubdirs/project.pro b/tests/auto/linguist/lupdate/testdata/good/proparsingsubdirs/project.pro
index 4de6622138..88f2435710 100644
--- a/tests/auto/linguist/lupdate/testdata/good/proparsingsubdirs/project.pro
+++ b/tests/auto/linguist/lupdate/testdata/good/proparsingsubdirs/project.pro
@@ -1,3 +1,2 @@
-TEMPLATE =subdirs
-
-SUBDIRS = sub1
+TEMPLATE = subdirs
+SUBDIRS = sub1
diff --git a/tests/auto/linguist/lupdate/testdata/good/proparsingsubdirs/sub1/sub1.pro b/tests/auto/linguist/lupdate/testdata/good/proparsingsubdirs/sub1/sub1.pro
index 1d50c2b0f0..df18c5a694 100644
--- a/tests/auto/linguist/lupdate/testdata/good/proparsingsubdirs/sub1/sub1.pro
+++ b/tests/auto/linguist/lupdate/testdata/good/proparsingsubdirs/sub1/sub1.pro
@@ -1,12 +1,3 @@
-TEMPLATE = app
-LANGUAGE = C++
-
SOURCES += main.cpp
-TRANSLATIONS += ../project.ts
-
-exists( $$TRANSLATIONS ) {
- win32: system(del $$TRANSLATIONS)
- unix: system(rm -f $$TRANSLATIONS)
-}
-
+TRANSLATIONS = ../project.ts
diff --git a/tests/auto/linguist/lupdate/testdata/good/proparsingsubs/common/common.pro b/tests/auto/linguist/lupdate/testdata/good/proparsingsubs/common/common.pro
index a8b3106ed2..3f6c64360b 100644
--- a/tests/auto/linguist/lupdate/testdata/good/proparsingsubs/common/common.pro
+++ b/tests/auto/linguist/lupdate/testdata/good/proparsingsubs/common/common.pro
@@ -1,5 +1,2 @@
-TEMPLATE = app
-LANGUAGE = C++
-
-SOURCES += main.cpp
+SOURCES += main.cpp
diff --git a/tests/auto/linguist/lupdate/testdata/good/proparsingsubs/lupdatecmd b/tests/auto/linguist/lupdate/testdata/good/proparsingsubs/lupdatecmd
new file mode 100644
index 0000000000..b7e12cc45c
--- /dev/null
+++ b/tests/auto/linguist/lupdate/testdata/good/proparsingsubs/lupdatecmd
@@ -0,0 +1 @@
+lupdate project.pro -ts project.ts
diff --git a/tests/auto/linguist/lupdate/testdata/good/proparsingsubs/mac/mac.pro b/tests/auto/linguist/lupdate/testdata/good/proparsingsubs/mac/mac.pro
index 87478bf88a..a1863b665d 100644
--- a/tests/auto/linguist/lupdate/testdata/good/proparsingsubs/mac/mac.pro
+++ b/tests/auto/linguist/lupdate/testdata/good/proparsingsubs/mac/mac.pro
@@ -1,5 +1 @@
-TEMPLATE = app
-LANGUAGE = C++
-
-SOURCES += main_mac.cpp
-
+SOURCES += main_mac.cpp
diff --git a/tests/auto/linguist/lupdate/testdata/good/proparsingsubs/project.pro b/tests/auto/linguist/lupdate/testdata/good/proparsingsubs/project.pro
index 668ecf480f..f75a462766 100644
--- a/tests/auto/linguist/lupdate/testdata/good/proparsingsubs/project.pro
+++ b/tests/auto/linguist/lupdate/testdata/good/proparsingsubs/project.pro
@@ -1,7 +1,2 @@
TEMPLATE = subdirs
SUBDIRS = win mac unix common
-
-exists( project.ts ) {
- win32: system(del project.ts)
- unix: system(rm project.ts)
-}
diff --git a/tests/auto/linguist/lupdate/testdata/good/proparsingsubs/unix/unix.pro b/tests/auto/linguist/lupdate/testdata/good/proparsingsubs/unix/unix.pro
index d0ebec72d6..71b1a22521 100644
--- a/tests/auto/linguist/lupdate/testdata/good/proparsingsubs/unix/unix.pro
+++ b/tests/auto/linguist/lupdate/testdata/good/proparsingsubs/unix/unix.pro
@@ -1,5 +1 @@
-TEMPLATE = app
-LANGUAGE = C++
-
-SOURCES += main_unix.cpp
-
+SOURCES += main_unix.cpp
diff --git a/tests/auto/linguist/lupdate/testdata/good/proparsingsubs/win/win.pro b/tests/auto/linguist/lupdate/testdata/good/proparsingsubs/win/win.pro
index a9a975139c..afd7197117 100644
--- a/tests/auto/linguist/lupdate/testdata/good/proparsingsubs/win/win.pro
+++ b/tests/auto/linguist/lupdate/testdata/good/proparsingsubs/win/win.pro
@@ -1,5 +1 @@
-TEMPLATE = app
-LANGUAGE = C++
-
-SOURCES += main_win.cpp
-
+SOURCES += main_win.cpp
diff --git a/tests/auto/linguist/lupdate/testdata/good/reloutput/lupdatecmd b/tests/auto/linguist/lupdate/testdata/good/reloutput/lupdatecmd
new file mode 100644
index 0000000000..da6103fef3
--- /dev/null
+++ b/tests/auto/linguist/lupdate/testdata/good/reloutput/lupdatecmd
@@ -0,0 +1,2 @@
+TRANSLATION: translations/project.ts
+lupdate project.pro -ts translations/project.ts
diff --git a/tests/auto/linguist/lupdate/testdata/output_ts/toplevel/library/tools/main.cpp b/tests/auto/linguist/lupdate/testdata/good/reloutput/main.cpp
index 257b240180..257b240180 100644
--- a/tests/auto/linguist/lupdate/testdata/output_ts/toplevel/library/tools/main.cpp
+++ b/tests/auto/linguist/lupdate/testdata/good/reloutput/main.cpp
diff --git a/tests/auto/linguist/lupdate/testdata/good/reloutput/project.pro b/tests/auto/linguist/lupdate/testdata/good/reloutput/project.pro
new file mode 100644
index 0000000000..4e2e6ada78
--- /dev/null
+++ b/tests/auto/linguist/lupdate/testdata/good/reloutput/project.pro
@@ -0,0 +1,3 @@
+SOURCES += main.cpp
+
+TRANSLATIONS = translations/project.ts
diff --git a/tests/auto/linguist/lupdate/testdata/output_ts/project.ts.result b/tests/auto/linguist/lupdate/testdata/good/reloutput/translations/project.ts.result
index e398701c94..e398701c94 100644
--- a/tests/auto/linguist/lupdate/testdata/output_ts/project.ts.result
+++ b/tests/auto/linguist/lupdate/testdata/good/reloutput/translations/project.ts.result
diff --git a/tests/auto/linguist/lupdate/testdata/good/textsimilarity/project.pro b/tests/auto/linguist/lupdate/testdata/good/textsimilarity/project.pro
index 28ba29116d..fa56972dd2 100644
--- a/tests/auto/linguist/lupdate/testdata/good/textsimilarity/project.pro
+++ b/tests/auto/linguist/lupdate/testdata/good/textsimilarity/project.pro
@@ -1,14 +1,3 @@
-TEMPLATE = app
-LANGUAGE = C++
-
FORMS += project.ui
-TRANSLATIONS = project.ts
-
-# Copy the ts to a temp file because:
-# 1. The depot file is usually read-only
-# 2. We don't want to modify the original file, since then it won't be possible to run the test twice
-# without reverting the original file again.
-
-win32: system(copy /Y project.ts.before $$TRANSLATIONS)
-unix: system(cp -f project.ts.before $$TRANSLATIONS && chmod a+w $$TRANSLATIONS)
+TRANSLATIONS = project.ts
diff --git a/tests/auto/linguist/lupdate/testdata/output_ts/lupdatecmd b/tests/auto/linguist/lupdate/testdata/output_ts/lupdatecmd
deleted file mode 100644
index 80319dec6b..0000000000
--- a/tests/auto/linguist/lupdate/testdata/output_ts/lupdatecmd
+++ /dev/null
@@ -1,5 +0,0 @@
-# Add the command that lupdate should run here. If it can't find anything it will default to
-# 'lupdate project.pro -ts project.ts'
-
-# lupdate project.pro
-lupdate toplevel/library/tools/tools.pro
diff --git a/tests/auto/linguist/lupdate/testdata/output_ts/toplevel/library/tools/tools.pro b/tests/auto/linguist/lupdate/testdata/output_ts/toplevel/library/tools/tools.pro
deleted file mode 100644
index ec6c01d469..0000000000
--- a/tests/auto/linguist/lupdate/testdata/output_ts/toplevel/library/tools/tools.pro
+++ /dev/null
@@ -1,12 +0,0 @@
-TEMPLATE = app
-LANGUAGE = C++
-
-SOURCES += main.cpp
-
-TRANSLATIONS += translations/project.ts
-
-exists( $$TRANSLATIONS ) {
- win32: system(del $$TRANSLATIONS)
- unix: system(rm -f $$TRANSLATIONS)
-}
-
diff --git a/tests/auto/linguist/lupdate/testdata/output_ts/toplevel/library/tools/translations/readme.txt b/tests/auto/linguist/lupdate/testdata/output_ts/toplevel/library/tools/translations/readme.txt
deleted file mode 100644
index 83adcd2dad..0000000000
--- a/tests/auto/linguist/lupdate/testdata/output_ts/toplevel/library/tools/translations/readme.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-This is just a dummy file so that GIT creates this folder
-
diff --git a/tests/auto/linguist/lupdate/testlupdate.cpp b/tests/auto/linguist/lupdate/testlupdate.cpp
deleted file mode 100644
index 9e23a544cc..0000000000
--- a/tests/auto/linguist/lupdate/testlupdate.cpp
+++ /dev/null
@@ -1,158 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt Linguist of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "testlupdate.h"
-#include <stdlib.h>
-#include <QtGui/QApplication>
-#include <QtCore/QProcess>
-#include <QtCore/QTimer>
-#include <QtCore/QDir>
-
-#ifdef Q_OS_WIN32
-# include <windows.h>
-#endif
-
-#include <QtTest/QtTest>
-
-
-TestLUpdate::TestLUpdate()
-{
- childProc = 0;
- QString binPath = QLibraryInfo::location(QLibraryInfo::BinariesPath);
- m_cmdLupdate = binPath + QLatin1String("/lupdate");
- m_cmdQMake = binPath + QLatin1String("/qmake");
-}
-
-TestLUpdate::~TestLUpdate()
-{
- if (childProc)
- delete childProc;
-}
-
-void TestLUpdate::setWorkingDirectory(const QString &workDir)
-{
- m_workDir = workDir;
- QDir::setCurrent(m_workDir);
-}
-
-void TestLUpdate::addMakeResult( const QString &result )
-{
- make_result.append( result );
-}
-
-bool TestLUpdate::runChild( bool showOutput, const QString &program, const QStringList &argList)
-{
- make_result.clear();
- exit_ok = FALSE;
- if (childProc)
- delete childProc;
-
- child_show = showOutput;
- if ( showOutput ) {
- QString S = argList.join(" ");
- addMakeResult( program + QLatin1String(" ") + S );
- }
-
- childProc = new QProcess();
- Q_ASSERT(childProc);
-
- childProc->setWorkingDirectory(m_workDir);
- connect(childProc, SIGNAL(finished(int)), this, SLOT(childReady(int)));
- childProc->setProcessChannelMode(QProcess::MergedChannels);
- if (argList.isEmpty()) {
- childProc->start( program, QIODevice::ReadWrite | QIODevice::Text );
- } else {
- childProc->start( program, argList, QIODevice::ReadWrite | QIODevice::Text );
- }
- bool ok;
-
- ok = childProc->waitForStarted();
-
- if (ok)
- ok = childProc->waitForFinished();
-
- if (!ok)
- addMakeResult( "Error executing '" + program + "'." );
-
- childReady(ok ? 0 : -1);
-
- return ok;
-}
-
-void TestLUpdate::childReady(int /*exitCode*/)
-{
- if (childProc != 0) {
- childHasData();
- exit_ok = childProc->state() == QProcess::NotRunning
- && childProc->exitStatus() == 0;
- childProc->deleteLater();
- }
- childProc = 0;
-}
-
-void TestLUpdate::childHasData()
-{
- //QByteArray ba = childProc->readAllStandardError();
- //qDebug() << "ERROR:" << ba;
- QString stdoutput = childProc->readAllStandardOutput();
- stdoutput = stdoutput.replace("\t", " ");
- if (child_show)
- addMakeResult(stdoutput);
-}
-
-bool TestLUpdate::run(const QString &commandline)
-{
- return runChild(true, m_cmdLupdate + QLatin1String(" ") + commandline);
-}
-
-
-bool TestLUpdate::updateProFile(const QString &arguments)
-{
- QStringList args = arguments.split(QChar(' '));
- return runChild( true, m_cmdLupdate, args );
-}
-
-bool TestLUpdate::qmake()
-{
- QStringList args;
- args << "-r";
- return runChild(true, m_cmdQMake, args);
-}
diff --git a/tests/auto/linguist/lupdate/tst_lupdate.cpp b/tests/auto/linguist/lupdate/tst_lupdate.cpp
index 0776914dec..568be37ede 100644
--- a/tests/auto/linguist/lupdate/tst_lupdate.cpp
+++ b/tests/auto/linguist/lupdate/tst_lupdate.cpp
@@ -39,7 +39,6 @@
**
****************************************************************************/
-#include "testlupdate.h"
#if CHECK_SIMTEXTH
#include "../shared/simtexth.h"
#endif
@@ -55,12 +54,11 @@ class tst_lupdate : public QObject
{
Q_OBJECT
public:
- tst_lupdate() { m_basePath = QDir::currentPath() + QLatin1String("/testdata/"); }
+ tst_lupdate();
private slots:
void good_data();
void good();
- void output_ts();
void commandline_data();
void commandline();
#if CHECK_SIMTEXTH
@@ -69,7 +67,7 @@ private slots:
#endif
private:
- TestLUpdate m_lupdate;
+ QString m_cmdLupdate;
QString m_basePath;
void doCompare(const QStringList &actual, const QString &expectedFn, bool err);
@@ -77,72 +75,149 @@ private:
};
+tst_lupdate::tst_lupdate()
+{
+ QString binPath = QLibraryInfo::location(QLibraryInfo::BinariesPath);
+ m_cmdLupdate = binPath + QLatin1String("/lupdate");
+ m_basePath = QDir::currentPath() + QLatin1String("/testdata/");
+}
+
+static bool prepareMatch(const QString &expect, QString *tmpl, int *require, int *accept)
+{
+ if (expect.startsWith(QLatin1Char('\\'))) {
+ *tmpl = expect.mid(1);
+ *require = *accept = 1;
+ } else if (expect.startsWith(QLatin1Char('?'))) {
+ *tmpl = expect.mid(1);
+ *require = 0;
+ *accept = 1;
+ } else if (expect.startsWith(QLatin1Char('*'))) {
+ *tmpl = expect.mid(1);
+ *require = 0;
+ *accept = INT_MAX;
+ } else if (expect.startsWith(QLatin1Char('+'))) {
+ *tmpl = expect.mid(1);
+ *require = 1;
+ *accept = INT_MAX;
+ } else if (expect.startsWith(QLatin1Char('{'))) {
+ int brc = expect.indexOf(QLatin1Char('}'), 1);
+ if (brc < 0)
+ return false;
+ *tmpl = expect.mid(brc + 1);
+ QString sub = expect.mid(1, brc - 1);
+ int com = sub.indexOf(QLatin1Char(','));
+ bool ok;
+ if (com < 0) {
+ *require = *accept = sub.toInt(&ok);
+ return ok;
+ } else {
+ *require = sub.left(com).toInt();
+ *accept = sub.mid(com + 1).toInt(&ok);
+ if (!ok)
+ *accept = INT_MAX;
+ return *accept >= *require;
+ }
+ } else {
+ *tmpl = expect;
+ *require = *accept = 1;
+ }
+ return true;
+}
+
void tst_lupdate::doCompare(const QStringList &actual, const QString &expectedFn, bool err)
{
QFile file(expectedFn);
- QVERIFY(file.open(QIODevice::ReadOnly | QIODevice::Text));
- QStringList expected = QString(file.readAll()).trimmed().split('\n');
-
- int i = 0, ei = expected.size(), gi = actual.size();
- for (; ; i++) {
- if (i == gi) {
- if (i == ei)
- return;
- gi = 0;
- break;
- } else if (i == ei) {
- ei = 0;
+ QVERIFY2(file.open(QIODevice::ReadOnly | QIODevice::Text), qPrintable(expectedFn));
+ QStringList expected = QString(file.readAll()).split('\n');
+
+ int ei = 0, ai = 0, em = expected.size(), am = actual.size();
+ int oei = 0, oai = 0, oem = em, oam = am;
+ int require = 0, accept = 0;
+ QString tmpl;
+ forever {
+ if (!accept) {
+ oei = ei, oai = ai;
+ if (ei == em) {
+ if (ai == am)
+ return;
+ break;
+ }
+ if (!prepareMatch(expected.at(ei++), &tmpl, &require, &accept))
+ QFAIL(qPrintable(QString("Malformed expected %1 at %3:%2")
+ .arg(err ? "output" : "result").arg(ei).arg(expectedFn)));
+ }
+ if (ai == am) {
+ if (require <= 0) {
+ accept = 0;
+ continue;
+ }
break;
- } else {
- QString act = actual.at(i);
- act.remove('\r');
- if (err ? !QRegExp(expected.at(i)).exactMatch(act) :
- (act != expected.at(i))) {
- bool cond = true;
- while (cond) {
- act = actual.at(gi - 1);
- act.remove('\r');
- cond = (ei - 1) >= i && (gi - 1) >= i &&
- (err ? QRegExp(expected.at(ei - 1)).exactMatch(act) :
- (act == expected.at(ei - 1)));
- if (cond) {
- ei--, gi--;
+ }
+ if (err ? !QRegExp(tmpl).exactMatch(actual.at(ai)) : (actual.at(ai) != tmpl)) {
+ if (require <= 0) {
+ accept = 0;
+ continue;
+ }
+ ei--;
+ require = accept = 0;
+ forever {
+ if (!accept) {
+ oem = em, oam = am;
+ if (ei == em)
+ break;
+ if (!prepareMatch(expected.at(--em), &tmpl, &require, &accept))
+ QFAIL(qPrintable(QString("Malformed expected %1 at %3:%2")
+ .arg(err ? "output" : "result")
+ .arg(em + 1).arg(expectedFn)));
+ }
+ if (ai == am || (err ? !QRegExp(tmpl).exactMatch(actual.at(am - 1)) :
+ (actual.at(am - 1) != tmpl))) {
+ if (require <= 0) {
+ accept = 0;
+ continue;
}
+ break;
}
- break;
+ accept--;
+ require--;
+ am--;
}
+ break;
}
+ accept--;
+ require--;
+ ai++;
}
QByteArray diff;
- for (int j = qMax(0, i - 3); j < i; j++)
- diff += expected.at(j) + '\n';
+ for (int j = qMax(0, oai - 3); j < oai; j++)
+ diff += actual.at(j) + '\n';
diff += "<<<<<<< got\n";
- for (int j = i; j < gi; j++) {
+ for (int j = oai; j < oam; j++) {
diff += actual.at(j) + '\n';
- if (j >= i + 5) {
+ if (j >= oai + 5) {
diff += "...\n";
break;
}
}
diff += "=========\n";
- for (int j = i; j < ei; j++) {
+ for (int j = oei; j < oem; j++) {
diff += expected.at(j) + '\n';
- if (j >= i + 5) {
+ if (j >= oei + 5) {
diff += "...\n";
break;
}
}
diff += ">>>>>>> expected\n";
- for (int j = ei; j < qMin(ei + 3, expected.size()); j++)
- diff += expected.at(j) + '\n';
+ for (int j = oam; j < qMin(oam + 3, actual.size()); j++)
+ diff += actual.at(j) + '\n';
QFAIL(qPrintable((err ? "Output for " : "Result for ") + expectedFn + " does not meet expectations:\n" + diff));
}
void tst_lupdate::doCompare(const QString &actualFn, const QString &expectedFn, bool err)
{
QFile afile(actualFn);
- QVERIFY(afile.open(QIODevice::ReadOnly | QIODevice::Text));
- QStringList actual = QString(afile.readAll()).trimmed().split('\n');
+ QVERIFY2(afile.open(QIODevice::ReadOnly | QIODevice::Text), qPrintable(actualFn));
+ QStringList actual = QString(afile.readAll()).split('\n');
doCompare(actual, expectedFn, err);
}
@@ -167,20 +242,16 @@ void tst_lupdate::good()
QFETCH(QString, directory);
QString dir = m_basePath + "good/" + directory;
- QString expectedFile = dir + QLatin1String("/project.ts.result");
qDebug() << "Checking...";
- // qmake will delete the previous one, to ensure that we don't do any merging....
- QString generatedtsfile(QLatin1String("project.ts"));
+ QString generatedtsfile(dir + QLatin1String("/project.ts"));
- m_lupdate.setWorkingDirectory(dir);
- m_lupdate.qmake();
// look for a command
QString lupdatecmd;
QFile file(dir + "/lupdatecmd");
if (file.exists()) {
- QVERIFY(file.open(QIODevice::ReadOnly | QIODevice::Text));
+ QVERIFY2(file.open(QIODevice::ReadOnly | QIODevice::Text), qPrintable(file.fileName()));
while (!file.atEnd()) {
QByteArray cmdstring = file.readLine().simplified();
if (cmdstring.startsWith('#'))
@@ -197,72 +268,39 @@ void tst_lupdate::good()
file.close();
}
- if (lupdatecmd.isEmpty()) {
- lupdatecmd = QLatin1String("project.pro -ts project.ts");
- }
- lupdatecmd.prepend("-silent ");
- m_lupdate.updateProFile(lupdatecmd);
-
- // If the file expectedoutput.txt exists, compare the
- // console output with the content of that file
- QFile outfile(dir + "/expectedoutput.txt");
- if (outfile.exists()) {
- QString errs = m_lupdate.getErrorMessages().at(1).trimmed();
- QStringList errslist = errs.split(QLatin1Char('\n'));
- doCompare(errslist, outfile.fileName(), true);
- if (QTest::currentTestFailed())
- return;
- }
-
- doCompare(generatedtsfile, expectedFile, false);
-}
-
-void tst_lupdate::output_ts()
-{
- QString dir = m_basePath + "output_ts";
- m_lupdate.setWorkingDirectory(dir);
-
- // look for a command
- QString lupdatecmd;
- QFile file(dir + "/lupdatecmd");
- if (file.exists()) {
- QVERIFY(file.open(QIODevice::ReadOnly | QIODevice::Text));
- while (!file.atEnd()) {
- QByteArray cmdstring = file.readLine().simplified();
- if (cmdstring.startsWith('#'))
- continue;
- if (cmdstring.startsWith("lupdate")) {
- cmdstring.remove(0, 8);
- lupdatecmd.append(cmdstring);
- break;
- }
- }
- file.close();
- }
-
- QDir parsingDir(m_basePath + "output_ts");
-
- QString generatedtsfile =
- dir + QLatin1String("/toplevel/library/tools/translations/project.ts");
-
QFile::remove(generatedtsfile);
+ QString beforetsfile = generatedtsfile + QLatin1String(".before");
+ if (QFile::exists(beforetsfile))
+ QVERIFY2(QFile::copy(beforetsfile, generatedtsfile), qPrintable(beforetsfile));
+ if (lupdatecmd.isEmpty())
+ lupdatecmd = QLatin1String("project.pro");
lupdatecmd.prepend("-silent ");
- m_lupdate.qmake();
- m_lupdate.updateProFile(lupdatecmd);
+
+ QProcess proc;
+ proc.setWorkingDirectory(dir);
+ proc.setProcessChannelMode(QProcess::MergedChannels);
+ proc.start(m_cmdLupdate + ' ' + lupdatecmd, QIODevice::ReadWrite | QIODevice::Text);
+ QVERIFY2(proc.waitForFinished(5000), qPrintable(lupdatecmd));
+ QByteArray output = proc.readAll();
+ QVERIFY2(proc.exitStatus() == QProcess::NormalExit,
+ "\"lupdate " + lupdatecmd.toLatin1() + "\" crashed\n" + output);
+ QVERIFY2(!proc.exitCode(),
+ "\"lupdate " + lupdatecmd.toLatin1() + "\" exited with code " +
+ QByteArray::number(proc.exitCode()) + "\n" + proc.readAll());
// If the file expectedoutput.txt exists, compare the
// console output with the content of that file
QFile outfile(dir + "/expectedoutput.txt");
if (outfile.exists()) {
- QString errs = m_lupdate.getErrorMessages().at(1).trimmed();
- QStringList errslist = errs.split(QLatin1Char('\n'));
+ QStringList errslist = QString::fromLatin1(output).split(QLatin1Char('\n'));
doCompare(errslist, outfile.fileName(), true);
if (QTest::currentTestFailed())
return;
}
- doCompare(generatedtsfile, dir + QLatin1String("/project.ts.result"), false);
+ QString expectedFile = generatedtsfile + QLatin1String(".result");
+ doCompare(generatedtsfile, expectedFile, false);
}
void tst_lupdate::commandline_data()
@@ -285,14 +323,21 @@ void tst_lupdate::commandline()
QFETCH(QString, generatedtsfile);
QFETCH(QString, expectedtsfile);
- m_lupdate.setWorkingDirectory(m_basePath + currentPath);
QString generated =
m_basePath + currentPath + QLatin1Char('/') + generatedtsfile;
QFile gen(generated);
if (gen.exists())
QVERIFY(gen.remove());
- if (!m_lupdate.run("-silent " + commandline))
- qDebug() << m_lupdate.getErrorMessages().last();
+ QProcess proc;
+ proc.setWorkingDirectory(m_basePath + currentPath);
+ proc.setProcessChannelMode(QProcess::MergedChannels);
+ proc.start(m_cmdLupdate + " -silent " + commandline, QIODevice::ReadWrite | QIODevice::Text);
+ QVERIFY2(proc.waitForFinished(5000), qPrintable(commandline));
+ QVERIFY2(proc.exitStatus() == QProcess::NormalExit,
+ "\"lupdate -silent " + commandline.toLatin1() + "\" crashed\n" + proc.readAll());
+ QVERIFY2(!proc.exitCode(),
+ "\"lupdate -silent " + commandline.toLatin1() + "\" exited with code " +
+ QByteArray::number(proc.exitCode()) + "\n" + proc.readAll());
doCompare(generated, m_basePath + currentPath + QLatin1Char('/') + expectedtsfile, false);
}