summaryrefslogtreecommitdiffstats
path: root/tests/shared
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@nokia.com>2012-07-25 11:47:26 +0200
committerQt by Nokia <qt-info@nokia.com>2012-07-26 15:12:50 +0200
commitdb83f2d73d16d904a6d36e52405d06502f2ab9d8 (patch)
treef07bfe44660500d5f813959b486fa8e1bbb3f68c /tests/shared
parente083d253950d3e7ce1e6363cd29fba416e69e371 (diff)
Base 'FileSystem' test helper class on QTemporaryDir.
This avoids test instabilities and prevents test directories from being cluttered with temporary files. Change tests accordingly. Remove unused createLink() method. Change-Id: I843c28ab81c8a476c71c5211a7479b22d3d9fc93 Reviewed-by: Sergio Ahumada <sergio.ahumada@nokia.com>
Diffstat (limited to 'tests/shared')
-rw-r--r--tests/shared/filesystem.h80
1 files changed, 42 insertions, 38 deletions
diff --git a/tests/shared/filesystem.h b/tests/shared/filesystem.h
index acc8500ba0..be03a76873 100644
--- a/tests/shared/filesystem.h
+++ b/tests/shared/filesystem.h
@@ -38,13 +38,14 @@
** $QT_END_LICENSE$
**
****************************************************************************/
-// Helper functions for creating file-system hierarchies and cleaning up.
#ifndef QT_TESTS_SHARED_FILESYSTEM_H_INCLUDED
#define QT_TESTS_SHARED_FILESYSTEM_H_INCLUDED
#include <QString>
#include <QStringList>
+#include <QTemporaryDir>
+#include <QScopedPointer>
#include <QDir>
#include <QFile>
@@ -60,54 +61,37 @@
#endif
#endif
-struct FileSystem
+// QTemporaryDir-based helper class for creating file-system hierarchies and cleaning up.
+class FileSystem
{
- ~FileSystem()
- {
- Q_FOREACH(QString fileName, createdFiles)
- QFile::remove(fileName);
+ Q_DISABLE_COPY(FileSystem)
+public:
+ FileSystem() : m_temporaryDir(FileSystem::tempFilePattern()) {}
- Q_FOREACH(QString dirName, createdDirectories)
- currentDir.rmdir(dirName);
- }
+ QString path() const { return m_temporaryDir.path(); }
+ QString absoluteFilePath(const QString &fileName) const { return path() + QLatin1Char('/') + fileName; }
- bool createDirectory(const QString &dirName)
+ bool createDirectory(const QString &relativeDirName)
{
- if (currentDir.mkdir(dirName)) {
- createdDirectories.prepend(dirName);
- return true;
+ if (m_temporaryDir.isValid()) {
+ QDir dir(m_temporaryDir.path());
+ return dir.mkpath(relativeDirName);
}
return false;
}
- bool createFile(const QString &fileName)
+ bool createFile(const QString &relativeFileName)
{
- QFile file(fileName);
- if (file.open(QIODevice::WriteOnly)) {
- createdFiles << fileName;
- return true;
- }
- return false;
+ QScopedPointer<QFile> file(openFileForWrite(relativeFileName));
+ return !file.isNull();
}
- qint64 createFileWithContent(const QString &fileName)
+ qint64 createFileWithContent(const QString &relativeFileName)
{
- QFile file(fileName);
- if (file.open(QIODevice::WriteOnly)) {
- createdFiles << fileName;
- return file.write(fileName.toUtf8());
- }
- return -1;
+ QScopedPointer<QFile> file(openFileForWrite(relativeFileName));
+ return file.isNull() ? qint64(-1) : file->write(relativeFileName.toUtf8());
}
- bool createLink(const QString &destination, const QString &linkName)
- {
- if (QFile::link(destination, linkName)) {
- createdFiles << linkName;
- return true;
- }
- return false;
- }
#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
static void createNtfsJunction(QString target, QString linkName)
{
@@ -163,10 +147,30 @@ struct FileSystem
#endif
private:
- QDir currentDir;
+ static QString tempFilePattern()
+ {
+ QString result = QDir::tempPath();
+ if (!result.endsWith(QLatin1Char('/')))
+ result.append(QLatin1Char('/'));
+ result += QStringLiteral("qt-test-filesystem-");
+ result += QCoreApplication::applicationName();
+ result += QStringLiteral("-XXXXXX");
+ return result;
+ }
+
+ QFile *openFileForWrite(const QString &fileName) const
+ {
+ if (m_temporaryDir.isValid()) {
+ const QString absName = absoluteFilePath(fileName);
+ QScopedPointer<QFile> file(new QFile(absName));
+ if (file->open(QIODevice::WriteOnly))
+ return file.take();
+ qWarning("Cannot open '%s' for writing: %s", qPrintable(absName), qPrintable(file->errorString()));
+ }
+ return 0;
+ }
- QStringList createdDirectories;
- QStringList createdFiles;
+ QTemporaryDir m_temporaryDir;
};
#endif // include guard