2020-10-17 Ahven 2.8
* Source code repository of Ahven is now hosted at
* Improvements to Janus/Ada build scripts
* Improvements to GNAT build scripts
* Minor documentation updates
2018-07-24 Ahven 2.7
* NEWS file renamed to NEWS.txt, LICENSE to LICENSE.txt.
* GNAT Makefile / project file / comfignat updates:
- prefix variable for installation location (note: lowercase)
- development / production build settings
- directory changed to gnat_linux.
- library so version can be overridden.
* Simplified GNAT project file under gnat directory.
This can be used on Windows also:
gprbuild -p -P gnat\ahven
* Test_Count_Type is now subtype of Long_Integer with
upper limit at 2**31-1. This allows more tests on compilers
where Natural is a 16-bit value.
* Set_Up and Tear_Down are now called also for test routines
without parameters. Idea and patch from Jacob Sparre Andersen.
* Adjusted syntax checking rules to work with Adacontrol V1.18r9.
* sphinxcontrib-adadomain extension is no longer needed to
build the documentation.
* Tear_Down did not work if a test raised exception.
Reported by Jacob Sparre Andersen.
* Ahven.Long_AStrings now uses Unbounded_String instead of Bounded_String.
This reduces the memory usage and therefore allows more tests.
2015-08-30 Ahven 2.6
* Fix release dates in documentation.
2015-08-30 Ahven 2.5
* The default build system (Makefile) for GNAT uses now
comfignat.mk template. All existing make targets should
work in the normal way, but the internals have been
* Python-sphinx and sphinxcontrol-adadomain packages
are now required for building the documentation.
Prebuilt documentation is available online at
* XML_Runner now supports "-s" parameter, which allows
one to specify suffix for test class names.
Helps with CI systems which expect certain format for
my_tests -c -x -s .Test -d results
* Test runners can now accept multiple test names
from the command line. Suggestion from Jacob Sparre Andersen.
* Test runners have new "-i" parameter, which tells
the runners to ignore the rest of the parameters until
parameter "--" is seen. Suggestion and initial patch
from Jacob Sparre Andersen.
my_tests -v -i -this-is-ignored +and-this -- MyTest
* Old Cruisecontrol and Fedora packaging examples were
removed from contrib/ directory.
* Fixed compilation with gcc/gnat 4.9. Noticed by John Marino.
* Starting from 2.5, Ahven is no longer hosted at Sourceforge.
Instead, it has dedicated site at http://www.ahven-framework.com/
Release packages can be downloaded from
Old http://ahven.stronglytyped.org/ address continues work as
a mirror site.
Source code repository can be accessed either via
2014-02-09 Ahven 2.4
* Created a work-around to Ahven.Framework for Apex and ICCAda.
Now Apex Ada compiles the the body of Ahven.Framework
without errors and ICCAda does not produce any warnings.
The compilers did not correctly handle the body of
Indefinite_Test_List package inside Ahven.Framework
when Indefinite_Test_List was at the end of
ahven-framework.adb. This was fixed by moving the body
to the beginning of the file. (No functional changes.)
* Various documentation improvements.
* Alternative comfignat-based build system (contrib/comfignat)
was added. It is experimental for now and meant mostly for Linux
distribution packagers. From Bjorn Persson.
* On Fedora 19/20 you need to first install libgnat-static package:
sudo yum install libgnat-static
Otherwise GNAT will die with internal error when building Ahven.
* On Windows 8.1 you need to use JNT_RTS instead of JTN_RTS_Console
as Janus/Ada runtime. Otherwise, Janus/Ada fails to find Ada runtime
system for Ahven.
2013-01-24 Ahven 2.3
* Various procedure descriptions in the API documentation
* Character limit of long messages in test results have been
increased to 1024. On some compilers this means that
memory usage is over 1 kilobytes per test result.
* New constant: Ahven.Max_Long_String_Len
* Exception backtraces are now stored to test results
when test fails or has an error.
* TAP runner did not output multiline (long) messages correctly.
This is now fixed.
* New package: Ahven.Long_AStrings
* Some coding style fixes.
* On Fedora 17/18 you need to first install libgnat-static package:
sudo yum install libgnat-static
Otherwise GNAT will die with internal error when building Ahven.
2012-03-05 Ahven 2.2
* GNAT 3.15p project files from contrib/gnat315p removed.
* The code snippets in the documentation are now highlighted
as Ada code.
* API documentation generation using Adabrowse is now deprecated.
The new way is to use Sphinx for document generation.
* Ahven.XML_Runner did not report skipped tests correctly.
This is now fixed. (The bug was similar to Ahven.Text_Runner
bug in Ahven 2.1.)
* Small test suite improvements.
2011-09-24 Ahven 2.1
* Ahven.Text_Runner did not report skipped tests correctly.
This is now fixed.
* Function Ahven.Results.Skipped_Count was added.
2011-09-23 Ahven 2.0
* Tests can be now given a timeout value. If a test is not
executed in the given time, it is stopped and a timeout
failure is reported. See '-t' option of the test runners.
The timeout feature depends on the possibility to abort
a task after a certain amount of time. If the task abortion
is not possible, the current test will continue running
even after the given timeout.
* A test can be now skipped programmatically by calling
procedure Skip("Message"). A skipped test are considered
to be equal to passed tests, but depending on the test
runner, they can have extra "SKIP" information attached.
* README is now provided in reStructured text format,
just like the manual.
* Ahven can be compiled on Fedora systems by installing
package "libgnat-static". Note: This was not a bug in
Ahven but a configuration issue on Fedora.
2011-04-19 Ahven 1.9
* Manual was added to 'doc/manual/en' directory. It includes
User's Guide section and API documentation. The documentation
is written using reStructuredText and Sphinx 1.0, so Python
and py-sphinx are required for building. API documentation
generation via Adabrowse is still supported, but it will be
deprecated and dropped later.
* Extra Test'Class (...) type conversion was removed from
ahven-framework.adb. This allows compilation with GNAT GPL 2010.
* Package Ahven.VStrings was replaced with an instantiation of
Ada.Strings.Bounded.Generic_Bounded_Length. This allowed us to
remove over 100 lines of code.
* Ahven (or actually file ahven-parameters.adb) cannot be compiled
on Fedora 14 with gcc 4.5.1. See bug
https://bugzilla.redhat.com/show_bug.cgi?id=690610 for details.
2010-06-02 Ahven 1.8
* The dynamic library support with GNAT was removed since
it did not work automatically in a trouble-free way on
Debian, Fedora, and Windows.
* Ada.Calendar dependency was removed from Ahven.Framework.
Equivalent functionality is now implemented in
the test runners.
* Support for TAP 1.3 was dropped. TAP 1.2 is supported
* Janus/Ada 3.1.1d support was dropped. Ahven now requires
Janus/Ada 3.1.2beta or newer.
* There is now ahven.spec file in contrib/fedora to
make packaging and installing Ahven easier on Fedora.
* If user placed a dynamically allocated Test_Case into
a statically allocated Test_Suite the finalization
procedure tried to release the same memory twice.
This is now fixed by implementing Adjust for the
Test_Suite type. (Bug bitbucket#2)
* Many Some_Type'(initial values) expressions were
changed into more simpler (initial values) form.
This was done to avoid Janus/Ada bug no 73.
* Code cleanup: style fixes, removal of compiler warnings
and comment clarifications.
* Remove_All procedure from Ahven.SList package was renamed
to Clear. The new name is more consistent with Ada.Containers
* Ahven.VStrings package now depends on Ada.Strings.Fixed.
* Ahven.Framework.Indefinite_Test_List has no longer
procedures or functions for Cursors. Same functionality
can be now achieved using generic For_Each procedure.
2009-09-14 Ahven 1.7
* The source code repository and the issue tracker are
now hosted at Bitbucket, http://bitbucket.org/tkoskine/ahven
* The usage of Unbounded_String was completely removed
from all packages. Now Ahven.Framework.Get_Name function
* GNAT project files (.gpr) were moved to the 'gnat' directory.
* The upper limit (Count_Type'Last) of Ahven.SList
is now documented.
* A PDF report generation example from XML result files
was added to 'contrib/docbook-testreport'. From Reto Buerki.
* Fix Contraint_Error when one tries to truncate
overlong string. Bug report and patch from Reto Buerki.
* XML_Runner now filters special characters like space or /
from the filenames. Patch from Reto Buerki.
* Makefile now has 'tags' target for generating 'tags' file.
It assumes that ctags utility has support for Ada.
* It is no longer necessary to have procedure or function
declarations for all procedures and functions. The purpose
is to allow somewhat shorter code.
* User's Guide has seen some progress, but it is still not
completely ready. (=one should not rely on it.)
* In the test code, some Assert calls were converted to
more compact Assert_Equal calls.
2009-02-28 Ahven 1.6
* Installation scripts for GNAT were fixed.
Bug report and patch from Reto Buerki.
2009-02-23 Ahven 1.5
* Ahven is now hosted at sourceforge.net. New URLs are:
Project page: http://sourceforge.net/projects/ahven
Home page: http://ahven.sourceforge.net/
* Janus/Ada build system was rewritten. See README for details.
Also, some minor changes were done to GNAT build scripts.
* API documentation was not generated for the Ahven.SList package.
2009-01-22 Ahven 1.4
* Type Ahven.Framework.Test_Result and related code was removed.
Ahven.Framework.Execute now takes Listeners.Result_Listener'Class
directly instead of Test_Result object.
* New abstract function Test_Count was added to the Test type.
The function returns the amount of test routines which will
be executed when the Run procedure is called.
* Test Anything Protocol (TAP) support: There is now a new
Ahven.Tap_Runner package, which outputs test results in
TAP format (versions 1.2 and 1.3 are supported).
* Get_Message and Get_Long_Message functions now return String
instead of Unbounded_String.
* The GNAT project files for GNAT 3.15p were synchronised
with the GNAT GPL versions.
* Janus/Ada build scripts are now in the 'janusada' directory
instead of 'contrib\janusada'.
* New (generic) assertion procedure:
Assert_Equal (Expected, Actual, Message).
Suggestion and the source code from Pawel Plazienski.
* New procedure for inserting stack-allocated tests into test suites:
Add_Static_Test (Suite, T).
Idea from Pawel Plazienski.
* Internally, almost all Unbounded_Strings were converted into
VStrings. This limits the maximum length of test names and
failure messages to 160 characters. Constraint_Error is
raised for overlong test names and too long failure messages
are silently truncated into 160 characters.
This was done for better Janus/Ada 3.1.1d compatibility.
* Text-based test runner results are now aligned in a better way.
Fix for bug #12220.
* All lists were converted into singly linked lists. Lists were
made generic wherever possible.
* Listeners.Output_Capture was combined into Listeners.Basic.
2008-08-13 Ahven 1.3
* Example configuration for Cruisecontrol was added.
* The GNAT project file for GNAT 3.15p was added.
* Fix for bug #12165 and make test suite to work
with Janus/Ada 3.1.x.
* The API documentation is now generated also for
the Ahven.Compat and Ahven.XML_Runner packages.
* The use of System.Address_To_Access_Conversions was removed.
This allows Ahven to be compiled with Janus/Ada.
At the same time, Ahven.Framework.Run (T : Test;...)
was changed back to Ahven.Framework.Run (T : in out Test;...).
Sorry for the inconvenience.
* Non-standard pragmas were removed. The code should compile
now on multiple Ada compilers without warnings about
* Variable "OS" in Makefile and GNAT project files was renamed
* New tests:
* Removed tests: List_Tests.*.
* Code cleanups:
+ Duplicate code from Text_Runner.Run and XML_Runner.Run
moved into Runner.Run_Suite.
+ Duplicate code from various Framework.Run procedures was
moved into Framework.Run_Internal.
* Ahven.Doubly_Linked_List was removed. This is related
to bug #12165.
2008-05-12 Ahven 1.2
* New XML_Runner which generates JUnit compatible XML test results.
XML_Runner can be either run explicitly or via Text_Runner
using the '-x' parameter.
* Unused access types Test_Access, Test_Case_Class_Access,
Test_Case_Access, Test_Suite_Class_Access, Result_Listener_Access,
Basic_Listener_Access, and Output_Capture_Listener_Access removed.
* Ahven.Framework.Run (T : in out Test;...) is changed to
Ahven.Framework.Run (T : Test;...), because 'in out' mode
was not necessary.
* New procedures/functions:
Ahven.Text_Runner.Run (Suite : Framework.Test_Suite'Class);
Ahven.Framework.Create_Suite return Test_Suite;
With these, the suite can be created on stack and one does not
need to play with access types.
* Ahven can be now compiled with GNAT 3.15p.
* The GNAT project file should work on Windows again.
* XML_Runner introduced a need for some platform specific files.
Therefore, 'src' directory now contains subdirectories 'unix'
* New tests: Result_Tests.Test_*
* Next_* procedures for in the Results package were replaced
with proper iterators.
2008-01-30 Ahven 1.1
* The Ahven.Framework and the test runners are able to optionally
run only the tests which match the given name.
* The default Text_Runner is able to capture Ada.Text_IO output
from a test into a temporary file and show the output if
the test does not pass.
Option '-c' turns the capture feature on.
* The default Text_Runner shows the exception message in addition
to the exception name when the test ends in error.
(Idea and original patch from Alexander Senier)
* The default Text_Runner is now able to provide a short summary
instead of full test report.
Use option '-q' to get the test summary.
* The GNAT project file is now called 'ahven.gpr' instead of
* ALI files (*.ali) are now installed read-only, so GNAT
does not try to rebuild the library.
(Patch from Alexander Senier)
* Function Ahven.Framework.Name is renamed
* Shared library produced by GNAT now includes the version number.
* New listener: Output_Capture_Listener, which will
forward Ada.Text_IO output into a temporary file.
* Type Ahven.Results.Result_Place is renamed to
* Ahven.Double_Linked_List is renamed to Ahven.Doubly_Linked_List,
because other Ada linked list implementations also use
similar naming scheme.
* AdaControl is used to enforce some parts of the coding style.
This caused some API changes, but in most cases the changes
2007-10-24 Ahven 1.0
Ahven is a simple unit test library for Ada 95.
It is modeled after JUnit and some ideas are
taken from AUnit. Ahven 1.0 is distributed under
* Test, Test_Case, and Test_Suite classes (tagged types)
* Assert and Fail procedures for triggering assertion failures
* Text-based test runner
Tero Koskinen <firstname.lastname@example.org>