mutmut 3.0.5__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,26 @@
1
+ Screen {
2
+ layout: vertical;
3
+ }
4
+ .container {
5
+ layout: horizontal;
6
+ height: 50%;
7
+ }
8
+
9
+
10
+ DataTable {
11
+ color: #c0c0c0;
12
+ }
13
+
14
+ DataTable:focus {
15
+ color: white;
16
+ }
17
+
18
+ .datatable--cursor {
19
+ color: black;
20
+ background: white;
21
+ }
22
+
23
+ DataTable:focus .datatable--cursor {
24
+ color: black;
25
+ background: orange;
26
+ }
@@ -0,0 +1,22 @@
1
+ =======
2
+ Credits
3
+ =======
4
+
5
+ * Anders Hovmöller <boxed@killingar.net>
6
+ * Felipe Pontes <felipemfpontes@gmail.com>
7
+ * William Orr <will@worrbase.com>
8
+ * Trevin Gandhi <trevin.gandhi@petuum.com>
9
+ * Daniel Hahler <git@thequod.de>
10
+ * Marcelo Da Cruz Pinto
11
+ * Jakub Stolarski
12
+ * Hristo Georgiev
13
+ * Savo Kovačević <savo.s.kovacevic@gmail.com>
14
+ * Nathan Klapstein <nklapste@ualberta.ca>
15
+ * Brian Skinn <brian.skinn@gmail.com>
16
+ * Jim Jazwiecki <jim.jazwiecki@gmail.com>
17
+ * neroks <gneroks@gmail.com>
18
+ * John Vandenberg <jayvdb@gmail.com>
19
+ * Luca Simonetto <luca.simonetto.94@gmail.com>
20
+ * Emil Stenström <emil@emilstenstrom.se>
21
+ * Roxane Bellott <roxane.bellot@gmail.com>
22
+ * Tomáš Chvátal <tchvatal@suse.com>
@@ -0,0 +1,12 @@
1
+ Copyright (c) 2016, Anders Hovmöller
2
+ All rights reserved.
3
+
4
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
5
+
6
+ * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
7
+
8
+ * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
9
+
10
+ * Neither the name of mutmut nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
11
+
12
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,201 @@
1
+ Metadata-Version: 2.1
2
+ Name: mutmut
3
+ Version: 3.0.5
4
+ Summary: mutation testing for Python 3
5
+ Home-page: https://github.com/boxed/mutmut
6
+ Author: Anders Hovmöller
7
+ Author-email: boxed@killingar.net
8
+ License: BSD
9
+ Keywords: mutmut mutant mutation test testing
10
+ Classifier: Development Status :: 4 - Beta
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: License :: OSI Approved :: BSD License
13
+ Classifier: Natural Language :: English
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.7
16
+ License-File: LICENSE
17
+ License-File: AUTHORS.rst
18
+ Requires-Dist: parso
19
+ Requires-Dist: click
20
+ Requires-Dist: junit-xml==1.8
21
+ Requires-Dist: setproctitle
22
+ Requires-Dist: textual
23
+
24
+ mutmut - python mutation tester
25
+ ===============================
26
+
27
+ .. image:: https://github.com/boxed/mutmut/actions/workflows/tests.yml/badge.svg
28
+ :target: https://github.com/boxed/mutmut/actions/workflows/tests.yml
29
+
30
+ .. image:: https://readthedocs.org/projects/mutmut/badge/?version=latest
31
+ :target: https://mutmut.readthedocs.io/en/latest/?badge=latest
32
+ :alt: Documentation Status
33
+
34
+
35
+ Mutmut is a mutation testing system for Python, with a strong focus on ease
36
+ of use. If you don't know what mutation testing is try starting with
37
+ `this article <https://kodare.net/2016/12/01/mutmut-a-python-mutation-testing-system.html>`_.
38
+
39
+ Some highlight features:
40
+
41
+ - Found mutants can be applied on disk with a simple command making it very
42
+ easy to work with the results
43
+ - Remembers work that has been done, so you can work incrementally
44
+ - Knows which tests to execute, speeding up mutation testing
45
+ - Interactive terminal based UI
46
+ - Parallel and fast execution
47
+
48
+ .. image:: browse_screenshot.png
49
+
50
+
51
+ If you want to mutate code outside of functions, you can try using mutmut 2,
52
+ which has a different execution model than mutmut 3+.
53
+
54
+
55
+ Requirements
56
+ ------------
57
+
58
+ Mutmut must be run on a system with `fork` support. This means that if you want
59
+ to run on windows, you must run inside WSL.
60
+
61
+
62
+
63
+ Install and run
64
+ ---------------
65
+
66
+ You can get started with a simple:
67
+
68
+ .. code-block:: console
69
+
70
+ pip install mutmut
71
+ mutmut run
72
+
73
+ This will by run pytest on tests in the "tests" or "test" folder and
74
+ it will try to figure out where the code to mutate is.
75
+
76
+
77
+
78
+ .. code-block:: ini
79
+
80
+ [mutmut]
81
+ paths_to_mutate=src/
82
+ tests_dir=tests/
83
+
84
+ You can stop the mutation run at any time and mutmut will restart where you
85
+ left off. It will continue where it left off, and re-test functions that were
86
+ modified since last run.
87
+
88
+ To work with the results, use `mutmut browse` where you can see the mutants,
89
+ retest them when you've updated your tests.
90
+
91
+ You can also write a mutant to disk from the `browse` interface, or via
92
+ `mutmut apply <mutant>`. You should **REALLY** have the file you mutate under
93
+ source code control and committed before you apply a mutant!
94
+
95
+
96
+ Wildcards for testing mutants
97
+ -----------------------------
98
+
99
+ Unix filename pattern matching style on mutants is supported. Example:
100
+
101
+ .. code-block:: console
102
+
103
+ mutmut run "my_module*"
104
+ mutmut run "my_module.my_function*"
105
+
106
+ In the `browse` TUI you can press `f` to retest a function, and `m` to retest
107
+ an entire module.
108
+
109
+
110
+ "also copy" files
111
+ -----------------
112
+
113
+ To run the full test suite some files are often needed above the tests and the
114
+ source. You can configure to copy extra files that you need by adding
115
+ directories and files to `also_copy` in your `setup.cfg`:
116
+
117
+ .. code-block:: ini
118
+
119
+ also_copy=
120
+ iommi/snapshots/
121
+ conftest.py
122
+
123
+
124
+ Limit stack depth
125
+ -----------------
126
+
127
+ In big code bases some functions are called incidentally by huge swaths of the
128
+ codebase, but you really don't want tests that hit those executions to count
129
+ for mutation testing purposes. Incidentally tested functions lead to slow
130
+ mutation testing as hundreds of tests can be checked for things that should
131
+ have clean and fast unit tests, and it leads to bad test suites as any
132
+ introduced bug in those base functions will lead to many tests that fail which
133
+ are hard to understand how they relate to the function with the change.
134
+
135
+ You can configure mutmut to only count a test as being relevant for a function
136
+ if the stack depth from the test to the function is below some limit. In your
137
+ `setup.cfg` add:
138
+
139
+ .. code-block:: ini
140
+
141
+ max_stack_depth=8
142
+
143
+ A lower value will increase mutation speed and lead to more localized tests,
144
+ but will also lead to more surviving mutants that would otherwise have been
145
+ caught.
146
+
147
+
148
+ Exclude files from mutation
149
+ ---------------------------
150
+
151
+ You can exclude files from mutation in `setup.cfg`:
152
+
153
+ .. code-block::
154
+
155
+ do_not_mutate=
156
+ *__tests.py
157
+
158
+
159
+ Whitelisting
160
+ ------------
161
+
162
+ You can mark lines like this:
163
+
164
+ .. code-block:: python
165
+
166
+ some_code_here() # pragma: no mutate
167
+
168
+ to stop mutation on those lines. Some cases we've found where you need to
169
+ whitelist lines are:
170
+
171
+ - The version string on your library. You really shouldn't have a test for this :P
172
+ - Optimizing break instead of continue. The code runs fine when mutating break
173
+ to continue, but it's slower.
174
+
175
+
176
+ Example mutations
177
+ -----------------
178
+
179
+ - Integer literals are changed by adding 1. So 0 becomes 1, 5 becomes 6, etc.
180
+ - `<` is changed to `<=`
181
+ - break is changed to continue and vice versa
182
+
183
+ In general the idea is that the mutations should be as subtle as possible.
184
+ See `__init__.py` for the full list.
185
+
186
+
187
+ Workflow
188
+ --------
189
+
190
+ This section describes how to work with mutmut to enhance your test suite.
191
+
192
+ 1. Run mutmut with `mutmut run`. A full run is preferred but if you're just
193
+ getting started you can exit in the middle and start working with what you
194
+ have found so far.
195
+ 2. Show the mutants with `mutmut browse`
196
+ 3. Find a mutant you want to work on and write a test to try to kill it.
197
+ 4. Press `r` to rerun the mutant and see if you successfully managed to kill it.
198
+
199
+ Mutmut keeps the data of what it has done and the mutants in the `mutants/`
200
+ directory.If you want to make sure you run a full mutmut run you can delete
201
+ this directory to start from scratch.
@@ -0,0 +1,10 @@
1
+ mutmut/__init__.py,sha256=HDQy_am_TuPHZQGTFVSeaJsaYvF7L-9AseXHuX4SFE8,8905
2
+ mutmut/__main__.py,sha256=-JP2n6tis1VwLcJQkQDXnmxu90boUwQwS42nnL8caO4,48325
3
+ mutmut/result_browser_layout.tcss,sha256=w7HZ-Ox3KwkgqEijpLbcQOCvV9NmzWEEIx9aF7m4MJs,311
4
+ mutmut-3.0.5.dist-info/AUTHORS.rst,sha256=8TSzLFfqqHsxF0EtnJidExV1CtJkhgsUOG94JIticS8,687
5
+ mutmut-3.0.5.dist-info/LICENSE,sha256=uy76yP7fDHTtI37Via4XLfFIkEpXgafsmZkJLcr29Dk,1471
6
+ mutmut-3.0.5.dist-info/METADATA,sha256=dtht_92SHZsqJe54UnJwzGZScf7VXetavskVW4jG89M,5980
7
+ mutmut-3.0.5.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
8
+ mutmut-3.0.5.dist-info/entry_points.txt,sha256=qjOZfcGw95gooit1WRIYz-DB9IQ1atqRSTaHTI5CoTs,47
9
+ mutmut-3.0.5.dist-info/top_level.txt,sha256=kkYeffNQuAzat-wZ_8Om-BNrYRgqG6krGvNO6aRMfiA,7
10
+ mutmut-3.0.5.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: bdist_wheel (0.44.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ mutmut = mutmut.__main__:cli
@@ -0,0 +1 @@
1
+ mutmut