funit 0.10.3 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,15 +1,26 @@
1
+ === 0.11.0 / 2009-11-01
2
+
3
+ * 1 minor enhancement
4
+ * Allow testing of routines not contained in modules
5
+
6
+ === 0.10.4 / 2009-10-15
7
+
8
+ * 2 minor enhancements
9
+ * Pass LDFLAGS environment variable to linker (Steve Turley)
10
+ * Formatted test summary line with i0 instead of *
11
+
1
12
  === 0.10.3 / 2009-10-05
2
13
 
3
14
  * 1 minor enhancement
4
- * Allow --source to accept multiple directories
15
+ * Allow <tt>--source</tt> to accept multiple directories
5
16
  * 1 bug fix
6
- * Make funit's setup and teardown subroutine names unique to avoid
17
+ * Make Funit's setup and teardown subroutine names unique to avoid
7
18
  collision with same routine names in module under test.
8
19
 
9
20
  === 0.10.2 / 2008-03-30
10
21
 
11
22
  * 2 bug fixes
12
- * Updated README with proper syntax
23
+ * Updated <tt>README.txt</tt> with proper syntax
13
24
  * Corrected prior release history copy and version number
14
25
 
15
26
  === 0.10.1 / 2008-03-30
@@ -18,40 +29,41 @@
18
29
  * Non-passing tests exit with non-zero exit code
19
30
 
20
31
  * 1 minor enhancement
21
- * --version / -V options
32
+ * Added <tt>--version</tt> / <tt>-V</tt> options
22
33
 
23
34
  === 0.10.0 / 2008-03-30 (all courtesy of Diego Virasoro)
24
35
 
25
36
  * 4 major enhancements
26
- * User can now use 'funit --clean' to remove the generated files
37
+ * User can now use <tt>funit --clean</tt> to remove the generated files
27
38
  * Source directory and test directory can be different: specify
28
- source dir with -s (or --source) flag
39
+ source dir with <tt>-s</tt>(or <tt>--source</tt> flag
29
40
  * Only the minimum number of files that need recompilation are compiled
30
41
  via makefile
31
- * The .fun file name is not constrained anymore, but now each test suite
32
- must be surrounded by 'test_suite name' and 'end test_suite', where name
33
- is the name of the module to be tested
42
+ * The <tt>.fun</tt> file name is not constrained anymore, but now each test suite
43
+ must be surrounded by <tt>test_suite name</tt> and <tt>end test_suite</tt>,
44
+ where <tt>name</tt> is the name of the module to be tested
34
45
  * Multiple test suites can exist inside the same file
35
46
 
36
47
  * 5 minor enhancements
37
- * Change blocks nomenclature: beginTest -> test and endTest -> end test
48
+ * Change blocks nomenclature: <tt>beginTest</tt> -> <tt>test</tt> and
49
+ <tt>endTest</tt> -> <tt>end test</tt>
38
50
  (and similarly for setup and teardown)
39
- * Change assertions nomenclature (eg. IsEqual -> assert_equal)
40
- * Added one new assertion: assert_array_equal
51
+ * Change assertions nomenclature (eg. <tt>IsEqual</tt> -> <tt>assert_equal</tt>)
52
+ * Added one new assertion: <tt>assert_array_equal</tt>
41
53
  * Added a summary of all the test suites results, printed at the end
42
54
  * Minor code clean-up
43
55
 
44
56
  === 0.9.4 / 2008-01-08
45
57
 
46
58
  * 2 minor enhancements
47
- * broke up more long conditionals with continuation
59
+ * Broke up more long conditionals with continuation
48
60
  characters to avoid truncated lines
49
- * added shebang to main for rubygems 1.0
61
+ * Added shebang to main for rubygems 1.0
50
62
 
51
63
  === 0.9.3 / 2007-12-23
52
64
 
53
65
  * 2 bug fixes
54
- * README.txt project URLs
66
+ * Project URLs in <tt>README.txt</tt>
55
67
  * Repaired a test broken by 0.9.2
56
68
 
57
69
  === 0.9.2 / 2007-09-21
@@ -63,19 +75,18 @@
63
75
  === 0.9.1 / 2007-08-20
64
76
 
65
77
  * 1 minor enhancement
66
- * Stripped './' path prefixes and '\' continuations to
78
+ * Stripped <tt>./</tt> path prefixes and <tt>\</tt> continuations to
67
79
  appease windoze
68
80
 
69
81
  === 0.9.0 / 2007-07-26
70
82
 
71
83
  * 1 minor enhancement
72
- * Extracted fortran dependency engine -- see fortran gem.
84
+ * Extracted fortran dependency engine -- see <tt>fortran</tt> gem.
73
85
 
74
86
  === 0.1.3 / 2006-06-21
75
87
 
76
88
  * 1 bug fix
77
- * Do not remove unit tests! (Thanks to Sebastian Hanigk
78
- and James Quirk.)
89
+ * Do not remove unit tests! (Thanks to Sebastian Hanigk and James Quirk.)
79
90
 
80
91
  === 0.1.2 / 2006-05-16
81
92
 
data/Rakefile CHANGED
@@ -10,7 +10,7 @@ require 'funit.rb'
10
10
  Hoe.new('funit', Funit::VERSION) do |funit|
11
11
  funit.rubyforge_name = 'nasarb'
12
12
  funit.remote_rdoc_dir = 'funit'
13
- funit.extra_deps << [ 'fortran', '>= 1.0.1' ]
13
+ funit.extra_deps << [ 'fortran', '>= 1.1.0' ]
14
14
  funit.spec_extras[:requirements] = "A Fortran compiler."
15
15
  funit.author =
16
16
  [ 'Karen Bibb', 'Bil Kleb', 'Beth Lee-Rausch', 'Mike Park', 'Bill Wood' ]
data/lib/funit.rb CHANGED
@@ -14,7 +14,7 @@ require 'fileutils'
14
14
 
15
15
  module Funit
16
16
 
17
- VERSION = '0.10.3'
17
+ VERSION = '0.11.0'
18
18
 
19
19
  ##
20
20
  # run all tests
@@ -27,8 +27,13 @@ module Funit
27
27
  tf_content = IO.read(test_file+'.fun')
28
28
  tf_content.scan(/test_suite\s+(\w+)(.*?)end\s+test_suite/m).each{|ts|
29
29
  ts_name = $1
30
+ ts_content = $2
30
31
  if((!File.exist?(ts_name+"_fun.f90")) || File.mtime(ts_name+"_fun.f90") < File.mtime(test_file+".fun")) then
31
- TestSuite.new(ts_name, $2)
32
+ if ( File.read(ts_name+'.f90').match(/\s*module\s+#{ts_name}/i) ) then
33
+ TestSuite.new(ts_name, ts_content, false)
34
+ else
35
+ TestSuite.new(ts_name, ts_content, true)
36
+ end
32
37
  end
33
38
  test_suites.push(ts_name)
34
39
  }
@@ -22,9 +22,9 @@ module Funit
22
22
  write(*,*) "<%= test_suite %> test suite:"
23
23
  call test_<%= test_suite %> &
24
24
  ( numTests(<%= i+1 %>), numAsserts(<%= i+1 %>), numAssertsTested(<%= i+1 %>), numFailures(<%= i+1 %>) )
25
- write(*,*) "Passed", numAssertsTested(<%= i+1 %>), "of", numAsserts(<%= i+1 %>), &
26
- "possible asserts comprising", numTests(<%= i+1 %>)-numFailures(<%= i+1 %>), &
27
- "of", numTests(<%= i+1 %>), "tests."
25
+ write(*,1) numAssertsTested(<%= i+1 %>), numAsserts(<%= i+1 %>), &
26
+ numTests(<%= i+1 %>)-numFailures(<%= i+1 %>), numTests(<%= i+1 %>)
27
+ 1 format('Passed ',i0,' of ',i0,' possible asserts comprising ',i0,' of ',i0,' tests.')
28
28
  <% end -%>
29
29
 
30
30
  write(*,*)
@@ -55,7 +55,7 @@ module Funit
55
55
  all:testrunner
56
56
 
57
57
  testrunner: $(OBJ)
58
- <%= "\t#{ENV['FC']} #{ENV['FCFLAGS']}" %> -o TestRunner $(OBJ)
58
+ <%= "\t#{ENV['FC']} #{ENV['FCFLAGS']} #{ENV['LDFLAGS']}" %> -o TestRunner $(OBJ)
59
59
 
60
60
  <% file_dependencies.each do |source,dep| -%>
61
61
  <%= "#{source.sub(/\.f90/i,'.o')}: #{source} #{dep.map{ |d| d.sub(/\.f90/i,'.o') }.join(' ')}" %>
@@ -15,7 +15,7 @@ module Funit
15
15
 
16
16
  include Funit #FIXME
17
17
 
18
- def initialize suite_name, suite_content=''
18
+ def initialize( suite_name, suite_content, wrap_with_module )
19
19
  @line_number = 'blank'
20
20
  @suite_name = suite_name
21
21
  @suite_content = suite_content
@@ -23,21 +23,38 @@ module Funit
23
23
  File.delete(suite_name+"_fun.f90") if File.exists?(suite_name+"_fun.f90")
24
24
  super(suite_name+"_fun.f90","w")
25
25
  @tests, @setup, @teardown = [], [], []
26
+ header
27
+ @wrap_with_module = wrap_with_module
28
+ module_wrapper if @wrap_with_module
26
29
  top_wrapper
27
30
  expand
28
31
  close
29
32
  end
30
33
 
31
- def top_wrapper
32
- puts <<-TOP
34
+ def header
35
+ puts <<-HEADER
33
36
  ! #{@suite_name}_fun.f90 - a unit test suite for #{@suite_name}.f90
34
37
  !
35
38
  ! #{File.basename $0} generated this file from #{@suite_name}.fun
36
- ! at #{Time.now}
37
39
 
40
+ HEADER
41
+ end
42
+
43
+ def module_wrapper
44
+ puts <<-MODULE_WRAPPER
45
+ module #{@suite_name}_mod
46
+ contains
47
+ include '#@suite_name.f90'
48
+ end module #{@suite_name}_mod
49
+
50
+ MODULE_WRAPPER
51
+ end
52
+
53
+ def top_wrapper
54
+ puts <<-TOP
38
55
  module #{@suite_name}_fun
39
56
 
40
- use #{@suite_name}
57
+ use #{ @wrap_with_module ? @suite_name+'_mod' : @suite_name }
41
58
 
42
59
  implicit none
43
60
 
@@ -17,7 +17,7 @@ class TestTestSuite < Test::Unit::TestCase
17
17
  end
18
18
 
19
19
  def test_nonexistent_funit_file_is_not_created
20
- Funit::TestSuite.new 'dummyf90test'
20
+ Funit::TestSuite.new 'dummyf90test', '', false
21
21
  assert !File.exists?("dummyf90test.fun")
22
22
  assert !File.exists?("dummyf90test_fun.f90")
23
23
  end
@@ -35,31 +35,31 @@ class TestTestSuite < Test::Unit::TestCase
35
35
 
36
36
  def test_bare_minimum_funit_file_compiles
37
37
  create_funit_file ""
38
- Funit::TestSuite.new 'dummyf90test'
38
+ Funit::TestSuite.new 'dummyf90test', '', false
39
39
  assert system(@@compileCommand)
40
40
  end
41
41
 
42
42
  def test_module_variables_allowed
43
43
  create_funit_file "integer :: a"
44
- Funit::TestSuite.new 'dummyf90test'
44
+ Funit::TestSuite.new 'dummyf90test', '', false
45
45
  assert system(@@compileCommand)
46
46
  end
47
47
 
48
48
  def test_blank_setup_compiles
49
49
  create_funit_file "beginSetup\nendSetup"
50
- Funit::TestSuite.new 'dummyf90test'
50
+ Funit::TestSuite.new 'dummyf90test', '', false
51
51
  assert system(@@compileCommand)
52
52
  end
53
53
 
54
54
  def test_blank_test_gives_warning
55
55
  create_funit_file "beginTest bob\nendTest"
56
- Funit::TestSuite.new 'dummyf90test'
56
+ Funit::TestSuite.new 'dummyf90test', '', false
57
57
  assert system(@@compileCommand)
58
58
  end
59
59
 
60
60
  def test_single_assert_test_compiles
61
61
  create_funit_file "beginTest assertTrue\nAssertTrue(.true.)\nendTest"
62
- Funit::TestSuite.new 'dummyf90test'
62
+ Funit::TestSuite.new 'dummyf90test', '', false
63
63
  assert system(@@compileCommand)
64
64
  end
65
65
 
@@ -71,7 +71,7 @@ class TestTestSuite < Test::Unit::TestCase
71
71
  AssertEqual(1,a(1,1))
72
72
  endTest
73
73
  MATRIX
74
- Funit::TestSuite.new 'dummyf90test'
74
+ Funit::TestSuite.new 'dummyf90test', '', false
75
75
  assert system(@@compileCommand)
76
76
  end
77
77
 
@@ -83,7 +83,7 @@ class TestTestSuite < Test::Unit::TestCase
83
83
  AssertRealEqual(1.0,real_var)
84
84
  endTest
85
85
  REALEQUALS
86
- Funit::TestSuite.new 'dummyf90test'
86
+ Funit::TestSuite.new 'dummyf90test', '', false
87
87
  assert system(@@compileCommand)
88
88
  end
89
89
 
@@ -98,13 +98,13 @@ class TestTestSuite < Test::Unit::TestCase
98
98
  balance = 0.5*(left+right)
99
99
  end function balance
100
100
  REQUALSFUNC
101
- Funit::TestSuite.new 'dummyf90test'
101
+ Funit::TestSuite.new 'dummyf90test', '', false
102
102
  assert system(@@compileCommand)
103
103
  end
104
104
 
105
105
  def test_ignore_commented_test
106
106
  create_funit_file "XbeginTest bob\nendTest"
107
- Funit::TestSuite.new 'dummyf90test'
107
+ Funit::TestSuite.new 'dummyf90test', '', false
108
108
  assert_no_match( /Testbob/i, IO.readlines('dummyf90test_fun.f90').join )
109
109
  end
110
110
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: funit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.3
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Karen Bibb
@@ -13,7 +13,7 @@ autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
15
 
16
- date: 2009-10-05 00:00:00 -04:00
16
+ date: 2009-11-01 01:00:00 -04:00
17
17
  default_executable:
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
@@ -24,7 +24,7 @@ dependencies:
24
24
  requirements:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
- version: 1.0.1
27
+ version: 1.1.0
28
28
  version:
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: hoe
@@ -34,23 +34,9 @@ dependencies:
34
34
  requirements:
35
35
  - - ">="
36
36
  - !ruby/object:Gem::Version
37
- version: 1.12.2
37
+ version: 2.3.3
38
38
  version:
39
- description: |-
40
- FUnit is a unit testing framework for Fortran.
41
-
42
- Unit tests are written as Fortran fragments that use a small
43
- set of testing-specific keywords and functions. FUnit transforms
44
- these fragments into valid Fortran code, compiles, links, and
45
- runs them against the code under test.
46
-
47
- FUnit is {opinionated software}[http://www.oreillynet.com/pub/a/network/2005/08/30/ruby-rails-david-heinemeier-hansson.html], which values convention over
48
- configuration. Specifically, FUnit,
49
-
50
- * requires a Fortran 95 compiler,
51
- * only supports testing routines contained in modules,
52
- * requires tests to be stored along side the code under test, and
53
- * requires test files to be named appropriately.
39
+ description: FUnit is a unit testing framework for Fortran. Unit tests are written as Fortran fragments that use a small set of testing-specific keywords and functions. FUnit transforms these fragments into valid Fortran code, compiles, links, and runs them against the code under test. FUnit is {opinionated software}[http://www.oreillynet.com/pub/a/network/2005/08/30/ruby-rails-david-heinemeier-hansson.html], which values convention over configuration. Specifically, FUnit, * requires a Fortran 95 compiler, * only supports testing routines contained in modules, * requires tests to be stored along side the code under test, and * requires test files to be named appropriately.
54
40
  email: nasarb-developers@rubyforge.org
55
41
  executables:
56
42
  - funit
@@ -92,8 +78,6 @@ files:
92
78
  - utils/funit-mode.el
93
79
  has_rdoc: true
94
80
  homepage: http://rubyforge.org/projects/nasarb
95
- licenses: []
96
-
97
81
  post_install_message:
98
82
  rdoc_options:
99
83
  - --main
@@ -115,9 +99,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
115
99
  requirements:
116
100
  - A Fortran compiler.
117
101
  rubyforge_project: nasarb
118
- rubygems_version: 1.3.3
102
+ rubygems_version: 1.3.1
119
103
  signing_key:
120
- specification_version: 3
104
+ specification_version: 2
121
105
  summary: FUnit is a unit testing framework for Fortran
122
106
  test_files:
123
107
  - test/test_compiler.rb