/FRUIT

Fortran unit test framework FRUIT, originally mirrorred from sourceforge (see link on the right)

Primary LanguageFortranOtherNOASSERTION

# Cloned from sourceforge using technique from 
# 
#    https://gist.github.com/binarytemple/a707114df7067c1c81ab , 
# 
# with help from 
# 
#    https://stackoverflow.com/a/49565707
#
# 
# The link to the old Sourceforge example guide is broken, an archived 
# version can be found here:
#
#    https://web.archive.org/web/20140509103954/https://sourceforge.net/apps/mediawiki/fortranxunit/index.php?title=FruitExample


Installation guide:
-------------------
	1. Untar the gz file
	
	2. Put Ruby in your path.
	
	3. Install rake gem
	    gem install rake

	4. Install fruit_processor gem
	    cd fruit/fruit_processor_gem
	    rake install

	5. You may need to change your compiler from gfortran to other
	   modify this line in rake_base.rb :
	     $compiler = 'gfortran'
       $option = "-Wall -Wextra -pedantic -fbounds-check " +
                 "-Wuninitialized -O -g -Wno-unused-parameter -cpp"

     By default, ifort is used if available.
     If ifort is abesnt, gfotran or FTN95 is used.

	6. Build and run all the test
	  cd fruit
	  rake

    (By default a sample sample_single_dir is omitted,
     because some old compilers does not accept *.f95 extension. Try
       rake sample_single_dir
     to run it.)

Samples:
--------
  in_3_minutes
    A sample of manually written driver.
    see https://web.archive.org/web/20140509103954/https://sourceforge.net/apps/mediawiki/fortranxunit/index.php?title=FruitExample
    * fruit.f90 must be copied to in_3_minutes beforehand.

  sample
    Multi-directry test.
    Tester codes are in fruit-x.x.x/sample/test directry.
    Before running the test,
    tested code (fruit-x.x.x/sample/src/calculator.f90) and
    fruit code (fruit-x.x.x/src/fruit.f90)
    must be compiled into lib*.a archives.
    * libfruit.a needed. To prepare it, run "rake compile" in fruit-x.x.x directry for libfruit.a.

  sample_single_dir
    Dependency between Fortran codes is estimated by
    "rake_estimate.rb" loaded from sample_single_dir/rakefile.
    see fruit-x.x.x/sample_single_dir/README.
    Tester code : sample_single_dir/mystack_test.f95
    Tested code : sample_single_dir/mystack.f95, Z_constants.f95

  sample_selective
    Testers to call is specifiled in a line in sample_selective/rakefile:
      fp.process_only = FileList["mydict_test.f90"]
    This sample also shows that test can be built even when main program (dummy_main.f90) exists.
    Dependency between Fortran codes is estimated by "rake_estimate.rb".
    Tester code: fruit-x.x.x/sample_selective/*_test.f90
    Tested code: fruit-x.x.x/sample_selective/constant.f90, mydict.f90

  sample_build_dir
    This sample shows build directry may differ from source directry.
    It also shows that test can be built even when main program (main.f90) exists.
    Tester code : fruit-x.x.x/sample_build_dir/atoz_test.f90
    Tested code : fruit-x.x.x/sample_build_dir/atoz.f90
    Build test in fruit-x.x.x/sample_build_dir/build_unittest

  sample_multi_dir
    Tester codes and tested codes are in different directries.
    Sample of building only selected testers are build in "build_selective" directry and
    that of all testers are built in "build" directry.
    Tester codes: fruit-x.x.x/sample_multi_dir/test/*.f90
    Tested codes: fruit-x.x.x/sample_multi_dir/src/*.f90
    Build is done in fruit-x.x.x/sample_multi_dir/build/
    Selective build: fruit-x.x.x/sample_multi_dir/build_selective/

  sample_openmp
    Tester code uses multiple threads using OpenMP.

  self_test
    Test of fruit.f90 itself.

  self_test_openmp
    Test of fruit.f90 itself. Tester code uses multiple threads using OpenMP.