From 04a96e3c8b92a7beb488fb39b0ac830d7523679f Mon Sep 17 00:00:00 2001 From: Robert Scott Date: Sun, 18 Oct 2020 01:36:52 +0100 Subject: [PATCH] python3Packages.cassandra-driver: fix build & tests --- .../cassandra-driver/default.nix | 70 ++++++++++++++----- 1 file changed, 54 insertions(+), 16 deletions(-) diff --git a/pkgs/development/python-modules/cassandra-driver/default.nix b/pkgs/development/python-modules/cassandra-driver/default.nix index e1cb9f211bc..215b3b7ac6c 100644 --- a/pkgs/development/python-modules/cassandra-driver/default.nix +++ b/pkgs/development/python-modules/cassandra-driver/default.nix @@ -1,47 +1,85 @@ -{ lib, buildPythonPackage, fetchPypi, python, pythonOlder +{ stdenv, lib, buildPythonPackage, fetchFromGitHub, python, pythonOlder , cython , eventlet , futures +, iana-etc +, geomet , libev , mock , nose -, pytest +, pytestCheckHook , pytz , pyyaml , scales , six , sure +, gremlinpython +, gevent +, twisted +, libredirect }: buildPythonPackage rec { pname = "cassandra-driver"; version = "3.24.0"; - src = fetchPypi { - inherit pname version; - sha256 = "83ec8d9a5827ee44bb1c0601a63696a8a9086beaf0151c8255556299246081bd"; + # pypi tarball doesn't include tests + src = fetchFromGitHub { + owner = "datastax"; + repo = "python-driver"; + rev = version; + sha256 = "1rr69hly5q810xpn8rkzxwzlq55wxxp7kwki9vfri3gh674d2wip"; }; nativeBuildInputs = [ cython ]; buildInputs = [ libev ]; - propagatedBuildInputs = [ six ] + propagatedBuildInputs = [ six geomet ] ++ lib.optionals (pythonOlder "3.4") [ futures ]; - checkInputs = [ eventlet mock nose pytest pytz pyyaml sure ]; - - # ignore test files which try to do socket.getprotocolname('tcp') - # as it fails in sandbox mode due to lack of a /etc/protocols file - checkPhase = '' - pytest tests/unit \ - --ignore=tests/unit/io/test_libevreactor.py \ - --ignore=tests/unit/io/test_eventletreactor.py \ - --ignore=tests/unit/io/test_asyncorereactor.py + # Make /etc/protocols accessible to allow socket.getprotobyname('tcp') in sandbox, + # also /etc/resolv.conf is referenced by some tests + preCheck = (stdenv.lib.optionalString stdenv.isLinux '' + echo "nameserver 127.0.0.1" > resolv.conf + export NIX_REDIRECTS=/etc/protocols=${iana-etc}/etc/protocols:/etc/resolv.conf=$(realpath resolv.conf) + export LD_PRELOAD=${libredirect}/lib/libredirect.so + '') + '' + # increase tolerance for time-based test + substituteInPlace tests/unit/io/utils.py --replace 'delta=.15' 'delta=.3' ''; + postCheck = '' + unset NIX_REDIRECTS LD_PRELOAD + ''; + + checkInputs = [ + pytestCheckHook + eventlet + mock + nose + pytz + pyyaml + sure + scales + gremlinpython + gevent + twisted + ]; + + pytestFlagsArray = [ + "tests/unit" + # requires puresasl + "--ignore=tests/unit/advanced/test_auth.py" + ]; + disabledTests = [ + # doesn't seem to be intended to be run directly + "_PoolTests" + # attempts to make connection to localhost + "test_connection_initialization" + ]; meta = with lib; { description = "A Python client driver for Apache Cassandra"; homepage = "http://datastax.github.io/python-driver"; license = licenses.asl20; - broken = true; # geomet doesn't exist + maintainers = with maintainers; [ turion ris ]; }; }