forked from HypothesisWorks/hypothesis
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCHANGES.txt
165 lines (143 loc) · 7.83 KB
/
CHANGES.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
0.0.1 - 10/03/2013
* Initial release.
* Basic working prototype. Demonstrates idea, probably shouldn't be used.
0.0.2 - 12/03/2013
* Starting to tighten up on the internals.
* Change API to allow more flexibility in configuration.
* More testing.
0.0.3 - 13/03/2013
* Improved a few internals.
* Opened up creating generators from instances as a general API.
* Test integration.
0.0.4 - 13/03/2013
* No changes except that I checked in a failing test case for 0.0.3
so had to replace the release. Doh
0.0.5 - 13/03/2013
* No changes except trying to fix packaging
0.1.0 - 23/03/2013
* Introduce stateful testing.
* Massive rewrite of internals to add flags and strategies.
0.1.1 - 24/03/2013
* Python 3.x support via 2to3.
* Use new style classes (oops).
0.1.2 - 24/03/2013
* Bugfix: Stateful testing was not minimizing correctly and could
throw exceptions.
* Better support for recursive strategies.
* Support for named tuples.
* Much faster integer generation.
0.1.3 - 03/05/2013
* Bugfix: Stateful testing behaved incorrectly with subclassing.
* Complex number support
* support for recursive strategies
* different error for hypotheses with unsatisfiable assumptions
0.1.4 - 14/12/2013 fu
* Make verification runs time bounded with a configurable timeout
0.2.0 - 07/01/2015
* It's aliiive.
* Improve python 3 support using six.
* Distinguish between byte and unicode types.
* Fix issues where FloatStrategy could raise.
* Allow stateful testing to request constructor args.
* Fix for issue where test annotations would timeout based on when the
module was loaded instead of when the test started
0.2.1 - 07/01/2015
* Fix a bug in the new stateful testing feature where you could make
__init__ a @requires method. Simplification would not always work if the
prune method was able to successfully shrink the test.
0.2.2 - 08/01/2015
* Fix an embarassing complete failure of the installer caused by my being
bad at version control
0.3.0 - 12/01/2015
* Complete redesign of the data generation system. Extreme breaking change
for anyone who was previously writing their own SearchStrategy
implementations. These will not work any more and you'll need to modify
them.
* New settings system allowing more global and modular control of Verifier
behaviour.
* Decouple SearchStrategy from the StrategyTable. This leads to much more
composable code which is a lot easier to understand.
* A significant amount of internal API renaming and moving. This may also
break your code.
* Expanded available descriptors, allowing for generating integers or
floats in a specific range.
* Significantly more robust. A very large number of small bug fixes, none
of which anyone is likely to have ever noticed.
* Deprecation of support for pypy and python 3 prior to 3.3. 3.3 and 3.4.
Supported versions are 2.7.x, 3.3.x, 3.4.x. I expect all of these to
remain officially supported for a very long time. I would not be
surprised to add pypy support back in later but I'm not going to do so
until I know someone cares about it. In the meantime it will probably
still work.
0.3.1 - 13/01/2015
* Support for generation of frozenset and Random values
* Correct handling of the case where a called function mutates it argument.
This involved introducing a notion of a strategies knowing how to copy
their argument. The default method should be entirely acceptable and the
worst case is that it will continue to have the old behaviour if you
don't mark your strategy as mutable, so this shouldn't break anything.
* Fix for a bug where some strategies did not correctly implement
could_have_produced. It is very unlikely that any of these would have
been seen in the wild, and the consequences if they had been would have
bene minor.
* Re-export the @given decorator from the main hypothesis namespace. It's
still available at the old location too.
* Minor performance optimisation for simplifying long lists.
0.3.2 - 16/01/2015
* Fix a bug where if you specified floats_in_range with integer arguments
Hypothesis would error in example simplification.
* Improve the statistical distribution of the floats you get for the
floats_in_range strategy. I'm not sure whether this will affect users in
practice but it took my tests for various conditions from flaky to rock
solid so it at the very least improves discovery of the artificial cases
I'm looking for.
* Improved repr() for strategies and RandomWithSeed instances.
* Add detection for flaky test cases where hypothesis managed to find an
example which breaks it but on the final invocation of the test it does
not raise an error. This will typically happen with too much recursion
errors but could conceivably happen in other circumstances too.
* Provide a "derandomized" mode. This allows you to run hypothesis with
zero real randomization, making your build nice and deterministic. The
tests run with a seed calculated from the function they're testing so you
should still get a good distribution of test cases.
* Add a mechanism for more conveniently defining tests which just sample
from some collection.
* Fix for a really subtle bug deep in the internals of the strategy table.
In some circumstances if you were to define instance stratagies for both
a parent class and one or more of its subclasses you would under some
circumstances get the strategy for the wrong superclass of an instance.
It is very unlikely anyone has ever encountered this in the wild, but it
is conceivably possible given that a mix of namedtuple and tuple are used
fairly extensively inside hypothesis which do exhibit this pattern of
strategy.
0.4.0 - 21/01/2015
FLAGSHIP FEATURE: Hypothesis now persists examples for later use. It stores
data in a local SQLite database and will reuse it for all tests of the same
type.
LICENSING CHANGE: Hypothesis is now released under the Mozila Public License
2.0. This applies to all versions from 0.4.0 onwards until further notice.
The previous license remains applicable to all code prior to 0.4.0.
Enhancements:
* Printing of failing examples. I was finding that the pytest runner was not
doing a good job of displaying these, and that Hypothesis itself could do
much better.
* Drop dependency on six for cross-version compatibility. It was easy
enough to write the shim for the small set of features that we care about
and this lets us avoid a moderately complex dependency.
* Some improvements to statistical distribution of selecting from small (<=
3 elements)
* Improvements to parameter selection for finding examples.
Bugs fixed:
* could_have_produced for lists, dicts and other collections would not have
examined the elements and thus when using a union of different types of
list this could result in Hypothesis getting confused and passing a value
to the wrong strategy. This could potentially result in exceptions being
thrown from within simplification.
* sampled_from would not work correctly on a single element list.
* Hypothesis could get *very* confused by values which are
equal despite having different types being used in descriptors. Hypothesis
now has its own more specific version of equality it uses for descriptors
and tracking. It is always more fine grained than Python equality: Things
considered != are not considered equal by hypothesis, but some things that
are considered == are distinguished. If your test suite uses both frozenset
and set tests this bug is probably affecting you.