From 61a374ac3a00185e35f5f60ba01f80f76d83420a Mon Sep 17 00:00:00 2001
From: Fabian Affolter <mail@fabian-affolter.ch>
Date: Mon, 7 Jun 2021 13:41:33 +0200
Subject: [PATCH] python3Packages.parsel: fix build

---
 .../python-modules/parsel/default.nix         | 51 +++++++++++++++----
 1 file changed, 40 insertions(+), 11 deletions(-)

diff --git a/pkgs/development/python-modules/parsel/default.nix b/pkgs/development/python-modules/parsel/default.nix
index 319f83f72755..423f4eb0293b 100644
--- a/pkgs/development/python-modules/parsel/default.nix
+++ b/pkgs/development/python-modules/parsel/default.nix
@@ -1,14 +1,13 @@
 { lib
 , buildPythonPackage
+, cssselect
 , fetchPypi
-, pytest
-, pytestrunner
 , functools32
+, isPy27
+, lxml
+, pytestCheckHook
 , six
 , w3lib
-, lxml
-, cssselect
-, isPy27
 }:
 
 buildPythonPackage rec {
@@ -20,17 +19,47 @@ buildPythonPackage rec {
     sha256 = "0yawf9r3r863lwxj0n89i7h3n8xjbsl5b7n6xg76r68scl5yzvvh";
   };
 
-  checkInputs = [ pytest pytestrunner ];
-  propagatedBuildInputs = [ six w3lib lxml cssselect ] ++ lib.optionals isPy27 [ functools32 ];
+  propagatedBuildInputs = [
+    cssselect
+    lxml
+    six
+    w3lib
+  ] ++ lib.optionals isPy27 [
+    functools32
+  ];
 
-  checkPhase = ''
-    py.test
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "'pytest-runner'," ""
   '';
 
+  disabledTests = [
+    # Test are out-dated and are failing (AssertionError: Lists differ: ...)
+    # https://github.com/scrapy/parsel/pull/174
+    "test_differences_parsing_xml_vs_html"
+    "test_nested_selectors"
+    "test_re"
+    "test_replacement_null_char_from_body"
+    "test_select_on_text_nodes"
+    "test_selector_get_alias"
+    "test_selector_getall_alias"
+    "test_selector_over_text"
+    "test_selectorlist_get_alias"
+    "test_selectorlist_getall_alias"
+    "test_slicing"
+    "test_text_pseudo_element"
+  ];
+
+  pythonImportsCheck = [ "parsel" ];
+
   meta = with lib; {
     homepage = "https://github.com/scrapy/parsel";
-    description = "Parsel is a library to extract data from HTML and XML using XPath and CSS selectors";
+    description = "Python library to extract data from HTML and XML using XPath and CSS selectors";
     license = licenses.bsd3;
+    maintainers = with maintainers; [ fab ];
   };
-
 }