-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathCHANGES.txt
569 lines (386 loc) · 13.3 KB
/
CHANGES.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
-----------
FRUIT 3.4.3
-----------
rakefile of fruit_processor_gem is modified.
See https://sourceforge.net/p/fortranxunit/bugs/6/
On some versions of ruby (between version 1.9 and 2.1) and minitest (version 5),
fruit_processor_gem/test/fruit_processor_test.rb
fruit_processor_gem/test/misc_test.rb
may need modification.
A sample of modification is added as
fruit_processor_gem/test/fruit_processor_test_ruby2.rb
fruit_processor_gem/test/misc_test_ruby2.rb
See
https://sourceforge.net/p/fortranxunit/bugs/5/
-----------
FRUIT 3.4.1
-----------
Maximum number of failed assertations was limited to 2000.
This limitation is removed.
-----------
FRUIT 3.4.0
-----------
A sample of calling assertations from multi-thread code
using OpenMP is added as sample_openmp.
No changes in fruit_processor in this version.
Version number of fruit_processor remains 3.3.8.
-----------
FRUIT 3.3.9
-----------
Content of fruit_util.f90 is added into fruit.f90.
No changes in fruit_processor in this version.
Version number of fruit_processor remains 3.3.8.
-----------
FRUIT 3.3.8
-----------
Fruit_processor failed to recognize the subroutine
when "!" appears on the line tester subroutine name declared.
For example, on this code
subroutine test_some_routine !comment
...
end subroutine
tester "test_some_routine" was ignored.
This behavior of fruit_processor is fixed now.
-----------
FRUIT 3.3.7
-----------
Samples added:
sample_using_make
This sample uses not rake but make.
Works only for gfortran + make.
sample_exit_at_fail
Sample of exitting a test case when assertion fails.
User has to add a line
if (fruit_if_case_failed()) return
in the tester code.
Subroutines to surppress output of "." added.
After
call fruit_hide_dots
dots are not written.
To output dots again,
call fruit_show_dots
can be used.
These calls are tested in a sample "sample_selective".
No changes in fruit_processor in this version.
Version number of fruit_processor remains 3.3.6.
-----------
FRUIT 3.3.6
-----------
Previous version (3.3.5) could not compile
external subroutines having circular dependencies.
See
sample_circular_dep
.
Fruit 3.3.6 tries to build it
through considering some dependencies
not while compiling but while linking.
-----------
FRUIT 3.3.5
-----------
Samples of testing external subroutine and
external functions are is at
sample_exteranl_sub/
sample_exteranl_func/
External functions tested must be
specified in interface block or external statement of
tester code.
Otherwise FRUIT cannot estimate dependencies
for compile.
-----------
FRUIT 3.3.4
-----------
When tester routines are added to *_test.f90,
fruit_basket_gen.f90 is updated.
But when tester routine(s) were removed,
fruit_basket_gen.f90 was not updated.
This problem is fixed in FRUIT 3.3.4.
-----------
FRUIT 3.3.3
-----------
Time stamp of fruit_basket_gen.f90 and fruit_driver_gen.f90
are kept when their content does not change.
This behavior surpresses unnecessary re-compile and saves your time.
-----------
FRUIT 3.3.2
-----------
In assert_not_equals subroutines,
inequality comparison for real numbers
if (real_number_1 /= real_number_2) then ...
was used.
(gfortran 4.8.2 with -Wextra option warns about it.)
The inequality is replaced by inequalities
if (real_1 < real_2 .or. real_1 > real_2) then...
-----------
FRUIT 3.3.1
-----------
Unnecessary mpi_machine_file were included in fruit_3.3.0.zip.
Removed them.
-----------
FRUIT 3.3.0
-----------
FRUIT 3.3.0 can test codes using MPI.
Sample is in directry sample_mpi.
Test code is in self_test_mpi.
Tested on
Ubuntu 12.04 + OpenMPI
Windows 7 + MPICH2 (mpich2-1.4.1p1-win-ia32)
-----------
FRUIT 3.2.6
-----------
assert_false added.
When execution of test stops before regular exit,
"result.xml" that reports one failure is generated.
(So far, "result.xml" of previous run remained
that usually reports no error.)
-----------
FRUIT 3.2.5
-----------
Description of samples are added to README.
doc/changes.txt is moved to CHANGES.txt
sample_selective/rakefile directly reads src/fruit.f90, src/fruit_util.f90.
-----------
FRUIT 3.2.4
-----------
On FTN95 output to "result.xml" become available.
Prefix for "classname" within result.xml can be
specified by writing
fp.xml_prefix = "some_string. "
within rakefile.
See self_test/rakefile for example.
When Jenkins ( http://jenkins-ci.org/ ) reads this "result.xml" as JUnit result,
the prefix until period is treated as package name.
rakefile is modified to generate ROOT_ANCHOR and fruit.f90 before running samples.
-----------
FRUIT 3.2.3
-----------
There was problem in rake_estimate.rb that
module names with upper case characters are not
processed correctly.
Fixed in this version.
-----------
FRUIT 3.2.2
-----------
On gfortran and ifort, coverage reports can be generated for samples
self_test
sample_multi_dir/build
sample_build_dir
sample_selecive.
In these directries, do "rake coverage" for generate reports such as
*.f90.gcov (gfortran)
CODE_COVERAGE.HTML (ifort)
FruitProcessor warns if user-specifiled filenames given in
fp.process_only = [ (filenames) ]
line not match with *_test.f(90|95|03|07)
or any of the corresponding files is absent.
rake_estimate.rb warns if two fortran source files
define the same module name.
Fixed a problem that fruit_basket_gen.f90 and fruit_driver_gen.f90
are compiled twice when rake_estimate.rb is used.
-----------
FRUIT 3.2.1
-----------
Order of test methods can be made random by setting
fp.shuffle = true
in rakefile. For example, see self_test/rakefile.
Fruit processor checks if test module name and its file name are consistent.
A method "module_name_consistent?" in fruit_processor_gem/lib/fruit_processor.rb
does it.
Log output from rake_estimate.rb on file dependencies is reduced.
To see extra info on dependencies, set
$show_info = true
in rakefile. See sample_multi_dir/build/rakefile for example.
Unnecessary dependencies given in rake_base_deps.rb are removed.
Sample of rakefile for building main program using rake_estimate.rb is added.
See sample_selective/rakefile_main.
It estimates dependencies between modules.
-----------
FRUIT 3.2.0
-----------
+ Works on FTN95.
FTN95 is Fortran compiler for Windows.
http://www.silverfrost.com
+ Works on gfortran of TDM-GCC on Windows.
http://tdm-gcc.tdragon.net/
+ To support extension .obj and backslash path,
rake_base.rb is divided into
compiler definition part (rake_base.rb) and
dependencies part (rake_base_deps.rb).
-----------
FRUIT 3.1.0
-----------
+ LICENSE.txt added
+ Comment on copyright added to each file
+ Samples added or changed
+ sample_build_dir
This sample puts *.o, *.mod, *_gen.f90, and executable to a sub directry.
+ sample
rakefile "rakefile_mingw" added that works with MinGW.
It does not use library. Instead fruit.f90 and fruit_util.f90 are compiled.
+ sample_multi_dir
Source files in multiple directries are compiled within single rakefile.
This sample puts *.o, *.mod, *_gen.f90, and executable to a sub directry.
Source directries are kept unchanged.
+ FruitProcessor and rake_estimate.rb may process multiple source directries.
See sample sample_multi_dir.
-----------
FRUIT 3.0.2
-----------
+ fruit_processor_gem/rakefile
Changed to work with rake 10.0.x
-----------
FRUIT 3.0.1
-----------
+ rake_estimate.rb
A problem that rake_estimate.rb failed to read
lines ending in CR+LF is fixed.
+ setup and teardown
When tester file (*_test.f90 etc.) did not have setup subroutine,
its teardown subroutine was not called.
Corresponding error in fruit_processor.rb is fixed.
-----------
FRUIT 3.0
-----------
+ Test runner GUI gui_fruit.rb is added.
To use "gui_fruit.rb", other two ruby scripts
"rake_base.rb" and "rake_estimate.rb" must be in the same directory.
Before starting GUI, Fortran compiler setting in "rake_base_db"
should be edited.
Works both for single directory projects and multiple directry projects.
Here multiple directry project means project consist of
one source directry (contains tested fortran files) and
one tester directry (contains tester fortran files *_test.f90).
For example, within fruit distribution tests
"self_test", "sample_selective", "sample_single_dir",
"in_3_minutes" and
"sample"
can be run using GUI.
-----------
FRUIT 2.9.2
-----------
+ Test of rake_estimate.rb
A tester of rake_estimate.rb is added as ruby_test/rake_estimate_test.rb.
+ Change in rake_estimate.rb
rake_estimate.rb is rewritten as a class FruitRakeEstimate.
+ Not copy but make symbolic links
In the previous version, rakefile copies
fortran files (fruit.f90, fruit_util.f90) and
ruby files (rake_base.rb, rake_estimate.rb) to directries
"sample_single_dir", "sample_selective" and "in_3_minutes".
Now symbolic links are made instead of copying files.
-----------
FRUIT 2.9.1
-----------
+ Selective build
When there are several *_test.f90 files in a directry,
all these tester files were compiled to build fruit driver.
One may want to run only few of the tester files.
To compile only selected tester files,
method "process_only" is added to fruit_processor.
New sample "sample_selective" demonstrates it.
File(s) to compile is given in
fp.process_only = FileList["mydict_test.f90"]
line of sample_selective/rakefile.
+ When main file exists in directry
Building fruit driver used to be failed when there was a main program
(.f90 file with "program" ... "end program" statements).
Build becomes possible by adding a line
$main = "fruit_driver_gen.f90"
to rakefile. It's demonstrated in samples
* sample_single_dir
* sample_selective
In these samples main file (dummy_main.f90) is
successfully ignored.
+ Estimation of dependencies
When there was dependency between fortran files,
it had to be written it in rakefile.
In this release, a new script "rake_estimate.rb" is added.
It scans "module ..." lines and "use ..." lines
and estimates dependencies between Fortran files.
To use it, include it from rakefile.
Examples are
* sample/test/rakefile
* sample_selective/rakefile
* sample_single_dir/rakefile
+ descriptions of rake target
Descriptions of rake target is added to rakefile.
Try "rake -T" to see the list of descriptios.
+ Self-tests
A number of self-tests for fruit.f90 are added as
self_test/various_asserts_test.f90
+ Generator of fruit.f90
To support various assertions for various types
(logical, real, double, complex-double, integer),
dimensions (0d, 1d, 2d) and equals/not-equals,
fruit.f90 is now generated using
src/fruit_f90_generator.rb and src/fruit_f90_source.txt.
+ Deallocate
Array for messages used in fruit.f90 was allocated but
not deallocated. Some compiler report it as memory error.
For deallocation of it, subroutine "fruit_finalize" is added to fruit.f90.
It deallocate the array for messages.
Corresponding memory leak while running self-test is fixed.
+ Error fixed
There was regression in FRUIT 2.9.
When Fortran source is updated and older corresponding
object file exists, rake did not recompile the source.
To fix it, relation between Fortran files and object files
are confirmed in rake_base.rb.
+ ruby 1.9.3
In addition to ruby 1.8.7, FRUIT works on ruby 1.9.3.
---------
FRUIT 2.9
---------
+ Extensions .f95
fruit_processor was processing only files with extension .f90.
Now extension .f95 is also recognized.
These extensions are hard-coded in
"fruit_processor_gem/lib/fruit_processor.rb" (around line 12)
and
"rake_base.rb" (around line 13).
+ Additional sample
New sample is added to "sample_single_dir/".
It is single directory project. Before compiling,
fruit.f90,
fruit_util.f90, and
rake_base.rb
must be copied to this directory. Fruit_processor generates
fruit_driver and fruit_basket and builds driver executable.
File extension .f95 is used for testing code and tested code.
If your fortran compiler does not recognize .f95 extension,
rename the files to have .f90 extension.
+ Self-testing
Test of "fruit_processor.rb" is done by
"fruit_processor_gem/test/fruit_processor_test.rb".
This test is included to default rake target of
"(tarball base dir)/rakefile" and
"(tarball base dir)/fruit_processor_gem/rakefile".
Self tests of "src/fruit.f90" and "src/fruit_util.f90" are in
"self_test" directry.
These test are originally in "test/" directry and rewritten
as automated tests.
+ Spec string
There was regression in FRUIT 2.8.
Spec string written using Fortran's continuous line did not processed.
Now spec string specification such as
character(len=*), parameter :: spec = 'calculation should produce 4.0&
& when 2.0 &
and 2.0 &
are inputs'
is processed. Also, spec specification as Fortran's comment line
!FRUIT_SPEC Spec string may given as Fortran's "comment" line.
is available.
---------
FRUIT 2.8
---------
1. FRUIT outputs test report in XML.
It can be read by Jenkins( http://jenkins-ci.org/ ).
A sample report appears as sample/test/result.xml
in FRUIT 2.8 release.
2. Case names are shown in failed assertion messages
even when fruit_processor is used.
Previously __unnamed__ was shown in place of case names.
3. Sample without rake nor rake was in "sample/taste" directry of FRUIT 2.7.
It is moved to "in_3_minutes" directry.
4. Works both with rake 0.9.2.2 and rake 0.8.7.
5. Debug option of fortran compiler is turned on by default.
For example of 1. and 2. above, see fruit2.8_with_jenkins.png