Skip to content

Releases: se2p/pynguin

Pynguin v0.12.0

05 Nov 08:10
v0.12.0

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

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

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

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

Choose a tag to compare

  • Fix spelling errors in README

Pynguin v0.9.0

07 Jun 09:41
v0.9.0

Choose a tag to compare

  • Proper support for Python 3.9
  • Improve branch-distance calculations for byte values
  • Cleanup algorithm implementations

Pynguin v0.8.1

01 Jun 07:24
v0.8.1

Choose a tag to compare

  • 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

26 Apr 11:58
v0.8.0

Choose a tag to compare

  • Breaking: Renamed RANDOM_SEARCH to RANDOM_TEST_SUITE_SEARCH to 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 --selection parameter.

  • 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 OSError from executors queue.

    The queue was kept open until the garbage collector delete the object. This
    caused an OSError because 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) and bar(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

26 Mar 10:13
v0.7.2

Choose a tag to compare

  • Fixes to seeding strategies

Pynguin v0.7.1

24 Feb 16:03
v0.7.1

Choose a tag to compare

  • Fix readme file