File: utils.h

package info (click to toggle)
plasma-framework 5.116.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 19,088 kB
  • sloc: cpp: 29,562; javascript: 637; sh: 517; python: 145; xml: 110; php: 27; makefile: 7
file content (60 lines) | stat: -rw-r--r-- 1,803 bytes parent folder | download | duplicates (4)
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
/*
    SPDX-FileCopyrightText: 2019 Aleix Pol <apol@kde.org>

    SPDX-License-Identifier: LGPL-2.0-or-later
*/
#ifndef UTILS_H
#define UTILS_H

#include <QDir>
#include <QStandardPaths>
#include <QString>
#include <QTest>

namespace Plasma
{
namespace TestUtils
{
static void copyPath(const QString &src, const QString &dst)
{
    QDir dir(src);

    const auto dirList = dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot);
    for (const auto &d : dirList) {
        QString dst_path = dst + QLatin1Char('/') + d;
        dir.mkpath(dst_path);
        copyPath(src + QLatin1Char('/') + d, dst_path);
    }

    const auto entryList = dir.entryList(QDir::Files);
    for (const auto &f : entryList) {
        QFile::copy(src + QLatin1Char('/') + f, dst + QLatin1Char('/') + f);
    }
}

static void installPlasmaTheme(const QString &theme = QStringLiteral("breeze"))
{
    QString destinationTheme = (theme == QLatin1String("breeze") ? QStringLiteral("default") : theme);

    QStandardPaths::setTestModeEnabled(true);
    const auto qttestPath = QStandardPaths::standardLocations(QStandardPaths::GenericDataLocation).constFirst();
    Q_ASSERT(!qttestPath.isEmpty());
    QDir themePath(qttestPath + QLatin1String("/plasma/desktoptheme/") + destinationTheme);

    auto data = QFINDTESTDATA("../src/desktoptheme/" + theme + "/metadata.json");
    QFileInfo f(data);
    QVERIFY(f.dir().mkpath(themePath.path()));

    copyPath(f.dir().filePath("default.gzipped"), themePath.path());
    QFile::copy(f.dir().filePath("metadata.json"), themePath.filePath("metadata.json"));

    const QString colorsFile = QFINDTESTDATA("../src/desktoptheme/" + theme + "/colors");
    if (!colorsFile.isEmpty()) {
        QFile::copy(colorsFile, themePath.filePath("colors"));
    }
}

} // TestUtils
} // Plasma

#endif