Releases: se2p/pynguin
Pynguin v0.12.0
- Generate more reasonable variable names in tests.
Before this release, Pynguin only generated variables namedvar0,var1, etc.
A simple heuristics now attempts to generate more reasonable names depending on the
type of the variable, such asint_0,bool_1, orstr_2.
We also adjusted the documentation to match this change. - We updated all provided PyCharm run configurations the use the more sophisticated
queue example instead of the simple example module to see an improved output. - Prevent a potential regression when updating the dependencies to version 0.0.17 of the
simple-parsing library for CLI argument
parsing, which changed its API.
Pynguin v0.11.0
- Fix a control-dependency bug in DynaMOSA. Loops in the control-dependence graph
caused DynaMOSA to not consider certain targets because they were control
dependent on goals that had not yet been covered due to the loop. - Improve documentation
- Split and extend
FitnessValuesto avoid expensive re-computations. This also
extends the API of theFitnessValuesand refactors large parts of the fitness
handling. - Fix for bumpiness of flaky tests. Whenever Pynguin generates a test that behaves
flaky result could be that coverage over time looks like ventricular fibrillation
especially for the MIO algorithm. The fix prevents this by carefully revisiting
the equality of chromosomes. - Improve handling of entry/exit nodes in the CFG; this fixes issues with Python 3.10
Pynguin v0.10.0
- Provide support for Python 3.10
- Pynguin now set
typing.TYPE_CHECKING = Trueexplicitly before parsing the
subject under test in order to be able to collect also information about types
that are only imported due to type checking/providing type annotations. - Improved generation of collection statements
- Cleanup the implementation of the algorithms
- Add supports for enums in the test-generation process
- Cleanup the implementation of the dynamic value seeding
- Make Pynguin executions as deterministic as we possibly can
- Make DynaMOSA the default algorithm
- Allow the generation of an HTML coverage report similar to the one generated by
Coverage.py. This allows to show the subject under test and the coverage achieved
by the test cases generated by Pynguin in the web browser. - Add a CITATION.cff file
- Improve the internal control-flow graph
- Improve the documentation
- Cleanup and remove unused code
- Fix a bug in post-processing
- Fix a bug in branch coverage instrumentation on
forloops - Add a variant of the whole-suite algorithm that uses an archive
- Guard imports that are only necessary for type checking in Pynguin's modules by
if typing.TYPE_CHECKINGconditions
Pynguin v0.9.2
-
Add explicit code-execution prevention (thanks to @Wooza).
Pynguin now requires you to set the
PYNGUIN_DANGER_AWAREenvironment
variable before it actually does test generation. This was added due
to the fact that Pynguin executes the module under test, including its
dependencies, which could potentially cause harm on the user's system.
By requiring the variable to be set explicitly, a user confirms that
they are aware of this issue. Inside the Docker container, the
variable is set automatically; we highly recommend this way of
executing Pynguin!
Pynguin v0.9.1
- Fix spelling errors in README
Pynguin v0.9.0
- Proper support for Python 3.9
- Improve branch-distance calculations for
bytevalues - Cleanup algorithm implementations
Pynguin v0.8.1
- Regroup configuration options
- Improve branch-distance calculations for data containers
- Save import coverage to a separate output variable
- Delete some unused code
- Add warning notice to read-me file
Pynguin v0.8.0
-
Breaking: Renamed
RANDOM_SEARCHtoRANDOM_TEST_SUITE_SEARCHto select the
random-sampling algorithm based on test suites introduced in Pynguin 0.7.0. -
Improve input generation for collection types.
-
Add an implementation of tournament selection for the use with DynaMOSA, MOSA, and
Whole Suite.For Whole Suite, on can choose the selection algorithm (either rank or tournament
selection) by setting the value of the--selectionparameter. -
Add DynaMOSA test-generation algorithm.
It can be selected via
--algorithm DYNAMOSA. -
Add MIO test-generation algorithm.
It can be selected via
--algorithm MIO. -
Add a random sampling algorithm based on test cases.
The algorithm is available by setting
--algorithm RANDOM_TEST_CASE_SEARCH. It
randomly picks one test case, adds all available fitness functions to it and adds
it to the MOSA archive. If the test case is covering one fitness target it is
retrieved by the archive. If it covers an already covered target but is shorter
than the currently covering test case for that target, it replaces the latter. -
Fix
OSErrorfrom executors queue.The queue was kept open until the garbage collector delete the object. This
caused anOSErrorbecause it reached the OS's limit of open resource handles.
We now close the queue in the test-case executor manually to mitigate this. -
Fix
__eq__and__hash__of parameterised statements.Before this, functions such as
foo(a)andbar(a)had been considered
equivalent from their equals and hash-code implementation, which only compared the
parameters and returns but not the actual function's name. -
Fix logging to work properly again.
Pynguin v0.7.2
- Fixes to seeding strategies
Pynguin v0.7.1
- Fix readme file