From 14e5f6d4f3489da62ef74c948543a2ad4ae34275 Mon Sep 17 00:00:00 2001 From: OPNA2608 Date: Tue, 6 Jun 2023 15:07:13 +0200 Subject: [PATCH] libqtdbustest: init at unstable-2017-01-06 --- .../libraries/libqtdbustest/default.nix | 102 ++++++++++++++++++ .../less-pedantic-process-finding.patch | 86 +++++++++++++++ pkgs/top-level/all-packages.nix | 4 + 3 files changed, 192 insertions(+) create mode 100644 pkgs/development/libraries/libqtdbustest/default.nix create mode 100644 pkgs/development/libraries/libqtdbustest/less-pedantic-process-finding.patch diff --git a/pkgs/development/libraries/libqtdbustest/default.nix b/pkgs/development/libraries/libqtdbustest/default.nix new file mode 100644 index 00000000000..8ef8975a01a --- /dev/null +++ b/pkgs/development/libraries/libqtdbustest/default.nix @@ -0,0 +1,102 @@ +{ stdenv +, lib +, fetchbzr +, fetchpatch +, testers +, cmake +, cmake-extras +, dbus +, dbus-test-runner +, gtest +, pkg-config +, procps +, python3 +, qtbase +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "libqtdbustest"; + version = "unstable-2017-01-06"; + + src = fetchbzr { + url = "lp:libqtdbustest"; + rev = "42"; + sha256 = "sha256-5MQdGGtEVE/pM9u0B0xFXyITiRln9p+8/MLtrrCZqi8="; + }; + + patches = [ + # Tests are overly pedantic when looking for launched process names in `ps`, break on python wrapper vs real python + # Just check if basename + arguments match, like libqtdbusmock does + ./less-pedantic-process-finding.patch + + # Disable QProcess start timeout + (fetchpatch { + url = "https://salsa.debian.org/debian-ayatana-team/libqtdbustest/-/raw/0788df10bc6f2aa47c2b73fc1df944686a9ace1e/debian/patches/1003_no-QProcess-waitForstarted-timeout.patch"; + hash = "sha256-ThDbn6URvkj5ARDMj+xO0fb1Qh2YQRzVy24O03KglHI="; + }) + + # More robust dbus address reading + (fetchpatch { + url = "https://salsa.debian.org/debian-ayatana-team/libqtdbustest/-/raw/7e55c79cd032c702b30d834c1fb0b65661fc6eeb/debian/patches/1004_make-reading-address-from-dbus-daemon-more-robust.patch"; + hash = "sha256-hq8pdducp/udxoGWGt1dgL/7VHcbJO/oT1dOY1zew8M="; + }) + ]; + + strictDeps = true; + + postPatch = lib.optionalString (!finalAttrs.doCheck) '' + # Don't build tests when we're not running them + sed -i -e '/add_subdirectory(tests)/d' CMakeLists.txt + ''; + + nativeBuildInputs = [ + cmake + pkg-config + ]; + + buildInputs = [ + cmake-extras + qtbase + ]; + + nativeCheckInputs = [ + dbus + dbus-test-runner + procps + (python3.withPackages (ps: with ps; [ + python-dbusmock + ])) + ]; + + checkInputs = [ + gtest + ]; + + dontWrapQtApps = true; + + doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform; + + enableParallelChecking = false; + + checkPhase = '' + runHook preCheck + + dbus-test-runner -t make -p test -p "''${enableParallelChecking:+-j $NIX_BUILD_CORES}" + + runHook postCheck + ''; + + passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; + + meta = with lib; { + description = "Library for testing DBus interactions using Qt"; + homepage = "https://launchpad.net/libqtdbustest"; + license = licenses.lgpl3Only; + platforms = platforms.unix; + maintainers = teams.lomiri.members; + mainProgram = "qdbus-simple-test-runner"; + pkgConfigModules = [ + "libqtdbustest-1" + ]; + }; +}) diff --git a/pkgs/development/libraries/libqtdbustest/less-pedantic-process-finding.patch b/pkgs/development/libraries/libqtdbustest/less-pedantic-process-finding.patch new file mode 100644 index 00000000000..b50fc5d1e47 --- /dev/null +++ b/pkgs/development/libraries/libqtdbustest/less-pedantic-process-finding.patch @@ -0,0 +1,86 @@ +diff '--color=auto' -ur '--color=never' a/tests/libqtdbustest/TestDBusTestRunner.cpp b/tests/libqtdbustest/TestDBusTestRunner.cpp +--- a/tests/libqtdbustest/TestDBusTestRunner.cpp 2023-01-20 21:36:16.948292559 +0100 ++++ b/tests/libqtdbustest/TestDBusTestRunner.cpp 2023-01-20 21:55:40.554530221 +0100 +@@ -44,7 +44,7 @@ + TEST_F(TestDBusTestRunner, StartsSessionService) { + QSharedPointer process( + new QProcessDBusService("test.session.name", +- QDBusConnection::SessionBus, "/usr/bin/python3", ++ QDBusConnection::SessionBus, "python3", + QStringList() << "-m" << "dbusmock" << "test.session.name" + << "/test/object" << "test.Interface")); + +@@ -58,15 +58,14 @@ + pgrep.waitForFinished(); + pgrep.waitForReadyRead(); + +- EXPECT_EQ( +- "/usr/bin/python3 -m dbusmock test.session.name /test/object test.Interface", +- QString::fromUtf8(pgrep.readAll().trimmed()).toStdString()); ++ EXPECT_TRUE( ++ pgrep.readAll().contains("python3 -m dbusmock test.session.name /test/object test.Interface")); + } + + TEST_F(TestDBusTestRunner, StartsSystemService) { + QSharedPointer process( + new QProcessDBusService("test.system.name", +- QDBusConnection::SystemBus, "/usr/bin/python3", ++ QDBusConnection::SystemBus, "python3", + QStringList() << "-m" << "dbusmock" << "-s" + << "test.system.name" << "/test/object" + << "test.Interface")); +@@ -81,9 +80,8 @@ + pgrep.waitForFinished(); + pgrep.waitForReadyRead(); + +- EXPECT_EQ( +- "/usr/bin/python3 -m dbusmock -s test.system.name /test/object test.Interface", +- QString::fromUtf8(pgrep.readAll().trimmed()).toStdString()); ++ EXPECT_TRUE( ++ pgrep.readAll().contains("python3 -m dbusmock -s test.system.name /test/object test.Interface")); + } + + TEST_F(TestDBusTestRunner, SetsEnvironmentVariables) { +diff '--color=auto' -ur '--color=never' a/tests/libqtdbustest/TestQProcessDBusService.cpp b/tests/libqtdbustest/TestQProcessDBusService.cpp +--- a/tests/libqtdbustest/TestQProcessDBusService.cpp 2023-01-20 21:36:16.948292559 +0100 ++++ b/tests/libqtdbustest/TestQProcessDBusService.cpp 2023-01-20 21:54:34.633384937 +0100 +@@ -45,7 +45,7 @@ + + TEST_F(TestQProcessDBusService, WaitsForServiceAppeared) { + QProcessDBusService process("test.name", QDBusConnection::SessionBus, +- "/usr/bin/python3", ++ "python3", + QStringList() << "-m" << "dbusmock" << "test.name" << "/test/object" + << "test.Interface"); + +@@ -58,14 +58,13 @@ + pgrep.waitForFinished(); + pgrep.waitForReadyRead(); + +- EXPECT_EQ( +- "/usr/bin/python3 -m dbusmock test.name /test/object test.Interface", +- QString::fromUtf8(pgrep.readAll().trimmed()).toStdString()); ++ EXPECT_TRUE( ++ pgrep.readAll().contains("python3 -m dbusmock test.name /test/object test.Interface")); + } + + TEST_F(TestQProcessDBusService, ThrowsErrorForFailToStart) { + QProcessDBusService process("test.name", QDBusConnection::SessionBus, +- "/usr/bin/python3", ++ "python3", + QStringList() << "-m" << "dbusmock" << "not.test.name" + << "/test/object" << "test.Interface"); + +diff '--color=auto' -ur '--color=never' a/tests/libqtdbustest/TestSuicidalProcess.cpp b/tests/libqtdbustest/TestSuicidalProcess.cpp +--- a/tests/libqtdbustest/TestSuicidalProcess.cpp 2023-01-20 21:36:16.948292559 +0100 ++++ b/tests/libqtdbustest/TestSuicidalProcess.cpp 2023-01-20 21:55:07.219951081 +0100 +@@ -51,8 +51,7 @@ + pgrep.waitForFinished(); + pgrep.waitForReadyRead(); + +- EXPECT_EQ("sleep 5", +- QString::fromUtf8(pgrep.readAll().trimmed()).toStdString()); ++ EXPECT_TRUE(pgrep.readAll().contains("sleep 5")); + } + + } // namespace diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 1230cac32f9..d073c025bbf 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -22241,6 +22241,10 @@ with pkgs; libplist = callPackage ../development/libraries/libplist { }; + libqtdbustest = libsForQt5.callPackage ../development/libraries/libqtdbustest { + inherit (lomiri) cmake-extras; + }; + libre = callPackage ../development/libraries/libre { }; libredwg = callPackage ../development/libraries/libredwg { };