~ci-train-bot/mediascanner2/mediascanner2-ubuntu-yakkety-landing-063

« back to all changes in this revision

Viewing changes to test/test_qml.cc

  • Committer: CI Train Bot
  • Author(s): James Henstridge
  • Date: 2015-11-09 01:56:37 UTC
  • mfrom: (288.1.28 external-metadata)
  • Revision ID: ci-train-bot@canonical.com-20151109015637-q4ixft4f3l2t1r3m
Move the metadata extractor to a separate process to isolate bugs in media codecs. Fixes: #1508142
Approved by: PS Jenkins bot

Show diffs side-by-side

added added

removed removed

Lines of Context:
3
3
#include <memory>
4
4
#include <string>
5
5
 
 
6
#include <gio/gio.h>
 
7
#include <QGuiApplication>
6
8
#include <QProcess>
7
9
#include <QtQuickTest/quicktest.h>
8
10
 
9
 
#include <core/dbus/fixture.h>
10
 
 
11
11
#include <mediascanner/MediaStore.hh>
12
12
#include <mediascanner/MediaFile.hh>
13
13
#include <mediascanner/MediaFileBuilder.hh>
18
18
 
19
19
class MediaStoreData {
20
20
public:
21
 
    MediaStoreData() {
 
21
    MediaStoreData() : test_dbus(nullptr, g_object_unref) {
22
22
        db_path = "./mediascanner-cache.XXXXXX";
23
23
        if (mkdtemp(const_cast<char*>(db_path.c_str())) == nullptr) {
24
24
            throw std::runtime_error("Could not create temporary directory");
26
26
        setenv("MEDIASCANNER_CACHEDIR", db_path.c_str(), true);
27
27
        populate();
28
28
 
29
 
        // Start up private bus, and start daemon.
30
 
        dbus_fixture.reset(
31
 
            new core::dbus::Fixture(
32
 
                core::dbus::Fixture::default_session_bus_config_file(),
33
 
                core::dbus::Fixture::default_system_bus_config_file()));
 
29
        test_dbus.reset(g_test_dbus_new(G_TEST_DBUS_NONE));
 
30
        g_test_dbus_add_service_dir(test_dbus.get(), TEST_DIR "/services");
 
31
        g_test_dbus_up(test_dbus.get());
34
32
 
35
33
        daemon.setProgram(TEST_DIR "/../src/ms-dbus/mediascanner-dbus-2.0");
36
34
        daemon.setProcessChannelMode(QProcess::ForwardedChannels);
46
44
            fprintf(stderr, "Failed to stop mediascanner-dbus-2.0\n");
47
45
        }
48
46
 
49
 
        dbus_fixture.reset();
 
47
        g_test_dbus_down(test_dbus.get());
50
48
 
51
49
        if (system("rm -rf \"$MEDIASCANNER_CACHEDIR\"") == -1) {
52
50
            throw std::runtime_error("rm -rf failed");
154
152
 
155
153
private:
156
154
    std::string db_path;
157
 
    std::unique_ptr<core::dbus::Fixture> dbus_fixture;
 
155
    std::unique_ptr<GTestDBus,decltype(&g_object_unref)> test_dbus;
158
156
    QProcess daemon;
159
157
};
160
158
 
161
 
MediaStoreData data;
162
 
 
163
 
 
164
 
QUICK_TEST_MAIN(Mediascaner)
 
159
 
 
160
int main(int argc, char** argv)
 
161
{
 
162
    QGuiApplication(argc, argv);
 
163
 
 
164
    MediaStoreData data;
 
165
    return quick_test_main(argc, argv, "Mediascanner", SOURCE_DIR "/qml");
 
166
}