about summary refs log tree commit diff
path: root/pkgs/development/python-modules/dogtail
diff options
context:
space:
mode:
authorJan Tojnar <jtojnar@gmail.com>2018-07-06 09:20:35 +0200
committerJan Tojnar <jtojnar@gmail.com>2018-07-06 09:35:02 +0200
commit21f78529a5a36b47127285fc11d691450fb0246f (patch)
treee73de6ad1cd5e0bb835280d8f7509a4cfdd0e8dc /pkgs/development/python-modules/dogtail
parent18b79b8fcbebe9fcbb8d4a50776924ee23becf39 (diff)
python3.pkgs.dogtail: init at 0.9.10
Diffstat (limited to 'pkgs/development/python-modules/dogtail')
-rw-r--r--pkgs/development/python-modules/dogtail/default.nix58
-rw-r--r--pkgs/development/python-modules/dogtail/nix-support.patch35
2 files changed, 93 insertions, 0 deletions
diff --git a/pkgs/development/python-modules/dogtail/default.nix b/pkgs/development/python-modules/dogtail/default.nix
new file mode 100644
index 0000000000000..2d193616e5f6b
--- /dev/null
+++ b/pkgs/development/python-modules/dogtail/default.nix
@@ -0,0 +1,58 @@
+{ lib
+, buildPythonPackage
+, python
+, pygobject3
+, pyatspi
+, pycairo
+, at-spi2-core
+, gobjectIntrospection
+, gtk3
+, gsettings-desktop-schemas
+, fetchurl
+, dbus
+, xvfb_run
+# , fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "dogtail";
+  version = "0.9.10";
+
+  # https://gitlab.com/dogtail/dogtail/issues/1
+  # src = fetchPypi {
+  #   inherit pname version;
+  #   sha256 = "0p5wfssvzr9w0bvhllzbbd8fnp4cca2qxcpcsc33dchrmh5n552x";
+  # };
+  src = fetchurl {
+    url = https://gitlab.com/dogtail/dogtail/raw/released/dogtail-0.9.10.tar.gz;
+    sha256 = "14sycidl8ahj3fwlhpwlpnyd43c302yqr7nqg2hj39pyj7kgk15b";
+  };
+
+  patches = [
+    ./nix-support.patch
+  ];
+
+  nativeBuildInputs = [ gobjectIntrospection dbus xvfb_run ]; # for setup hooks
+  propagatedBuildInputs = [ at-spi2-core gtk3 pygobject3 pyatspi pycairo ];
+
+  checkPhase = ''
+    runHook preCheck
+    export XDG_DATA_DIRS=${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}:$XDG_DATA_DIRS
+    # export NO_AT_BRIDGE=1
+    gsettings set org.gnome.desktop.interface toolkit-accessibility true
+    xvfb-run -s '-screen 0 800x600x24' dbus-run-session \
+      --config-file=${dbus.daemon}/share/dbus-1/session.conf \
+      ${python.interpreter} nix_run_setup test
+    runHook postCheck
+  '';
+
+  # TODO: Tests require accessibility
+  doCheck = false;
+
+  meta = {
+    description = "GUI test tool and automation framework that uses Accessibility technologies to communicate with desktop applications";
+    homepage = https://gitlab.com/dogtail/dogtail;
+    license = lib.licenses.gpl2;
+    maintainers = with lib.maintainers; [ jtojnar ];
+  };
+}
diff --git a/pkgs/development/python-modules/dogtail/nix-support.patch b/pkgs/development/python-modules/dogtail/nix-support.patch
new file mode 100644
index 0000000000000..e8a65bbc87bef
--- /dev/null
+++ b/pkgs/development/python-modules/dogtail/nix-support.patch
@@ -0,0 +1,35 @@
+--- a/dogtail/distro.py
++++ b/dogtail/distro.py
+@@ -233,6 +233,11 @@
+         PackageDb.__init__(self)
+ 
+ 
++class _NixPackageDb(PackageDb):  # pragma: no cover
++    def __init__(self):
++        PackageDb.__init__(self)
++
++
+ class JhBuildPackageDb(PackageDb):  # pragma: no cover
+     def __init__(self):
+         PackageDb.__init__(self)
+@@ -324,6 +329,11 @@
+         self.packageDb = _SolarisPackageDb()
+ 
+ 
++class Nix(Distro):  # pragma: no cover
++    def __init__(self):
++        self.packageDb = _NixPackageDb()
++
++
+ class JHBuild(Distro):  # pragma: no cover
+     def __init__(self):
+         self.packageDb = JhBuildPackageDb()
+@@ -358,6 +368,8 @@
+     elif os.path.exists("/etc/release") and \
+             re.match(".*Solaris", open("/etc/release").readline()):  # pragma: no cover
+         distro = Solaris()  # pragma: no cover
++    elif os.path.exists("/nix/store"):  # pragma: no cover
++        distro = Nix()  # pragma: no cover
+     elif os.path.exists("/etc/os-release") and \
+             re.match(".*GNOME-Continuous", open("/etc/os-release").readline()):  # pragma: no cover
+         distro = GnomeContinuous()  # pragma: no cover