fortran 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,9 @@
1
+ == 1.0.1 / 2007-08-20
2
+
3
+ * 1 minor enhancement
4
+ * stripped './' from source file names to appease windoze.
5
+
1
6
  == 1.0.0 / 2007-07-26
2
7
 
3
8
  * 1 major enhancement
4
9
  * Birthday!
5
-
data/README.txt CHANGED
@@ -1,16 +1,21 @@
1
1
  fortran
2
2
 
3
+ * http://nasarb.rubyforge.org/fortran
3
4
  * http://rubyforge.org/projects/nasarb
4
- * http://nasarb.rubyforge.org
5
- * mailto:Bil.Kleb@NASA.gov
5
+ * mailto:Bil.Kleb@nasa.gov
6
6
 
7
7
  == DESCRIPTION:
8
8
 
9
- * Provides Fortran 90/95/2003 makefile dependencies.
9
+ Fortran 90/95/2003 utilities.
10
+
11
+ Currently, only provides Fortran 90/95/2003 dependencies.
10
12
 
11
13
  == SYNOPSIS:
12
14
 
13
- * <tt>fortran</tt>
15
+ require 'rubygems'
16
+ require 'fortran'
17
+
18
+ Fortran::Dependencies.new( 'main.f90' ).dependencies
14
19
 
15
20
  == REQUIREMENTS:
16
21
 
data/Rakefile CHANGED
@@ -3,15 +3,18 @@
3
3
  require 'rubygems'
4
4
  require 'hoe'
5
5
 
6
- $:.unshift File.join( File.dirname(__FILE__), 'lib' )
7
- require 'fortran'
6
+ require './lib/fortran'
8
7
 
9
- Hoe.new('fortran', Fortran::VERSION) do |p|
8
+ Hoe.new( 'fortran', Fortran::VERSION ) do |p|
10
9
  p.rubyforge_name = 'nasarb'
11
- p.author = ['Bil Kleb','Mike Park','Bill Wood']
12
- p.email = 'Bil.Kleb@NASA.gov'
13
- p.summary = 'Fortran 90/95/2003 utilities.'
14
- p.description = p.paragraphs_of('README.txt', 3..4).join("\n\n")
15
- p.url = p.paragraphs_of('README.txt', 1).first.gsub(/^\* /, '').split(/\n/)
16
- p.changes = p.paragraphs_of('History.txt', 0..1).join("\n\n")
10
+ p.author = %w( 'Bil Kleb', 'Mike Park', 'Bill Wood' )
11
+ p.email = 'Bil.Kleb@NASA.gov'
12
+ p.url = p.paragraphs_of( 'README.txt', 1 ).to_s.gsub(/^\* /, '').split(/\n/)
13
+ p.summary = p.paragraphs_of( 'README.txt', 3 ).to_s
14
+ p.description = p.paragraphs_of( 'README.txt', 3..4 ).join("\n\n")
15
+ p.changes = p.paragraphs_of( 'History.txt', 0..1 ).join("\n\n")
16
+ p.remote_rdoc_dir = 'fortran' # release webpages to http://nasarb.rubyforge.org/fortran
17
+ p.rsync_args << ' --exclude=statsvn/'
17
18
  end
19
+
20
+ # vim: syntax=Ruby
@@ -1,9 +1,12 @@
1
1
  module Fortran
2
2
 
3
- VERSION = '1.0.0'
3
+ ##
4
+ # This version of Fortran library
5
+
6
+ VERSION = '1.0.1'
4
7
 
5
8
  ##
6
- # Find Fortran file dependencies
9
+ # Find Fortran dependencies
7
10
 
8
11
  class Dependencies
9
12
 
@@ -52,6 +55,7 @@ module Fortran
52
55
  source.flatten!.uniq!
53
56
  source.delete_if{ |file| File.lstat(file).symlink? } if @config[:ignore_symlinks]
54
57
  source.delete_if{ |file| file.match @config[:ignore_files] }
58
+ source.map!{ |file| file.sub(/^\.\//,'') }# strip leading ./
55
59
  end
56
60
 
57
61
  def build_hash_of_modules_in_files
@@ -120,8 +124,9 @@ module Fortran
120
124
  sources
121
125
  end
122
126
 
123
- end
124
- end
127
+ end # class
128
+
129
+ end # module
125
130
 
126
131
  #--
127
132
  # Copyright 2007 United States Government as represented by
@@ -0,0 +1,35 @@
1
+ require 'test/unit'
2
+ require 'lakos/analyze_dependencies'
3
+ require 'fileutils'
4
+
5
+ class TestAnalyzeDependencies < Test::Unit::TestCase
6
+
7
+ def setup
8
+ FileUtils.rm_rf 'AD_fixtures'
9
+ Dir.mkdir 'AD_fixtures'
10
+ Dir.chdir 'AD_fixtures'
11
+ File.open('m.f90','w'){|f| f.puts "program m\nuse a\nuse b\nuse d\nuse f" }
12
+ File.open('a.f90','w'){|f| f.puts "module a" }
13
+ File.open('b.f90','w'){|f| f.puts "module b\nuse c\nuse d\nuse e" }
14
+ File.open('c.f90','w'){|f| f.puts "module c" }
15
+ File.open('d.f90','w'){|f| f.puts "module d" }
16
+ File.open('e.f90','w'){|f| f.puts "module e" }
17
+ File.open('f.f90','w'){|f| f.puts "module f\nuse c\nuse e" }
18
+ @da = DependencyAnalyzer.new( 'm.f90', ['.'] )
19
+ Dir.chdir '..'
20
+ File.open('main.dot','w'){ |f| f.puts @da.graph(@da.dd_deps) }
21
+ end
22
+
23
+ def test_statistics
24
+ assert_equal( 3, @da.levels.size )
25
+ assert_equal( 7, @da.components )
26
+ assert_equal( 18, @da.ccd )
27
+ assert_in_delta( 18/7.to_f, @da.acd, Float::EPSILON )
28
+ assert_in_delta( 18/17.to_f, @da.nccd, Float::EPSILON )
29
+ end
30
+
31
+ def teardown
32
+ FileUtils.rm_rf 'AD_fixtures'
33
+ end
34
+
35
+ end
@@ -54,18 +54,18 @@ class TestFortran < Test::Unit::TestCase
54
54
  end
55
55
 
56
56
  def test_locating_all_fortran_files_in_search_path
57
- files = %w[ ../lib/solution.f90 ./area.f90 ./externalUse.f90
58
- ./grid.f90 ./main.F90 ./shapes.f90 ]
57
+ files = %w[ ../lib/solution.f90 area.f90 externalUse.f90
58
+ grid.f90 main.F90 shapes.f90 ]
59
59
  @dep.find_fortran_files.each do |file|
60
60
  assert files.include?(file)
61
61
  end
62
62
  end
63
63
 
64
64
  def test_build_hash_with_source_files
65
- f90 = %w[./grid.f90 ../lib/solution.f90 ./shapes.f90 ./area.f90]
65
+ f90 = %w[grid.f90 ../lib/solution.f90 shapes.f90 area.f90]
66
66
  hash = @dep.build_dictionary_of_modules( f90 )
67
- assert_equal %w[ ./shapes.f90 ./shapes.f90 ./area.f90
68
- ../lib/solution.f90 ./grid.f90 ].sort,
67
+ assert_equal %w[ shapes.f90 shapes.f90 area.f90
68
+ ../lib/solution.f90 grid.f90 ].sort,
69
69
  hash.values.sort
70
70
  assert_equal %w[ rectangle_fun3d circle area solution grid ].sort,
71
71
  hash.keys.sort
@@ -80,7 +80,7 @@ class TestFortran < Test::Unit::TestCase
80
80
  assert_equal %w[grid solution circle], modules
81
81
 
82
82
  new_source_files = modules.collect{ |mod| directoryHash[mod] }
83
- assert_equal %w[ ./grid.f90 ../lib/solution.f90 ./shapes.f90],
83
+ assert_equal %w[ grid.f90 ../lib/solution.f90 shapes.f90],
84
84
  new_source_files
85
85
 
86
86
  new_modules = new_source_files.collect do |file|
@@ -130,22 +130,22 @@ shapes.o: shapes.f90 \\
130
130
  @dep.source_file_dependencies('main.F90')
131
131
  assert_equal( 5, @dep.file_dependencies.size )
132
132
  expected = {
133
- "./area.f90" => [],
134
- "./grid.f90" => ["./area.f90"],
135
- "../lib/solution.f90" => ["./area.f90"],
136
- "./shapes.f90" => ["./area.f90"],
137
- "main.F90" => ["./grid.f90", "../lib/solution.f90", "./shapes.f90"]
133
+ "area.f90" => [],
134
+ "grid.f90" => ["area.f90"],
135
+ "../lib/solution.f90" => ["area.f90"],
136
+ "shapes.f90" => ["area.f90"],
137
+ "main.F90" => ["grid.f90", "../lib/solution.f90", "shapes.f90"]
138
138
  }
139
139
  assert_equal expected, @dep.file_dependencies
140
140
  end
141
141
 
142
142
  def test_finds_required_source_files
143
- expected = %w[ ./area.f90 ./shapes.f90 ../lib/solution.f90
144
- ./grid.f90 ./main.F90 ]
145
- found = @dep.required_source_files('./main.F90')
143
+ expected = %w[ area.f90 shapes.f90 ../lib/solution.f90
144
+ grid.f90 main.F90 ]
145
+ found = @dep.required_source_files('main.F90')
146
146
  assert_equal expected.size, found.size
147
- assert_equal './main.F90', found.last
148
- assert_equal './area.f90', found.first
147
+ assert_equal 'main.F90', found.last
148
+ assert_equal 'area.f90', found.first
149
149
  end
150
150
 
151
151
  def test_finds_required_source_files_unordered
@@ -159,14 +159,14 @@ shapes.o: shapes.f90 \\
159
159
  end
160
160
 
161
161
  def test_can_find_required_source_files_twice
162
- files = %w[ ./main.F90 ./shapes.f90 ./area.f90
163
- ../lib/solution.f90 ./grid.f90 ]
164
- @dep.required_source_files('./main.F90')
165
- assert_equal files.sort, @dep.required_source_files('./main.F90').sort
162
+ files = %w[ main.F90 shapes.f90 area.f90
163
+ ../lib/solution.f90 grid.f90 ]
164
+ @dep.required_source_files('main.F90')
165
+ assert_equal files.sort, @dep.required_source_files('main.F90').sort
166
166
  end
167
167
 
168
168
  def test_recognizes_external_modules
169
- file = './externalUse.f90'
169
+ file = 'externalUse.f90'
170
170
  assert_equal [file], @dep.required_source_files(file).sort
171
171
  end
172
172
 
metadata CHANGED
@@ -3,15 +3,15 @@ rubygems_version: 0.9.4
3
3
  specification_version: 1
4
4
  name: fortran
5
5
  version: !ruby/object:Gem::Version
6
- version: 1.0.0
7
- date: 2007-08-01 00:00:00 -04:00
6
+ version: 1.0.1
7
+ date: 2007-08-20 00:00:00 -04:00
8
8
  summary: Fortran 90/95/2003 utilities.
9
9
  require_paths:
10
10
  - lib
11
11
  email: Bil.Kleb@NASA.gov
12
- homepage: http://rubyforge.org/projects/nasarb
12
+ homepage: http://nasarb.rubyforge.org/fortran
13
13
  rubyforge_project: nasarb
14
- description: "* Provides Fortran 90/95/2003 makefile dependencies. == SYNOPSIS:"
14
+ description: Fortran 90/95/2003 utilities. Currently, only provides Fortran 90/95/2003 dependencies.
15
15
  autorequire:
16
16
  default_executable:
17
17
  bindir: bin
@@ -27,9 +27,12 @@ signing_key:
27
27
  cert_chain:
28
28
  post_install_message:
29
29
  authors:
30
- - Bil Kleb
31
- - Mike Park
32
- - Bill Wood
30
+ - "'Bil"
31
+ - Kleb',
32
+ - "'Mike"
33
+ - Park',
34
+ - "'Bill"
35
+ - Wood'
33
36
  files:
34
37
  - History.txt
35
38
  - License.txt
@@ -39,6 +42,7 @@ files:
39
42
  - lib/fortran.rb
40
43
  - test/test_fortran.rb
41
44
  test_files:
45
+ - test/lakos/test_analyze_dependencies.rb
42
46
  - test/test_fortran.rb
43
47
  rdoc_options:
44
48
  - --main
@@ -62,5 +66,5 @@ dependencies:
62
66
  requirements:
63
67
  - - ">="
64
68
  - !ruby/object:Gem::Version
65
- version: 1.2.2
69
+ version: 1.3.0
66
70
  version: