-----------
FRUIT 3.4.1
-----------

Maximum number of failed assertations was limited to 2000.
This limitation is removed.


-----------
FRUIT 3.4.0
-----------

A sample of calling assertations from multi-thread code
using OpenMP is added as sample_openmp.
No changes in fruit_processor in this version.
Version number of fruit_processor remains 3.3.8.


-----------
FRUIT 3.3.9
-----------

Content of fruit_util.f90 is added into fruit.f90.
No changes in fruit_processor in this version.
Version number of fruit_processor remains 3.3.8.


-----------
FRUIT 3.3.8
-----------

Fruit_processor failed to recognize the subroutine
when "!" appears on the line tester subroutine name declared.

For example, on this code
   subroutine test_some_routine !comment
     ...
   end subroutine
tester "test_some_routine" was ignored.
This behavior of fruit_processor is fixed now.


-----------
FRUIT 3.3.7
-----------

Samples added:
  sample_using_make
    This sample uses not rake but make.
    Works only for gfortran + make.

  sample_exit_at_fail
    Sample of exitting a test case when assertion fails.
    User has to add a line
      if (fruit_if_case_failed()) return
    in the tester code.

Subroutines to surppress output of "." added.
  After 
    call fruit_hide_dots
  dots are not written.
  To output dots again, 
    call fruit_show_dots
  can be used.
  These calls are tested in a sample "sample_selective".
  
No changes in fruit_processor in this version.
Version number of fruit_processor remains 3.3.6.


-----------
FRUIT 3.3.6
-----------

Previous version (3.3.5) could not compile
external subroutines having circular dependencies.
See  
  sample_circular_dep
.
Fruit 3.3.6 tries to build it
through considering some dependencies
not while compiling but while linking.



-----------
FRUIT 3.3.5
-----------

Samples of testing external subroutine and
external functions are is at 
  sample_exteranl_sub/
  sample_exteranl_func/

External functions tested must be 
specified in interface block or external statement of
tester code.
Otherwise FRUIT cannot estimate dependencies
for compile.


-----------
FRUIT 3.3.4
-----------

When tester routines are added to *_test.f90,
fruit_basket_gen.f90 is updated.
But when tester routine(s) were removed,
fruit_basket_gen.f90 was not updated.
This problem is fixed in FRUIT 3.3.4.


-----------
FRUIT 3.3.3
-----------

Time stamp of fruit_basket_gen.f90 and fruit_driver_gen.f90
are kept when their content does not change.
This behavior surpresses unnecessary re-compile and saves your time.


-----------
FRUIT 3.3.2
-----------

In assert_not_equals subroutines,
inequality comparison for real numbers
  if (real_number_1 /= real_number_2) then ...
was used. 
(gfortran 4.8.2 with -Wextra option warns about it.)
The inequality is replaced by inequalities
  if (real_1 < real_2 .or. real_1 > real_2) then...


-----------
FRUIT 3.3.1
-----------

Unnecessary mpi_machine_file were included in fruit_3.3.0.zip.
Removed them.


-----------
FRUIT 3.3.0
-----------

FRUIT 3.3.0 can test codes using MPI.
Sample is in directry sample_mpi.
Test code is in self_test_mpi.
  
Tested on
  Ubuntu 12.04 + OpenMPI
  Windows 7 + MPICH2 (mpich2-1.4.1p1-win-ia32)


-----------
FRUIT 3.2.6
-----------

assert_false added.

When execution of test stops before regular exit,
"result.xml" that reports one failure is generated.
(So far, "result.xml" of previous run remained
 that usually reports no error.)


-----------
FRUIT 3.2.5
-----------

Description of samples are added to README.

doc/changes.txt is moved to CHANGES.txt

sample_selective/rakefile directly reads src/fruit.f90, src/fruit_util.f90.


-----------
FRUIT 3.2.4
-----------

On FTN95 output to "result.xml" become available.

Prefix for "classname" within result.xml can be
specified by writing

      fp.xml_prefix = "some_string. "

within rakefile.
See self_test/rakefile for example.
When Jenkins ( http://jenkins-ci.org/ ) reads this "result.xml" as JUnit result,
the prefix until period is treated as package name.

rakefile is modified to generate ROOT_ANCHOR and fruit.f90 before running samples.


-----------
FRUIT 3.2.3
-----------

There was problem in rake_estimate.rb that
module names with upper case characters are not
processed correctly.
Fixed in this version.


-----------
FRUIT 3.2.2
-----------

On gfortran and ifort, coverage reports can be generated for samples
  self_test
  sample_multi_dir/build
  sample_build_dir
  sample_selecive.
In these directries, do "rake coverage" for generate reports such as
  *.f90.gcov (gfortran)
  CODE_COVERAGE.HTML  (ifort)


FruitProcessor warns if user-specifiled filenames given in
  fp.process_only = [ (filenames) ]
line not match with *_test.f(90|95|03|07)
or any of the corresponding files is absent.


rake_estimate.rb warns if two fortran source files
define the same module name.


Fixed a problem that fruit_basket_gen.f90 and fruit_driver_gen.f90
are compiled twice when rake_estimate.rb is used.


-----------
FRUIT 3.2.1
-----------

Order of test methods can be made random by setting
   fp.shuffle = true
in rakefile. For example, see self_test/rakefile.

Fruit processor checks if test module name and its file name are consistent.
A method "module_name_consistent?" in fruit_processor_gem/lib/fruit_processor.rb
does it.

Log output from rake_estimate.rb on file dependencies is reduced.
To see extra info on dependencies, set
   $show_info = true
in rakefile. See sample_multi_dir/build/rakefile for example.

Unnecessary dependencies given in rake_base_deps.rb are removed.

Sample of rakefile for building main program using rake_estimate.rb is added.
See sample_selective/rakefile_main.
It estimates dependencies between modules.


-----------
FRUIT 3.2.0
-----------

+ Works on FTN95.
  FTN95 is Fortran compiler for Windows.
  http://www.silverfrost.com

+ Works on gfortran of TDM-GCC on Windows.
  http://tdm-gcc.tdragon.net/

+ To support extension .obj and backslash path,
  rake_base.rb is divided into
  compiler definition part (rake_base.rb) and
  dependencies part (rake_base_deps.rb).


-----------
FRUIT 3.1.0
-----------

+ LICENSE.txt added

+ Comment on copyright added to each file

+ Samples added or changed

  + sample_build_dir
    This sample puts *.o, *.mod, *_gen.f90, and executable to a sub directry.

  + sample
    rakefile "rakefile_mingw" added that works with MinGW.
    It does not use library. Instead fruit.f90 and fruit_util.f90 are compiled.

  + sample_multi_dir
    Source files in multiple directries are compiled within single rakefile.
    This sample puts *.o, *.mod, *_gen.f90, and executable to a sub directry.
    Source directries are kept unchanged.

+ FruitProcessor and rake_estimate.rb may process multiple source directries.
  See sample sample_multi_dir.


-----------
FRUIT 3.0.2
-----------

+ fruit_processor_gem/rakefile

  Changed to work with rake 10.0.x


-----------
FRUIT 3.0.1
-----------

+ rake_estimate.rb

  A problem that rake_estimate.rb failed to read
  lines ending in CR+LF is fixed.


+ setup and teardown

  When tester file (*_test.f90 etc.) did not have setup subroutine,
  its teardown subroutine was not called.
  Corresponding error in fruit_processor.rb is fixed.


-----------
FRUIT 3.0
-----------

+ Test runner GUI gui_fruit.rb is added.

  To use "gui_fruit.rb", other two ruby scripts
  "rake_base.rb" and "rake_estimate.rb" must be in the same directory.
  Before starting GUI, Fortran compiler setting in "rake_base_db"
  should be edited.

  Works both for single directory projects and multiple directry projects.
  Here multiple directry project means project consist of
  one source directry (contains tested fortran files) and
  one tester directry (contains tester fortran files *_test.f90).
  For example, within fruit distribution tests
    "self_test", "sample_selective", "sample_single_dir",
    "in_3_minutes" and
    "sample"
  can be run using GUI.


-----------
FRUIT 2.9.2
-----------

+ Test of rake_estimate.rb

A tester of rake_estimate.rb is added as ruby_test/rake_estimate_test.rb.


+ Change in rake_estimate.rb

rake_estimate.rb is rewritten as a class FruitRakeEstimate.


+ Not copy but make symbolic links

In the previous version, rakefile copies
fortran files (fruit.f90, fruit_util.f90) and
ruby files (rake_base.rb, rake_estimate.rb) to directries
"sample_single_dir", "sample_selective" and "in_3_minutes".
Now symbolic links are made instead of copying files.



-----------
FRUIT 2.9.1
-----------

+ Selective build

When there are several *_test.f90 files in a directry,
all these tester files were compiled to build fruit driver.
One may want to run only few of the tester files.
To compile only selected tester files,
method "process_only" is added to fruit_processor.
New sample "sample_selective" demonstrates it.
File(s) to compile is given in

 fp.process_only = FileList["mydict_test.f90"]

line of sample_selective/rakefile.


+ When main file exists in directry

Building fruit driver used to be failed when there was a main program
(.f90 file with "program" ... "end program" statements).
Build becomes possible by adding a line

$main = "fruit_driver_gen.f90"

to rakefile. It's demonstrated in samples
  * sample_single_dir
  * sample_selective
In these samples main file (dummy_main.f90) is
successfully ignored.


+ Estimation of dependencies

When there was dependency between fortran files,
it had to be written it in rakefile.
In this release, a new script "rake_estimate.rb" is added.
It scans "module ..." lines and "use ..." lines
and estimates dependencies between Fortran files.
To use it, include it from rakefile.
Examples are
  * sample/test/rakefile
  * sample_selective/rakefile
  * sample_single_dir/rakefile


+ descriptions of rake target

Descriptions of rake target is added to rakefile.
Try "rake -T" to see the list of descriptios.


+ Self-tests

A number of self-tests for fruit.f90 are added as
  self_test/various_asserts_test.f90


+ Generator of fruit.f90

To support various assertions for various types
(logical, real, double, complex-double, integer),
dimensions (0d, 1d, 2d) and equals/not-equals,
fruit.f90 is now generated using
src/fruit_f90_generator.rb and src/fruit_f90_source.txt.


+ Deallocate

Array for messages used in fruit.f90 was allocated but
not deallocated. Some compiler report it as memory error.
For deallocation of it, subroutine "fruit_finalize" is added to fruit.f90.
It deallocate the array for messages.
Corresponding memory leak while running self-test is fixed.


+ Error fixed

There was regression in FRUIT 2.9.
When Fortran source is updated and older corresponding
object file exists, rake did not recompile the source.
To fix it, relation between Fortran files and object files
are confirmed in rake_base.rb.


+ ruby 1.9.3

In addition to ruby 1.8.7, FRUIT works on ruby 1.9.3.




---------
FRUIT 2.9
---------

+ Extensions .f95

fruit_processor was processing only files with extension .f90.
Now extension .f95 is also recognized.
These extensions are hard-coded in
  "fruit_processor_gem/lib/fruit_processor.rb" (around line 12)
and
  "rake_base.rb" (around line 13).


+ Additional sample

New sample is added to "sample_single_dir/".
It is single directory project. Before compiling,
  fruit.f90,
  fruit_util.f90, and
  rake_base.rb
must be copied to this directory. Fruit_processor generates
fruit_driver and fruit_basket and builds driver executable.
File extension .f95 is used for testing code and tested code.
If your fortran compiler does not recognize .f95 extension,
rename the files to have .f90 extension.


+ Self-testing

Test of "fruit_processor.rb" is done by
"fruit_processor_gem/test/fruit_processor_test.rb".
This test is included to default rake target of
"(tarball base dir)/rakefile" and
"(tarball base dir)/fruit_processor_gem/rakefile".

Self tests of "src/fruit.f90" and "src/fruit_util.f90" are in
"self_test" directry.
These test are originally in "test/" directry and rewritten
as automated tests.


+ Spec string

There was regression in FRUIT 2.8.
Spec string written using Fortran's continuous line did not processed.

Now spec string specification such as
    character(len=*), parameter :: spec = 'calculation should produce 4.0&
  & when 2.0 &
     and 2.0 &
     are inputs'
is processed. Also, spec specification as Fortran's comment line

    !FRUIT_SPEC   Spec string may given as Fortran's "comment" line.

is available.



---------
FRUIT 2.8
---------

1. FRUIT outputs test report in XML.
   It can be read by Jenkins( http://jenkins-ci.org/ ).
   A sample report appears as sample/test/result.xml
   in FRUIT 2.8 release.

2. Case names are shown in failed assertion messages
   even when fruit_processor is used.
   Previously __unnamed__ was shown in place of case names.

3. Sample without rake nor rake was in "sample/taste" directry of FRUIT 2.7.
  It is moved to "in_3_minutes" directry.

4. Works both with rake 0.9.2.2 and rake 0.8.7.

5. Debug option of fortran compiler is turned on by default.

For example of 1. and 2. above, see fruit2.8_with_jenkins.png


