fUnit 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. data/{LICENSE → COPYING} +21 -21
  2. data/README +26 -2
  3. data/Rakefile +97 -0
  4. data/docs/html/classes/Funit.html +390 -0
  5. data/docs/html/classes/Funit/Assertions.html +285 -0
  6. data/docs/html/classes/Funit/Compiler.html +160 -0
  7. data/docs/html/classes/Funit/Depend.html +441 -0
  8. data/docs/html/classes/Funit/TestSuite.html +417 -0
  9. data/docs/html/created.rid +1 -0
  10. data/docs/html/files/COPYING.html +563 -0
  11. data/docs/html/files/README.html +151 -0
  12. data/docs/html/files/lib/funit/assertions_rb.html +101 -0
  13. data/docs/html/files/lib/funit/fortran_deps_rb.html +107 -0
  14. data/docs/html/files/lib/funit/functions_rb.html +101 -0
  15. data/docs/html/files/lib/funit/test_suite_rb.html +101 -0
  16. data/docs/html/files/lib/funit_rb.html +111 -0
  17. data/docs/html/fr_class_index.html +31 -0
  18. data/docs/html/fr_file_index.html +33 -0
  19. data/docs/html/fr_method_index.html +59 -0
  20. data/docs/html/index.html +24 -0
  21. data/docs/html/rdoc-style.css +208 -0
  22. data/examples/CFD/FluxFunctions.f90 +35 -0
  23. data/examples/CFD/FluxFunctionsMT.f90 +336 -0
  24. data/examples/CFD/FluxFunctionsMT.ftk +49 -0
  25. data/examples/CFD/Gammas.f90 +8 -0
  26. data/examples/CFD/GasModel.f90 +17 -0
  27. data/examples/CFD/GasModelMT.f90 +173 -0
  28. data/examples/CFD/GasModelMT.ftk +22 -0
  29. data/examples/CFD/TestRunner +0 -0
  30. data/examples/CFD/TestRunner.f90 +23 -0
  31. data/examples/CFD/fluxfunctions.mod +45 -0
  32. data/examples/CFD/gammas.mod +20 -0
  33. data/examples/CFD/gasmodel.mod +30 -0
  34. data/examples/CFD/gasmodelmt.mod +27 -0
  35. data/examples/StopWatch/StopWatch.f90 +50 -0
  36. data/examples/StopWatch/StopWatchMT.f90 +343 -0
  37. data/examples/StopWatch/StopWatchMT.ftk +73 -0
  38. data/examples/StopWatch/TestRunner +0 -0
  39. data/examples/StopWatch/TestRunner.f90 +23 -0
  40. data/examples/StopWatch/stopwatch.mod +34 -0
  41. data/examples/StopWatch/stopwatchmt.mod +27 -0
  42. data/lib/funit.rb +1 -6
  43. data/lib/funit/fortran_deps.rb +112 -0
  44. data/lib/funit/functions.rb +2 -5
  45. data/tests/tc_fortran_deps.rb +2 -2
  46. metadata +73 -22
  47. data/INSTALL +0 -19
  48. data/lib/fortran_deps.rb +0 -109
data/INSTALL DELETED
@@ -1,19 +0,0 @@
1
- Prerequisites
2
- -------------
3
-
4
- 1) A Fortran 90/95/2003 compiler.
5
-
6
- 2) The Ruby language -- see http://www.ruby-lang.org/
7
-
8
- 3) RubyGems package manager -- see http://rubyforge.org/projects/rubygems/
9
-
10
-
11
- Installation
12
- ------------
13
-
14
- gem install funit
15
-
16
-
17
- At some point, we plan to make installation easier by creating
18
- a single executable with Erik Veenstra's RubyScript2Exe
19
- <http://www.erikveen.dds.nl/rubyscript2exe/>.
data/lib/fortran_deps.rb DELETED
@@ -1,109 +0,0 @@
1
- # This scripts finds dependencies for f90 code
2
-
3
- raise "Need Ruby version >= 1.8, current using #{VERSION}" unless String.instance_methods.include? "match"
4
-
5
- class Depend
6
-
7
- attr_reader :file_dependencies, :source_files
8
-
9
- def initialize( searchPath = %w[ ../lib . ] )
10
- @parsed = Array.new
11
- @hash = build_hash_of_modules_in_files_within searchPath
12
- @file_dependencies = Hash.new
13
- @source_files = Array.new
14
- end
15
-
16
- def modules_used_in( file )
17
- modules = IO.readlines( file ).map do |line|
18
- $1.downcase if line.match( /^\s*use\s+(\w+)/i )
19
- end.uniq.compact
20
- end
21
-
22
- def modules_defined_in( file )
23
- modules = IO.readlines( file ).map do |line|
24
- $1.downcase if line.match( /^\s*module\s+(\w+)/i )
25
- end.uniq.compact
26
- end
27
-
28
- def build_dictionary_of_modules_in( files )
29
- file_containing_module = Hash.new
30
- files.each do |file|
31
- modules_defined_in( file ).each{ |mod| file_containing_module[mod]=file }
32
- end
33
- file_containing_module
34
- end
35
-
36
- def fortran_files_within( search_path = %w[ ../lib . ] )
37
- source = search_path.map{ |path| Dir[path+"/*.[fF]90"] }
38
- source.flatten!.uniq!
39
- source.delete_if{ |file| File.lstat(file).symlink? }
40
- source.delete_if{ |file| file.match(/lmpi_module_template.F90/) }
41
- end
42
-
43
- def build_hash_of_modules_in_files_within( searchPath = %w[../lib .] )
44
- build_dictionary_of_modules_in( fortran_files_within( searchPath ) )
45
- end
46
-
47
- def makefile_dependency_line( source )
48
- realSource = source.sub(/PHYSICS_DUMMY/,'PHYSICS_MODULES')# What's this?
49
- sourceNoPath = File.basename source
50
- @source_files.push sourceNoPath.gsub(%r|^.*/|,'')
51
- output = ''
52
- if (File.expand_path(source) != File.expand_path(sourceNoPath))
53
- output += sourceNoPath+ ": " + realSource + "\n"
54
- output += "\tln -sf "+realSource+" .\n"
55
- end
56
- output += source.gsub(/\.(f|F)90$/, ".o").gsub(%r|^.*/|,"" ) +
57
- ": " + source.gsub(%r|^.*/|,"" )
58
- modules_used_in( source ).each do |use|
59
- unless @hash[use]
60
- unless ( use=~/f90_unix/ || use=~/nas_system/ )
61
- $stderr.puts "Warning: unable to locate module #{use} used in #{source}." \
62
- if $DEBUG
63
- end
64
- next
65
- end
66
- output = output + " \\\n " +
67
- @hash[use].gsub(/\.(f|F)90$/, ".o").gsub(%r|^.*/|,"" )
68
- end
69
- output+"\n"
70
- end
71
-
72
- def dependencies( start )
73
- modules = modules_used_in( start )
74
- @parsed = @parsed || [start]
75
- newSourceFiles = modules.collect{ |mod| @hash[mod] }.compact
76
- makefile_dependency_line(start) +
77
- newSourceFiles.collect do |file|
78
- next if @parsed.include?(file)
79
- @parsed.push file
80
- dependencies file
81
- end.to_s
82
- end
83
-
84
- def source_file_dependencies( head_f90 )
85
- modules_head_uses = modules_used_in( head_f90 )
86
- required_f90s = modules_head_uses.map{ |mod| @hash[mod] }.compact
87
- @file_dependencies[head_f90] = required_f90s
88
- required_f90s.each do |required_f90|
89
- next if @parsed.include?(required_f90)
90
- source_file_dependencies( required_f90 )
91
- end
92
- @parsed.push head_f90
93
- end
94
-
95
- def required_source_files( head_f90 )
96
- @parsed.clear
97
- source_file_dependencies( head_f90 )
98
- sources = Array.new
99
- while !@file_dependencies.empty? do
100
- no_dependents_pair = @file_dependencies.detect{ |h,d| d == [] }
101
- no_dependents = no_dependents_pair.first
102
- sources.push no_dependents
103
- @file_dependencies.delete(no_dependents){ |el| "#{el} not found" }
104
- @file_dependencies.each_value{ |deps| deps.delete(no_dependents) }
105
- end
106
- sources
107
- end
108
-
109
- end