1{
2 lib,
3 buildPythonPackage,
4 fetchPypi,
5 fetchpatch2,
6 mock,
7 pytestCheckHook,
8 pythonOlder,
9 setuptools,
10}:
11
12buildPythonPackage rec {
13 pname = "parameterized";
14 version = "0.9.0";
15 format = "pyproject";
16
17 disabled = pythonOlder "3.7";
18
19 src = fetchPypi {
20 inherit pname version;
21 hash = "sha256-f8kFJyzvpPNkwaNCnLvpwPmLeTmI77W/kKrIDwjbCbE=";
22 };
23
24 patches = [
25 (fetchpatch2 {
26 name = "parameterized-docstring-3.13-compat.patch";
27 url = "https://gitweb.gentoo.org/repo/gentoo.git/plain/dev-python/parameterized/files/parameterized-0.9.0-py313-test.patch?id=dec60bb6900d6ebdaaa6aa1dcb845b30b739f9b5";
28 hash = "sha256-tWcN0eRC0oRHrOaa/cctXLhi1WapDKvxO36e6gU6UIk=";
29 })
30 ];
31
32 postPatch = ''
33 # broken with pytest 7 and python 3.12
34 # https://github.com/wolever/parameterized/issues/167
35 # https://github.com/wolever/parameterized/pull/162
36 substituteInPlace parameterized/test.py \
37 --replace 'assert_equal(missing, [])' "" \
38 --replace "assertRaisesRegexp" "assertRaisesRegex"
39 '';
40
41 nativeBuildInputs = [ setuptools ];
42
43 # 'yield' keyword is allowed in fixtures, but not in tests (test_naked_function)
44 doCheck = false;
45
46 checkInputs = [
47 mock
48 pytestCheckHook
49 ];
50
51 enabledTestPaths = [ "parameterized/test.py" ];
52
53 pythonImportsCheck = [ "parameterized" ];
54
55 meta = with lib; {
56 description = "Parameterized testing with any Python test framework";
57 homepage = "https://github.com/wolever/parameterized";
58 changelog = "https://github.com/wolever/parameterized/blob/v${version}/CHANGELOG.txt";
59 license = licenses.bsd2;
60 maintainers = [ ];
61 };
62}