Changelog
=========
All notable changes to this project will be documented in this file.
The format is based on `Keep a
Changelog `__, and this project
adheres to `Semantic
Versioning `__.
Please mark backwards incompatible changes with an exclamation mark at
the start.
[Unreleased]
------------
[6.0.0] - 2025-09-23
--------------------
Changed
~~~~~~~
-  ! Updated the ``git`` gem dependency from ``~> 1.8`` to ``~> 3``
-  ! Set the minimum Ruby version requirement to ``3.1.0``
.. _section-1:
[5.4.2] - 2025-05-22
--------------------
Fixed
~~~~~
-  Dragnet no longer crashes when an invalid / non-existing SHA1 is used
   in a MTR.
.. _section-2:
[5.4.1] - 2025-04-23
--------------------
.. _fixed-1:
Fixed
~~~~~
-  A bug that caused Dragnet to crash during a multi-repo mode
   verification in which all the repositories listed in the MTR passed
   the verification.
.. _section-3:
[5.4.0] - 2025-04-07
--------------------
Added
~~~~~
-  A ``--number-only`` / ``-n`` switch to the ``--version`` CLI command
   that only prints the version number.
.. _section-4:
[5.3.1] - 2024-12-13
--------------------
.. _fixed-2:
Fixed
~~~~~
-  Dragnet no longer crashes when generating an HTML report for a
   repository hosted on Github.
.. _section-5:
[5.3.0] - 2024-12-03
--------------------
.. _added-1:
Added
~~~~~
-  The JSON export now includes the path to the MTR files.
.. _changed-1:
Changed
~~~~~~~
-  The ``description`` field will now be rendered as Markdown in the
   HTML report.
.. _section-6:
[5.2.1] - 2024-11-13
--------------------
.. _fixed-3:
Fixed
~~~~~
-  Made the date/time format used for the ``started_at`` and
   ``finished_at`` attributes in the exported JSON files stable.
.. _section-7:
[5.2.0] - 2024-04-16
--------------------
.. _added-2:
Added
~~~~~
-  The JSON file produced when the ``-e`` CLI switch is given now
   includes:
   -  The ``started_at``, ``finished_at`` and ``runtime`` attributes
      under the ``verification_result`` structure.
   -  A copy of the ``started_at`` and ``finished_at`` attributes
      directly in each of the exported objects (This is being added
      temporarily for backwards-compatibility reasons and will be
      removed later).
.. _section-8:
[5.1.2] - 2023-12-11
--------------------
.. _fixed-4:
Fixed
~~~~~
-  Fixed the rendering of array-type Test Record IDs in the HTML report.
   They are no longer directly rendered with the extra characters added
   by Ruby’s default ``#to_s`` method.
-  Fixed a ``NoMethodError`` that appeared after the release of
   ActiveSupport 7.1.
.. _section-9:
[5.1.1] - 2023-07-14
--------------------
.. _fixed-5:
Fixed
~~~~~
-  Fixed an issue that caused the validation to fail when the listed
   files or glob patterns had a ``/`` at the beginning.
.. _section-10:
[5.1.0] - 2023-07-13
--------------------
.. _added-3:
Added
~~~~~
-  The ``Explorer`` class will now log all the found MTR files.
.. _section-11:
[5.0.1] - 2023-06-05
--------------------
.. _fixed-6:
Fixed
~~~~~
-  Fixed a bug where the validated and transformed meta-data did not get
   assigned to the TestRecord. This, in turn, caused issues when
   rendering the HTML report since it assumes that these attributes will
   be arrays.
.. _section-12:
[5.0.0] - 2023-05-26
--------------------
.. _changed-2:
Changed
~~~~~~~
-  ! Updated ``activesupport`` from ``~> 6`` to ``~> 7``
-  ! Set the minimum Ruby version for the project to ``2.7.0``
.. _section-13:
[4.0.0] - 2023-05-24
--------------------
.. _changed-3:
Changed
~~~~~~~
-  The “Tester name” attribute will only be visible in the HTML report
   when the MTR has a value in the ``name`` field.
-  The ``name`` attribute of the MTRs will now be validated, only
   strings and arrays of strings are allowed now.
.. _added-4:
Added
~~~~~
-  Added the ``test_method`` and ``tc_derivation_method`` fields to the
   JSON and HTML exports.
-  Added the ``MetaDataFieldValidator`` class.
-  Added the ``test_method`` and ``tc_derivation_method`` attributes to
   the ``TestRecord`` class.
-  Added validation for the ``test_method`` and ``tc_derivation_method``
   attributes of the MTRs, they can only have strings or arrays of
   strings.
.. _section-14:
[3.0.0] - 2023-04-05
--------------------
.. _added-5:
Added
~~~~~
-  Added the ``Exporters::IDGenerator`` class.
-  Added the ``DescriptionValidator`` class.
.. _changed-4:
Changed
~~~~~~~
-  Changed the ``JSONExporter`` class. It now makes use of the
   ``IDGenerator`` class to attach a unique ID to each of the exported
   MTRs.
-  Added validation for the ``descriptionn`` field of the MTRs. Only
   Strings are allowed now.
.. _section-15:
[2.3.0] - 2023-03-31
--------------------
.. _added-6:
Added
~~~~~
-  Added a ``rescue`` to the ``software_branches`` method in the
   ``HTMLExporter`` class to keep it from crashing when it cannot read
   the branches from one of the repositories.
.. _section-16:
[2.2.0] - 2023-03-08
--------------------
.. _changed-5:
Changed
~~~~~~~
-  Moved the ``repo_base`` and ``relative_to_repo`` methods from the
   ``HTMLExporter`` class to the ``RepositoryHelper`` module.
-  Moved the ``initialize`` method from the ``HTMLExporter`` class down
   to the parent ``Exporter`` class.
-  Changed the ``Exporter`` class to allow it to export results to JSON
   format.
.. _section-17:
[2.1.2] - 2023-01-12
--------------------
.. _fixed-7:
Fixed
~~~~~
-  Fixed a bug that caused the verification to pass in multi-repo
   set-ups even when there were changes in the listed files when ``.``
   was given as a path to the ``check`` command.
.. _section-18:
[2.1.1] - 2022-12-22
--------------------
.. _fixed-8:
Fixed
~~~~~
-  Fixed an issue with how the file names were being displayed in the
   HTML report when the repository’s path was the current working
   directory: (``.``).
.. _section-19:
[2.1.0] - 2022-12-19
--------------------
.. _added-7:
Added
~~~~~
-  Added the ``--multi-repo`` command line switch. This switch tells
   Dragnet that it is running in a multi-repo environment and will
   prevent it from assuming that the given path is a Git repository.
-  Dragnet can now recognize and validate MTR files that include the
   ``repos`` attribute (to reference files from multiple repositories).
-  Added the ``branches_with`` and ``branches_with_head`` methods to the
   ``Repository`` class.
.. _section-20:
[2.0.0] - 2022-09-13
--------------------
.. _changed-6:
Changed
~~~~~~~
-  Updated ``activesupport`` to version 6.x
-  Updated ``jay_api`` to version 15.x
-  Changed the minimum Ruby version requirement for the gem to 2.5.0
.. _section-21:
[1.0.0] - 2021-07-02
--------------------
.. _changed-7:
Changed
~~~~~~~
-  Two new entity objects were introduced ``Dragnet::TestRecord`` and
   ``Dragnet::VerificationResult`` these will be used instead of the
   previously used Hashes. This allows the logic of validation and value
   evaluation to be centralized.
-  The validation code for the Test Records was moved from
   ``Dragnet::Validators::DataValidator`` to the
   ``Dragnet::Validators::Entities::TestRecordValidator`` class and to a
   series of field validation classes inside the
   ``Dragnet::Validators::Fields`` module.
.. _added-8:
Added
~~~~~
-  Introduced the ``Dragnet::Exporter`` class which handles exporting
   the results of the verification process to different formats (for the
   moment only HTML is available, via
   ``Dragnet::Exporters::HTMLExporter``)
-  Changed the CLI to receive the ``--export`` option. (Which can be
   given multiple times).
-  Added the ``Repository`` class. A thin wrapper around the Git class.
   It just houses some utilitarian methods.
.. _section-22:
[0.1.1] - 2021-06-10
--------------------
Removed
~~~~~~~
-  Removed a stray “require ‘pry’” from a file.
.. _added-9:
Added
~~~~~
-  Added “require ‘colorize’” for validator and verifier classes.
.. _section-23:
[0.1.0] - 2021-05-27
--------------------
.. _added-10:
Added
~~~~~
-  Basic structure of the gem
-  Added the basic classes for the Gem’s CLI
-  Added the ``Explorer`` class. The class searches for Manual Test
   Record files on a given path with a set of glob patterns.
-  Added the ``check`` command to the CLI.
-  Implemented the ``Validator`` class.
-  Added ``jay_api`` to the development dependencies in order to be able
   to use the ``TestDataCollector`` class.
-  Adds configuration for the ``TestDataCollector`` class.
-  Enables the collection of Test Data for releases.
-  Added the ``Verifier`` class. The class verifies the actual test
   records and checks if there have been any changes since the commit
   specified in the MTR.