1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5 buildPythonPackage,
6 python,
7 pythonOlder,
8 pytestCheckHook,
9 assertpy,
10 mock,
11 path,
12 pyhamcrest,
13 pytest-html,
14 colorama,
15 cucumber-tag-expressions,
16 parse,
17 parse-type,
18 setuptools,
19 six,
20}:
21
22buildPythonPackage rec {
23 pname = "behave";
24 version = "1.2.7.dev5";
25 pyproject = true;
26
27 src = fetchFromGitHub {
28 owner = "behave";
29 repo = "behave";
30 rev = "v${version}";
31 hash = "sha256-G1o0a57MRczwjGLl/tEYC+yx3nxpk6+E58RvR9kVJpA=";
32 };
33
34 build-system = [ setuptools ];
35
36 nativeCheckInputs = [
37 pytestCheckHook
38 assertpy
39 mock
40 path
41 pyhamcrest
42 pytest-html
43 ];
44
45 doCheck = pythonOlder "3.12";
46
47 pythonImportsCheck = [ "behave" ];
48
49 dependencies = [
50 colorama
51 cucumber-tag-expressions
52 parse
53 parse-type
54 six
55 ];
56
57 postPatch = ''
58 patchShebangs bin
59 '';
60
61 # timing-based test flaky on Darwin
62 # https://github.com/NixOS/nixpkgs/pull/97737#issuecomment-691489824
63 disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [
64 "test_step_decorator_async_run_until_complete"
65 ];
66
67 postCheck = ''
68 ${python.interpreter} bin/behave -f progress3 --stop --tags='~@xfail' features/
69 ${python.interpreter} bin/behave -f progress3 --stop --tags='~@xfail' tools/test-features/
70 ${python.interpreter} bin/behave -f progress3 --stop --tags='~@xfail' issue.features/
71 '';
72
73 meta = with lib; {
74 changelog = "https://github.com/behave/behave/blob/${src.rev}/CHANGES.rst";
75 homepage = "https://github.com/behave/behave";
76 description = "behaviour-driven development, Python style";
77 mainProgram = "behave";
78 license = licenses.bsd2;
79 maintainers = with maintainers; [
80 alunduil
81 maxxk
82 ];
83 };
84}