Skip to content

Commit

Permalink
Add .hypothesis to .gitignore and try an older version of Hypothesis …
Browse files Browse the repository at this point in the history
…for 2.6
  • Loading branch information
ceridwen committed Apr 2, 2016
2 parents 08671fc + fed89ef commit 23a8e2b
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 14 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,4 @@ env/
.coverage
.ropeproject
.idea
.hypothesis
8 changes: 7 additions & 1 deletion CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,11 @@

* parametrize ids can accept None as specific test id. The
automatically generated id for that argument will be used.
Thanks `@palaviv`_ for the complete PR (`#1468`_).

*
* improved idmaker name selection in case of duplicate ids in
parametrize.
Thanks `@palaviv`_ for the complete PR (`#1474`_).

*

Expand All @@ -39,12 +42,15 @@
.. _@kalekundert: https://github.com/kalekundert
.. _@tareqalayan: https://github.com/tareqalayan
.. _@ceridwen: https://github.com/ceridwen
.. _@palaviv: https://github.com/palaviv

.. _#1428: https://github.com/pytest-dev/pytest/pull/1428
.. _#1444: https://github.com/pytest-dev/pytest/pull/1444
.. _#1441: https://github.com/pytest-dev/pytest/pull/1441
.. _#1454: https://github.com/pytest-dev/pytest/pull/1454
.. _#1351: https://github.com/pytest-dev/pytest/issues/1351
.. _#1468: https://github.com/pytest-dev/pytest/pull/1468
.. _#1474: https://github.com/pytest-dev/pytest/pull/1474

2.9.2.dev1
==========
Expand Down
12 changes: 9 additions & 3 deletions _pytest/python.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import types
import sys
import math
import collections

import py
import pytest
Expand Down Expand Up @@ -1161,9 +1162,14 @@ def _idvalset(idx, valset, argnames, idfn, ids):
def idmaker(argnames, argvalues, idfn=None, ids=None):
ids = [_idvalset(valindex, valset, argnames, idfn, ids)
for valindex, valset in enumerate(argvalues)]
if len(set(ids)) < len(ids):
# user may have provided a bad idfn which means the ids are not unique
ids = [str(i) + testid for i, testid in enumerate(ids)]
if len(set(ids)) != len(ids):
# The ids are not unique
duplicates = [testid for testid in ids if ids.count(testid) > 1]
counters = collections.defaultdict(lambda: 0)
for index, testid in enumerate(ids):
if testid in duplicates:
ids[index] = testid + str(counters[testid])
counters[testid] += 1
return ids

def showfixtures(config):
Expand Down
17 changes: 8 additions & 9 deletions testing/python/metafunc.py
Original file line number Diff line number Diff line change
Expand Up @@ -254,9 +254,9 @@ def ids(val):
(20, KeyError()),
("three", [1, 2, 3]),
], idfn=ids)
assert result == ["0a-a",
"1a-a",
"2a-a",
assert result == ["a-a0",
"a-a1",
"a-a2",
]

@pytest.mark.issue351
Expand All @@ -283,10 +283,9 @@ def test_idmaker_with_ids(self):

def test_idmaker_with_ids_unique_names(self):
from _pytest.python import idmaker
result = idmaker(("a", "b"), [(1, 2),
(3, 4)],
ids=["a", "a"])
assert result == ["0a", "1a"]
result = idmaker(("a"), [1,2,3,4,5],
ids=["a", "a", "b", "c", "b"])
assert result == ["a0", "a1", "b0", "c", "b1"]

def test_addcall_and_parametrize(self):
def func(x, y): pass
Expand Down Expand Up @@ -850,8 +849,8 @@ def test_function(a, b):
result = testdir.runpytest("-v")
assert result.ret == 1
result.stdout.fnmatch_lines_random([
"*test_function*0a*PASSED",
"*test_function*1a*FAILED"
"*test_function*a0*PASSED",
"*test_function*a1*FAILED"
])

@pytest.mark.parametrize(("scope", "length"),
Expand Down
2 changes: 1 addition & 1 deletion tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ deps=
[testenv:py26]
commands= py.test --lsof -rfsxX {posargs:testing}
deps=
hypothesis<3.03
hypothesis<3.0
nose
mock<1.1 # last supported version for py26

Expand Down

0 comments on commit 23a8e2b

Please sign in to comment.