1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 setuptools,
6 zope-interface,
7 zope-schema,
8 zope-cachedescriptors,
9 pytz,
10 webtest,
11 beautifulsoup4,
12 soupsieve,
13 wsgiproxy2,
14 mock,
15 zope-testing,
16 zope-testrunner,
17 python,
18}:
19
20buildPythonPackage rec {
21 pname = "zope-testbrowser";
22 version = "7.0.1";
23 pyproject = true;
24
25 src = fetchFromGitHub {
26 owner = "zopefoundation";
27 repo = "zope.testbrowser";
28 tag = version;
29 hash = "sha256-GxSH3JBuQ3B4CeHzr58FEYv0gsTlUhlO/0CCHcTdOfg=";
30 };
31
32 postPatch = ''
33 # remove test that requires network access
34 substituteInPlace src/zope/testbrowser/tests/test_doctests.py \
35 --replace-fail "suite.addTests(wire)" ""
36 '';
37
38 build-system = [ setuptools ];
39
40 dependencies = [
41 setuptools
42 zope-interface
43 zope-schema
44 zope-cachedescriptors
45 pytz
46 webtest
47 beautifulsoup4
48 soupsieve
49 wsgiproxy2
50 ];
51
52 nativeCheckInputs = [
53 mock
54 zope-testing
55 zope-testrunner
56 ];
57
58 checkPhase = ''
59 ${python.interpreter} -m zope.testrunner --test-path=src
60 '';
61
62 pythonImportsCheck = [
63 "zope.testbrowser"
64 "zope.testbrowser.browser"
65 "zope.testbrowser.interfaces"
66 "zope.testbrowser.testing"
67 "zope.testbrowser.wsgi"
68 ];
69
70 meta = {
71 changelog = "https://github.com/zopefoundation/zope.testbrowser/blob/${src.rev}/CHANGES.rst";
72 description = "Programmable browser for functional black-box tests";
73 homepage = "https://github.com/zopefoundation/zope.testbrowser";
74 license = lib.licenses.zpl21;
75 maintainers = with lib.maintainers; [ dotlambda ];
76 };
77}