summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/kernel/qcoreapplication
diff options
context:
space:
mode:
authorJake Petroules <jake.petroules@qt.io>2016-12-19 18:56:46 -0800
committerJake Petroules <jake.petroules@qt.io>2017-01-12 02:13:21 +0000
commit2b928ef6f95c528449d6ec9650325f3ccaac5094 (patch)
treecfffe1bfa4e027f6de84773137232f96543a8636 /tests/auto/corelib/kernel/qcoreapplication
parent5865e582fd537fff530c13301e5229a7b4ed21c7 (diff)
Provide sensible defaults for QCoreApplication::applicationVersion
[ChangeLog][QtCore] QCoreApplication::applicationVersion now defaults to an appropriate platform-specific value. On Windows, it defaults to the PRODUCTVERSION parameter of the VERSIONINFO resource for classic desktop apps, and the version attribute of the application package manifest for Univeral Windows Platform apps. On Apple Platforms (macOS, iOS, tvOS, watchOS), it defaults to the CFBundleVersion property of the information property list (Info.plist) file. On Android, it defaults to the android:versionName attribute of the AndroidManifest.xml manifest element. On other platforms, the default remains an empty string. Task-number: QTBUG-57715 Change-Id: I26f83dd00737e06f4321cf962aa5fab8398104ec Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'tests/auto/corelib/kernel/qcoreapplication')
-rw-r--r--tests/auto/corelib/kernel/qcoreapplication/Info.plist8
-rw-r--r--tests/auto/corelib/kernel/qcoreapplication/qcoreapplication.pro3
-rw-r--r--tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp35
-rw-r--r--tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.h1
4 files changed, 47 insertions, 0 deletions
diff --git a/tests/auto/corelib/kernel/qcoreapplication/Info.plist b/tests/auto/corelib/kernel/qcoreapplication/Info.plist
new file mode 100644
index 0000000000..a2927358bc
--- /dev/null
+++ b/tests/auto/corelib/kernel/qcoreapplication/Info.plist
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleVersion</key>
+ <string>1.2.3</string>
+</dict>
+</plist>
diff --git a/tests/auto/corelib/kernel/qcoreapplication/qcoreapplication.pro b/tests/auto/corelib/kernel/qcoreapplication/qcoreapplication.pro
index d166351490..e37542be65 100644
--- a/tests/auto/corelib/kernel/qcoreapplication/qcoreapplication.pro
+++ b/tests/auto/corelib/kernel/qcoreapplication/qcoreapplication.pro
@@ -3,4 +3,7 @@ TARGET = tst_qcoreapplication
QT = core testlib core-private
SOURCES = tst_qcoreapplication.cpp
HEADERS = tst_qcoreapplication.h
+win32: VERSION = 1.2.3.4
+else: VERSION = 1.2.3
+darwin: QMAKE_LFLAGS += -Wl,-sectcreate,__TEXT,__info_plist,$$shell_quote($$PWD/Info.plist)
requires(qtConfig(private_tests))
diff --git a/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp b/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp
index 0691297497..a7c608ec2e 100644
--- a/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp
+++ b/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp
@@ -153,6 +153,41 @@ void tst_QCoreApplication::qAppName()
QCOMPARE(QCoreApplication::applicationName(), QString());
}
+void tst_QCoreApplication::qAppVersion()
+{
+#if defined(Q_OS_WIN)
+ const char appVersion[] = "1.2.3.4";
+#elif defined(Q_OS_DARWIN) || defined(Q_OS_ANDROID)
+ const char appVersion[] = "1.2.3";
+#else
+ const char appVersion[] = "";
+#endif
+
+ {
+ int argc = 0;
+ char *argv[] = { nullptr };
+ TestApplication app(argc, argv);
+ QCOMPARE(QCoreApplication::applicationVersion(), QString::fromLatin1(appVersion));
+ }
+ // The application version should still be available after destruction
+ QCOMPARE(QCoreApplication::applicationVersion(), QString::fromLatin1(appVersion));
+
+ // Setting the appversion before creating the application should work
+ const QString wantedAppVersion("0.0.1");
+ {
+ int argc = 0;
+ char *argv[] = { nullptr };
+ QCoreApplication::setApplicationVersion(wantedAppVersion);
+ TestApplication app(argc, argv);
+ QCOMPARE(QCoreApplication::applicationVersion(), wantedAppVersion);
+ }
+ QCOMPARE(QCoreApplication::applicationVersion(), wantedAppVersion);
+
+ // Restore to initial value
+ QCoreApplication::setApplicationVersion(QString());
+ QCOMPARE(QCoreApplication::applicationVersion(), QString());
+}
+
void tst_QCoreApplication::argc()
{
#if defined(Q_OS_WINRT)
diff --git a/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.h b/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.h
index 7fb1bde459..342bd272a3 100644
--- a/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.h
+++ b/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.h
@@ -39,6 +39,7 @@ private slots:
void sendEventsOnProcessEvents(); // this must be the first test
void getSetCheck();
void qAppName();
+ void qAppVersion();
void argc();
void postEvent();
void removePostedEvents();