funit 0.9.3 → 0.9.4
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +13 -3
- data/Manifest.txt +3 -0
- data/README.txt +3 -4
- data/Rakefile +11 -14
- data/bin/funit +2 -0
- data/lib/funit.rb +1 -1
- data/lib/funit/assertions.rb +3 -3
- data/pitch/slides.tex +138 -0
- data/test/test_compiler.rb +1 -1
- data/test/test_funit.rb +3 -5
- data/utils/errorFinder.el +88 -0
- data/utils/funit-generic-mode.el +20 -0
- metadata +13 -10
data/History.txt
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
=== 0.9.4 / 2007-01-08
|
2
|
+
|
3
|
+
* 2 minor enhancements
|
4
|
+
* broke up more long conditionals with continuation
|
5
|
+
characters to avoid truncated lines
|
6
|
+
* added shebang to main for rubygems 1.0
|
7
|
+
|
1
8
|
=== 0.9.3 / 2007-12-23
|
2
9
|
|
3
10
|
* 2 bug fixes
|
@@ -7,12 +14,14 @@
|
|
7
14
|
=== 0.9.2 / 2007-09-21
|
8
15
|
|
9
16
|
* 1 minor enhancement
|
10
|
-
* broke up long generated assert lines with continuations
|
17
|
+
* broke up long generated assert lines with continuations
|
18
|
+
to compile via g95
|
11
19
|
|
12
20
|
=== 0.9.1 / 2007-08-20
|
13
21
|
|
14
22
|
* 1 minor enhancement
|
15
|
-
* Stripped './' path prefixes and '\' continuations to
|
23
|
+
* Stripped './' path prefixes and '\' continuations to
|
24
|
+
appease windoze
|
16
25
|
|
17
26
|
=== 0.9.0 / 2007-07-26
|
18
27
|
|
@@ -22,7 +31,8 @@
|
|
22
31
|
=== 0.1.3 / 2006-06-21
|
23
32
|
|
24
33
|
* 1 bug fix
|
25
|
-
* Do not remove unit tests! (Thanks to Sebastian Hanigk
|
34
|
+
* Do not remove unit tests! (Thanks to Sebastian Hanigk
|
35
|
+
and James Quirk.)
|
26
36
|
|
27
37
|
=== 0.1.2 / 2006-05-16
|
28
38
|
|
data/Manifest.txt
CHANGED
@@ -18,8 +18,11 @@ lib/funit/assertions.rb
|
|
18
18
|
lib/funit/compiler.rb
|
19
19
|
lib/funit/functions.rb
|
20
20
|
lib/funit/testsuite.rb
|
21
|
+
pitch/slides.tex
|
21
22
|
test/test_compiler.rb
|
22
23
|
test/test_functions.rb
|
23
24
|
test/test_funit.rb
|
24
25
|
test/test_testsuite.rb
|
26
|
+
utils/errorFinder.el
|
27
|
+
utils/funit-generic-mode.el
|
25
28
|
utils/funit-mode.el
|
data/README.txt
CHANGED
@@ -1,20 +1,19 @@
|
|
1
1
|
FUnit
|
2
2
|
|
3
3
|
* http://rubyforge.org/projects/nasarb
|
4
|
-
* http://
|
4
|
+
* http://nasarb.rubyforge.org
|
5
5
|
|
6
6
|
== DESCRIPTION:
|
7
7
|
|
8
|
-
FUnit is a unit testing framework for Fortran
|
8
|
+
FUnit is a unit testing framework for Fortran.
|
9
9
|
|
10
10
|
Unit tests are written as Fortran fragments that use a small
|
11
11
|
set of testing-specific keywords and functions. FUnit transforms
|
12
12
|
these fragments into valid Fortran code, compiles, links, and
|
13
|
-
runs them against the
|
13
|
+
runs them against the code under test.
|
14
14
|
|
15
15
|
FUnit is {opinionated software}[http://www.oreillynet.com/pub/a/network/2005/08/30/ruby-rails-david-heinemeier-hansson.html], which values convention over
|
16
16
|
configuration. Specifically, FUnit,
|
17
|
-
|
18
17
|
* requires a Fortran 95 compiler,
|
19
18
|
* only supports testing routines contained in modules,
|
20
19
|
* requires tests to be stored along side the code under test, and
|
data/Rakefile
CHANGED
@@ -3,21 +3,18 @@
|
|
3
3
|
require 'rubygems'
|
4
4
|
require 'hoe'
|
5
5
|
|
6
|
-
|
7
|
-
require 'funit'
|
6
|
+
require './lib/funit.rb'
|
8
7
|
|
9
|
-
Hoe.new('funit', Funit::VERSION) do |
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
p.clean_globs.concat %w( **/*_fun.f90 examples/**/TestRunner* **/*.o **/*.mod **/*.MOD )
|
20
|
-
p.rsync_args = '-rpv --delete' # to preserve group permissions
|
8
|
+
Hoe.new('funit', Funit::VERSION) do |funit|
|
9
|
+
funit.rubyforge_name = 'nasarb'
|
10
|
+
funit.remote_rdoc_dir = 'funit'
|
11
|
+
funit.extra_deps << [ 'fortran', '>= 1.0.1' ]
|
12
|
+
funit.spec_extras[:requirements] = "A Fortran compiler."
|
13
|
+
funit.author =
|
14
|
+
[ 'Karen Bibb','Bil Kleb','Beth Lee-Rausch','Mike Park','Bill Wood']
|
15
|
+
funit.email = 'nasarb-developers@rubyforge.org'
|
16
|
+
funit.clean_globs.concat %w( **/*_fun.f90 examples/**/TestRunner* **/*.o **/*.mod **/*.MOD )
|
17
|
+
funit.rsync_args = '-rpv --delete' # to preserve group permissions
|
21
18
|
end
|
22
19
|
|
23
20
|
# vim: syntax=Ruby
|
data/bin/funit
CHANGED
data/lib/funit.rb
CHANGED
data/lib/funit/assertions.rb
CHANGED
@@ -29,8 +29,8 @@ module Funit
|
|
29
29
|
line.match(/\((.*)\)/)
|
30
30
|
expected, actual = *(get_args($1))
|
31
31
|
@type = 'IsRealEqual'
|
32
|
-
@condition = ".not.(#{expected}+2*spacing(real(#{expected})).ge
|
33
|
-
@message = "\"#{actual} (\"
|
32
|
+
@condition = ".not.( (#{expected} &\n +2*spacing(real(#{expected})) ) &\n .ge. &\n (#{actual}) &\n .and. &\n (#{expected} &\n -2*spacing(real(#{expected})) ) &\n .le. &\n (#{actual}) )"
|
33
|
+
@message = "\"#{actual} (\", &\n #{actual}, &\n \") is not\", &\n #{expected},\&\n \"within\", &\n 2*spacing(real(#{expected}))"
|
34
34
|
syntax_error("invalid body for #@type",@suite_name) unless $&
|
35
35
|
write_assert
|
36
36
|
end
|
@@ -39,7 +39,7 @@ module Funit
|
|
39
39
|
line.match(/\((.*)\)/)
|
40
40
|
expected, actual, tolerance = *(get_args($1))
|
41
41
|
@type = 'IsEqualWithin'
|
42
|
-
@condition = ".not.(#{actual}+#{tolerance}.ge
|
42
|
+
@condition = ".not.((#{actual} &\n +#{tolerance}) &\n .ge. &\n (#{expected}) &\n .and. &\n (#{actual} &\n -#{tolerance}) &\n .le. &\n (#{expected}) )"
|
43
43
|
@message = "\"#{expected} (\",#{expected},\") is not\", &\n #{actual},\"within\",#{tolerance}"
|
44
44
|
syntax_error("invalid body for #@type",@suite_name) unless $&
|
45
45
|
write_assert
|
data/pitch/slides.tex
ADDED
@@ -0,0 +1,138 @@
|
|
1
|
+
% pdflatex slides
|
2
|
+
|
3
|
+
\documentclass[landscape]{slides}
|
4
|
+
\usepackage{url}
|
5
|
+
\pagestyle{empty}
|
6
|
+
\hoffset 1in
|
7
|
+
\begin{document}
|
8
|
+
\begin{slide}
|
9
|
+
\begin{center}
|
10
|
+
{\bf\Large F90 Testkit}\\
|
11
|
+
\vspace{0.5in}
|
12
|
+
\begin{minipage}{6.5in}
|
13
|
+
{\bf Goal:} to make Fortran~90 unit/\-mobility/\-developer testing
|
14
|
+
as painless as possible.
|
15
|
+
\end{minipage}
|
16
|
+
\end{center}
|
17
|
+
\end{slide}
|
18
|
+
\begin{slide}
|
19
|
+
\begin{center}
|
20
|
+
{\bf\Large Why write tests?}\\
|
21
|
+
\vspace{0.5in}
|
22
|
+
\begin{minipage}[t]{3in}
|
23
|
+
\begin{itemize}
|
24
|
+
\item Shame
|
25
|
+
\item Embarrassment
|
26
|
+
\item Speed
|
27
|
+
\item Confidence
|
28
|
+
\end{itemize}
|
29
|
+
\end{minipage}
|
30
|
+
\begin{minipage}[t]{3in}
|
31
|
+
\begin{itemize}
|
32
|
+
\item Trust
|
33
|
+
\item Change
|
34
|
+
\item Documentation
|
35
|
+
\end{itemize}
|
36
|
+
\end{minipage}
|
37
|
+
\end{center}
|
38
|
+
\end{slide}
|
39
|
+
\begin{slide}
|
40
|
+
\begin{center}
|
41
|
+
{\bf\Large Why write tests first?}\\
|
42
|
+
\vspace{0.5in}
|
43
|
+
\begin{minipage}{3in}
|
44
|
+
\begin{itemize}
|
45
|
+
\item Tests get written
|
46
|
+
\item Succinctness
|
47
|
+
\item Clarity
|
48
|
+
\item Closure
|
49
|
+
\end{itemize}
|
50
|
+
\end{minipage}\\
|
51
|
+
\vspace{1in}
|
52
|
+
\begin{minipage}{5.7in}\raggedright
|
53
|
+
``No code should be written or changed unless there is a failing
|
54
|
+
test.''
|
55
|
+
\end{minipage}
|
56
|
+
\end{center}
|
57
|
+
\end{slide}
|
58
|
+
\begin{slide}
|
59
|
+
\begin{center}
|
60
|
+
{\bf\Large How do I add tests to legacy code?}\\
|
61
|
+
\vspace{0.5in}
|
62
|
+
\begin{minipage}{6in}
|
63
|
+
\begin{itemize}
|
64
|
+
\item Fixing Bugs
|
65
|
+
\begin{itemize}
|
66
|
+
\item write test for bug {\small (which fails)}
|
67
|
+
\item write code to satisfy failing test
|
68
|
+
\item write tests/code for similar cases
|
69
|
+
\end{itemize}
|
70
|
+
\vspace{8pt}
|
71
|
+
\item Adding Features
|
72
|
+
\begin{itemize}
|
73
|
+
\item write test for feature {\small (which better fail)}
|
74
|
+
\item write code to satisfy failing test
|
75
|
+
\end{itemize}
|
76
|
+
\vspace{8pt}
|
77
|
+
\item Refactoring ``Bad Smells''
|
78
|
+
\begin{itemize}
|
79
|
+
\item write tests to cover existing code
|
80
|
+
\item update/add tests for new structure
|
81
|
+
\item change code to satisfy failing tests
|
82
|
+
\end{itemize}
|
83
|
+
\end{itemize}
|
84
|
+
\end{minipage}
|
85
|
+
\end{center}
|
86
|
+
\end{slide}
|
87
|
+
\begin{slide}
|
88
|
+
\begin{center}
|
89
|
+
{\bf\Large Crazy enough to learn more?}\\
|
90
|
+
\vspace{0.5in}
|
91
|
+
\begin{minipage}{6in}
|
92
|
+
\begin{itemize}
|
93
|
+
\item \url{http://c2.com/cgi/wiki?UnitTests}\\[-10pt]
|
94
|
+
\item \url{http://xprogramming.com/software.htm}
|
95
|
+
\end{itemize}
|
96
|
+
\end{minipage}
|
97
|
+
\end{center}
|
98
|
+
\end{slide}
|
99
|
+
\begin{slide}
|
100
|
+
\begin{center}
|
101
|
+
{\bf\Large Want to try F90 testkit?}\\
|
102
|
+
\vspace{0.5in}
|
103
|
+
\begin{minipage}{9in}
|
104
|
+
\begin{itemize}
|
105
|
+
\item Have your SA install Ruby {\small(or install it yourself)}\\[5pt]
|
106
|
+
\hspace*{1em}\url{http://www.ruby-lang.org/}\\[5pt]
|
107
|
+
\item Check out the FTK repository\\[5pt]
|
108
|
+
\hspace*{1em}\verb+cvs -d :pserver:[username]@abnode3:/usr/local/cvsroot \+\\
|
109
|
+
\hspace*{1em}\verb+checkout -P FTK+\\[5pt]
|
110
|
+
where \verb+[username]+ is your CVS username on \verb+abnode3+
|
111
|
+
\end{itemize}
|
112
|
+
\end{minipage}
|
113
|
+
\end{center}
|
114
|
+
\end{slide}
|
115
|
+
\begin{slide}
|
116
|
+
\begin{center}
|
117
|
+
{\bf\Large Who does what?}\\
|
118
|
+
\vspace{0.5in}
|
119
|
+
{\bf You:}
|
120
|
+
\begin{minipage}[t]{6.5in}\raggedright
|
121
|
+
\begin{enumerate}
|
122
|
+
\item Create testsuite file, e.g., \verb+RoutineTS.ftk+
|
123
|
+
\item Write test in Fortran with embedded assert macros, .e.g,
|
124
|
+
\verb+IsTrue(x>2)+
|
125
|
+
\item Run testsuite {\small (it should fail)}
|
126
|
+
\item Write \verb+Routine.f90+ to satisfy test
|
127
|
+
\end{enumerate}
|
128
|
+
\vspace{10pt}
|
129
|
+
Repeat steps 2, 3, and 4 until your objective is met.
|
130
|
+
\end{minipage}\\
|
131
|
+
\vspace{0.8in}
|
132
|
+
{\bf It:}
|
133
|
+
\begin{minipage}[t]{6in}\raggedright
|
134
|
+
Translates, compiles, links, and runs tests.
|
135
|
+
\end{minipage}
|
136
|
+
\end{center}
|
137
|
+
\end{slide}
|
138
|
+
\end{document}
|
data/test/test_compiler.rb
CHANGED
data/test/test_funit.rb
CHANGED
@@ -50,15 +50,13 @@ class TestFunit < Test::Unit::TestCase
|
|
50
50
|
@line_number = "dummy"
|
51
51
|
isrealequal("IsRealEqual(a,b)")
|
52
52
|
ans = <<-EOF
|
53
|
-
.not.(a+2*spacing(real(a)).ge.b
|
54
|
-
.and.a-2*spacing(real(a)).le.b)
|
53
|
+
.not.( (a &\n +2*spacing(real(a)) ) &\n .ge. &\n (b) &\n .and. &\n (a &\n -2*spacing(real(a)) ) &\n .le. &\n (b) )
|
55
54
|
EOF
|
56
55
|
assert_equal ans.chomp, @condition
|
57
|
-
assert_equal %|"b (",b,") is not", &\n a
|
56
|
+
assert_equal %|"b (", &\n b, &\n ") is not", &\n a,&\n "within", &\n 2*spacing(real(a))|, @message
|
58
57
|
isrealequal("IsRealEqual(1.0,m(1,1))")
|
59
58
|
ans = <<-EOF
|
60
|
-
.not.(1.0+2*spacing(real(1.0)).ge.m(1,1)
|
61
|
-
.and.1.0-2*spacing(real(1.0)).le.m(1,1))
|
59
|
+
.not.( (1.0 &\n +2*spacing(real(1.0)) ) &\n .ge. &\n (m(1,1)) &\n .and. &\n (1.0 &\n -2*spacing(real(1.0)) ) &\n .le. &\n (m(1,1)) )
|
62
60
|
EOF
|
63
61
|
assert_equal ans.chomp, @condition
|
64
62
|
end
|
@@ -0,0 +1,88 @@
|
|
1
|
+
From - Mon Nov 12 23:36:17 2001
|
2
|
+
Path: reznor.larc.nasa.gov!kant.larc.nasa.gov!logbridge.uoregon.edu!news-peer.gip.net!news.gsl.net!gip.net!newsfeed.mathworks.com!cyclone.swbell.net!easynews!sjc-peer.news.verio.net!news.verio.net!sea-read.news.verio.net.POSTED!not-for-mail
|
3
|
+
Sender: mikesl@thneed.na.wrq.com
|
4
|
+
Newsgroups: comp.emacs
|
5
|
+
Subject: Re: Re-centering buffer based on error line indicted in another buffer
|
6
|
+
References: <3BF03829.826F39CB@LaRC.NASA.Gov>
|
7
|
+
From: Michael Slass <mikesl@wrq.com>
|
8
|
+
Message-ID: <m3wv0vipqe.fsf@thneed.na.wrq.com>
|
9
|
+
Lines: 68
|
10
|
+
User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.1
|
11
|
+
MIME-Version: 1.0
|
12
|
+
Content-Type: text/plain; charset=us-ascii
|
13
|
+
Date: Mon, 12 Nov 2001 22:33:35 GMT
|
14
|
+
NNTP-Posting-Host: 150.215.90.102
|
15
|
+
X-Complaints-To: abuse@verio.net
|
16
|
+
X-Trace: sea-read.news.verio.net 1005604415 150.215.90.102 (Mon, 12 Nov 2001 22:33:35 GMT)
|
17
|
+
NNTP-Posting-Date: Mon, 12 Nov 2001 22:33:35 GMT
|
18
|
+
Organization: Verio
|
19
|
+
Xref: reznor.larc.nasa.gov comp.emacs:70829
|
20
|
+
|
21
|
+
Bil Kleb <W.L.Kleb@LaRC.NASA.Gov> writes:
|
22
|
+
|
23
|
+
>So, I have a mode that executes a command on the
|
24
|
+
>current buffer, and displays the resulting output
|
25
|
+
>in another buffer (with possibly some error messages
|
26
|
+
>which include line numbers in the original buffer).
|
27
|
+
>
|
28
|
+
>What I would like to have now is a function which
|
29
|
+
>scans the output buffer for errors (doing a regex
|
30
|
+
>pattern match?), and recenters the original buffer
|
31
|
+
>on the first error line indicated by the output buffer.
|
32
|
+
>(Auctex mode has a similar feature, but the code
|
33
|
+
>is much too involved for this newbie lisp brain to
|
34
|
+
>effectively decipher.)
|
35
|
+
>
|
36
|
+
>Any suggestions on references to search, keywords to
|
37
|
+
>use during a search, etc.?
|
38
|
+
>
|
39
|
+
>TIA,
|
40
|
+
>--
|
41
|
+
>bil <http://abweb.larc.nasa.gov/~kleb/>
|
42
|
+
|
43
|
+
Here's a quick kludge for this, if you don't want to try to adapt
|
44
|
+
compilation mode. It's kludgey, but if you're lucky, some of the gurus
|
45
|
+
will give you (and me) pointers on how to make it less so.
|
46
|
+
|
47
|
+
|
48
|
+
(defvar bk-error-buffer
|
49
|
+
"*error-buffer*"
|
50
|
+
"Buffer name for error messages used by `bk-next-error'")
|
51
|
+
|
52
|
+
(defvar bk-error-message-regexp
|
53
|
+
"error at line \\([0-9]+\\)"
|
54
|
+
"Regular expression used by `bk-next-error' to find error messages.
|
55
|
+
The sub-expression between the first capturing parens must be the line
|
56
|
+
number where the error occured")
|
57
|
+
|
58
|
+
|
59
|
+
(defun bk-next-error ()
|
60
|
+
"Goto line in current buffer indicated by next error message in `bk-error-buffer'
|
61
|
+
|
62
|
+
Assumes that the point is positioned before the first occurance of
|
63
|
+
`bk-error-message-regexp' in the `bk-error-buffer' before the first
|
64
|
+
call to this function.
|
65
|
+
|
66
|
+
See also `bk-error-message-regexp' `bk-error-buffer'"
|
67
|
+
|
68
|
+
(interactive)
|
69
|
+
(let ((error-line-number))
|
70
|
+
(save-current-buffer
|
71
|
+
(set-buffer (or (get-buffer bk-error-buffer)
|
72
|
+
(error
|
73
|
+
(concat
|
74
|
+
"Can't find the error buffer: "
|
75
|
+
bk-error-buffer))))
|
76
|
+
(if (re-search-forward bk-error-message-regexp nil t)
|
77
|
+
(progn
|
78
|
+
(setq error-line-number
|
79
|
+
(string-to-number
|
80
|
+
(buffer-substring (match-beginning 1)
|
81
|
+
(match-end 1))))
|
82
|
+
(goto-char (1+ (match-end 1))))))
|
83
|
+
(if error-line-number
|
84
|
+
(goto-line error-line-number)
|
85
|
+
(message "No more errors"))))
|
86
|
+
|
87
|
+
--
|
88
|
+
Mike
|
@@ -0,0 +1,20 @@
|
|
1
|
+
;; Make a generic-mode for fUnit files:
|
2
|
+
(require 'generic)
|
3
|
+
(define-generic-mode 'funit-generic-mode
|
4
|
+
(list ?!)
|
5
|
+
(list
|
6
|
+
"beginTest"
|
7
|
+
"endTest"
|
8
|
+
"beginSetup"
|
9
|
+
"endSetup"
|
10
|
+
"beginTeardown"
|
11
|
+
"endTeardown"
|
12
|
+
)
|
13
|
+
'(("\\(IsFalse\\)" 1 'font-lock-function-name-face)
|
14
|
+
("\\(IsTrue\\)" 1 'font-lock-function-name-face)
|
15
|
+
("\\(IsEqualWithin\\)" 1 'font-lock-function-name-face)
|
16
|
+
("\\(IsEqual\\)" 1 'font-lock-function-name-face)
|
17
|
+
("\\(IsRealEqual\\)" 1 'font-lock-function-name-face))
|
18
|
+
(list "\\.fun\\'")
|
19
|
+
nil
|
20
|
+
"Generic mode for fUnit files.")
|
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.9.
|
4
|
+
version: 0.9.4
|
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:
|
16
|
+
date: 2008-03-30 00:00:00 -04:00
|
17
17
|
default_executable:
|
18
18
|
dependencies:
|
19
19
|
- !ruby/object:Gem::Dependency
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
requirements:
|
33
33
|
- - ">="
|
34
34
|
- !ruby/object:Gem::Version
|
35
|
-
version: 1.
|
35
|
+
version: 1.5.1
|
36
36
|
version:
|
37
|
-
description: 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
|
38
|
-
email:
|
37
|
+
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.
|
38
|
+
email: nasarb-developers@rubyforge.org
|
39
39
|
executables:
|
40
40
|
- funit
|
41
41
|
extensions: []
|
@@ -66,13 +66,16 @@ files:
|
|
66
66
|
- lib/funit/compiler.rb
|
67
67
|
- lib/funit/functions.rb
|
68
68
|
- lib/funit/testsuite.rb
|
69
|
+
- pitch/slides.tex
|
69
70
|
- test/test_compiler.rb
|
70
71
|
- test/test_functions.rb
|
71
72
|
- test/test_funit.rb
|
72
73
|
- test/test_testsuite.rb
|
74
|
+
- utils/errorFinder.el
|
75
|
+
- utils/funit-generic-mode.el
|
73
76
|
- utils/funit-mode.el
|
74
77
|
has_rdoc: true
|
75
|
-
homepage:
|
78
|
+
homepage: FUnit is a unit testing framework for Fortran.
|
76
79
|
post_install_message:
|
77
80
|
rdoc_options:
|
78
81
|
- --main
|
@@ -91,13 +94,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
91
94
|
- !ruby/object:Gem::Version
|
92
95
|
version: "0"
|
93
96
|
version:
|
94
|
-
requirements:
|
95
|
-
|
97
|
+
requirements:
|
98
|
+
- A Fortran compiler.
|
96
99
|
rubyforge_project: nasarb
|
97
|
-
rubygems_version: 1.0
|
100
|
+
rubygems_version: 1.1.0
|
98
101
|
signing_key:
|
99
102
|
specification_version: 2
|
100
|
-
summary: FUnit is a unit testing framework for Fortran
|
103
|
+
summary: FUnit is a unit testing framework for Fortran
|
101
104
|
test_files:
|
102
105
|
- test/test_compiler.rb
|
103
106
|
- test/test_functions.rb
|