Skip to content

Releases: se2p/pynguin

Pynguin v0.15.0

13 Dec 12:46
v0.15.0
Compare
Choose a tag to compare
  • Fix a bug for mutating a statement that is not in the current test case (see #17).
  • Set default assertion generation to SIMPLE due to issues with the experimental
    new generation strategy.
  • Add GitHub Actions that also runs our CI chain on GitHub.

Pynguin v0.14.0

06 Dec 11:46
v0.14.0
Compare
Choose a tag to compare
  • Breaking: Simplify the logging such that Pynguin uses different log levels also
    for the log file. This removes the -q option to make all outputs quiet.
  • Pynguin now also supports field accesses during test generation. This is a
    preliminary feature.
  • Fix a deadlock in the executor
  • Pynguin now uses Python 3.10 as its default version for the provided Docker
    container as well as our CI. Still, Pynguin supports Python 3.8 and 3.9. Up to now,
    Python 3.11 is not yet supported.
  • Refactor the state-trace implementation
  • Remove the module-loader singleton
  • Fix loading of mutated module for assertion generation. Caused that no assertion
    was generated because the mutants were not loaded properly. This is a regression
    from merging the assertion-generation strategy in Pynguin 0.13.0.

Pynguin v0.13.2

10 Nov 09:30
v0.13.2
Compare
Choose a tag to compare
  • Add the reference to the preprint of our EMSE journal submission to documentation.
  • Clarify on the value of the PYNGUIN_DANGER_AWARE environment variable. One can
    set an arbitrary value for the variable, Pynguin only checks whether its defined (#16 ).

Pynguin v0.13.1

05 Nov 16:26
v0.13.1
Compare
Choose a tag to compare

Fix documentation generation by adding our MutPy fork as a dependency

Pynguin v0.13.0

05 Nov 12:51
v0.13.0
Compare
Choose a tag to compare
  • Add an assertion-generation strategy based on mutation (thanks to @f-str).

    The new strategy is enabled by default (can be configured using the
    --assertion-generation parameter). It uses a custom
    fork of the mutation-testing framework
    MutPy, which mutates the subject under test and for
    each mutant traces the values of fields and returned by method calls. If these values
    differ between mutant and original code, an assertion is generated based on the result
    on the original subject under test. One can also control whether the strategy shall
    also generate assertions for unchanged values by the --generate-all-assertions flag.

    The release also updates the documentation accordingly.

    Note: This feature is an early prototype of such an assertion generation, which
    might cause unexpected behaviour. You can switch back to the previous strategy for
    assertion generation by setting --assertion-generation SIMPLE.

Pynguin v0.12.0

05 Nov 08:10
v0.12.0
Compare
Choose a tag to compare
  • Generate more reasonable variable names in tests.
    Before this release, Pynguin only generated variables named var0, var1, etc.
    A simple heuristics now attempts to generate more reasonable names depending on the
    type of the variable, such as int_0, bool_1, or str_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

03 Nov 08:52
v0.11.0
Compare
Choose a tag to compare
  • 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 FitnessValues to avoid expensive re-computations. This also
    extends the API of the FitnessValues and 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

06 Oct 14:26
v0.10.0
Compare
Choose a tag to compare
  • Provide support for Python 3.10
  • Pynguin now set typing.TYPE_CHECKING = True explicitly 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 for loops
  • 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_CHECKING conditions

Pynguin v0.9.2

21 Jun 11:47
v0.9.2
Compare
Choose a tag to compare
  • Add explicit code-execution prevention (thanks to @Wooza).

    Pynguin now requires you to set the PYNGUIN_DANGER_AWARE environment
    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

17 Jun 11:31
Compare
Choose a tag to compare
  • Fix spelling errors in README