Merge remote-tracking branch 'origin/master' into YaSp
[scilab.git] / scilab / modules / development_tools / macros / test_clean.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) 2007-2008 - INRIA - Pierre MARECHAL <pierre.marechal@inria.fr>
3 //
4 // This file must be used under the terms of the CeCILL.
5 // This source file is licensed as described in the file COPYING, which
6 // you should have received as part of this distribution.  The terms
7 // are also available at
8 // http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
9
10 // =============================================================================
11 // Clean tests
12 // =============================================================================
13
14 function test_clean(varargin)
15
16     lhs = argn(1);
17     rhs = argn(2);
18
19     global test_list;
20     global test_count;
21     global displayed_txt;
22
23     // test type
24     test_types        = ["unit_tests","nonreg_tests"];
25     test_types_keeped = "";
26
27     test_count         = 0;
28
29     displayed_txt      = "";
30
31     // =======================================================
32     // Gestion des types de tests à lancer
33     // =======================================================
34
35     if rhs < 3 then
36         test_types_keeped = "all_tests";
37     else
38         option_mat =  varargin(3);
39
40         if ((grep(option_mat,"unit_tests")<>[]) & (grep(option_mat,"nonreg_tests")<>[])) ..
41             | (grep(option_mat,"all_tests")<>[]) then
42             test_types_keeped = "all_tests";
43
44         elseif grep(option_mat,"unit_tests") <> [] then
45             test_types_keeped = "unit_tests";
46
47         elseif  grep(option_mat,"nonreg_tests") <> [] then
48             test_types_keeped = "nonreg_tests";
49
50         else
51             test_types_keeped = "all_tests";
52
53         end
54
55     end
56
57     // =======================================================
58     // Gestion des tests à lancer
59     // =======================================================
60
61     if (rhs == 0) ..
62         | ((rhs == 1) & (varargin(1)==[])) ..
63         | (((rhs == 2)|(rhs == 3)) & (varargin(1)==[]) & (varargin(2)==[])) then
64
65         // No input argument
66         // test_clean()
67         // test_clean([])
68         // => Launch each test of each module
69
70         module_list = getmodules();
71         module_list = gsort(module_list,"lr","i");
72         for k=1:size(module_list,"*")
73             test_clean_module(module_list(k),test_types_keeped);
74         end
75
76     elseif (rhs == 1) ..
77         | ((rhs == 2) & (varargin(2)==[])) ..
78         | ((rhs == 3) & (varargin(2)==[])) then
79
80         // One input argument
81         // test_clean(<module_name>)
82         // test_clean([<module_name_1>,<module_name_2>])
83
84         // varargin(1) = [<module_name_1>,<module_name_2>]
85
86         module_mat = varargin(1);
87
88         [nl,nc] = size(module_mat);
89
90         // test_clean([<module_name_1>,<module_name_2>])
91
92         for i=1:nl
93             for j=1:nc
94                 if( with_module(module_mat(i,j)) ) then
95                     test_clean_module(module_mat(i,j),test_types_keeped);
96                 else
97                     error(sprintf(gettext("%s is not an installed module"),module_mat(i,j)));
98                 end
99             end
100         end
101
102     elseif (rhs == 2) | (rhs == 3) then
103
104         // Two input arguments
105         // test_clean(<module_name>,<test_name>)
106         // test_clean(<module_name>,[<test_name_1>,<test_name_2>] )
107
108         // varargin(1) = <module_name> ==> string 1x1
109         // varargin(2) = <test_name_1> ==> mat nl x nc
110
111         module     = varargin(1);
112         test_mat   = varargin(2);
113
114         if ((or(size(module) <> [1,1])) & (test_mat <> [])) then
115             example = test_examples();
116             err     = ["" ; msprintf(gettext("%s: Wrong size for input argument."),"test_clean") ; "" ; example ];
117             printf("%s\n",err);
118             return;
119         end
120
121         [nl,nc] = size(test_mat);
122
123         for i=1:nl
124             for j=1:nc
125
126                 if (fileinfo(SCI+"/modules/"+module+"/tests/unit_tests/"+test_mat(i,j)+".dia")<>[]) ..
127                     & ( (test_types_keeped=="all_tests") | (test_types_keeped=="unit_tests") ) then
128                     test_clean_onetest(module,test_mat(i,j),"unit_tests");
129
130                 elseif (fileinfo(SCI+"/modules/"+module+"/tests/nonreg_tests/"+test_mat(i,j)+".dia")<>[]) ..
131                     & ( (test_types_keeped=="all_tests") | (test_types_keeped=="nonreg_tests") ) then
132                     test_clean_onetest(module,test_mat(i,j),"nonreg_tests");
133
134                 else
135                     error(sprintf(gettext("The test ""%s"" is not available from the ""%s"" module"),test_mat(i,j),module));
136
137                 end
138             end
139         end
140     else
141         error(msprintf(gettext("%s: Wrong number of input arguments."),"test_clean"));
142     end
143
144     // =======================================================
145     // Test clean
146     // =======================================================
147
148     for i=1:test_count
149         printf("   %03d/%03d - ",i,test_count);
150         printf("[%s] %s.dia\n",test_list(i,1),test_list(i,2));
151         test_clean_dia(test_list(i,1),test_list(i,2),test_list(i,3));
152     end
153
154 endfunction
155
156 //-----------------------------------------------------------------------------
157 // Pierre MARECHAL
158 // Scilab team
159 // Date : 28 oct. 2007
160 //
161 // => List all test files in the module <module_mat>
162 // => Add them to the test_mat matrix
163 //-----------------------------------------------------------------------------
164
165 function test_clean_module(module_mat,test_type)
166
167     if (test_type == "all_tests") | (test_type == "unit_tests") then
168
169         module_test_dir = SCI+"/modules/"+module_mat+"/tests/unit_tests";
170         test_mat        = gsort(basename(listfiles(module_test_dir+"/*.dia")),"lr","i");
171
172         nl = size(test_mat,"*");
173         for i=1:nl
174             test_clean_onetest(module_mat,test_mat(i),"unit_tests");
175         end
176
177     end
178
179     if (test_type == "all_tests") | (test_type == "nonreg_tests") then
180
181         module_test_dir = SCI+"/modules/"+module_mat+"/tests/nonreg_tests";
182         test_mat        = gsort(basename(listfiles(module_test_dir+"/*.dia")),"lr","i");
183
184         nl = size(test_mat,"*");
185         for i=1:nl
186             test_clean_onetest(module_mat,test_mat(i),"nonreg_tests");
187         end
188
189     end
190
191 endfunction
192
193 //-----------------------------------------------------------------------------
194 // Pierre MARECHAL
195 // Scilab team
196 // Date : 28 oct. 2007
197 //
198 // => Add the test <test> to the test_mat matrix
199 //-----------------------------------------------------------------------------
200
201 function test_clean_onetest(module,test,test_type)
202
203     global test_list;
204     global test_count;
205
206     test_count = test_count + 1;
207     test_list( test_count , 1 ) = module;
208     test_list( test_count , 2 ) = test;
209     test_list( test_count , 3 ) = test_type;
210
211 endfunction
212
213 //-----------------------------------------------------------------------------
214 // Pierre MARECHAL
215 // Scilab team
216 // Date : 15 jan. 2008
217 //
218 // => remove dia file
219 //-----------------------------------------------------------------------------
220
221 function test_clean_dia(module,test,test_type)
222     mdelete(SCI+"/modules/"+module+"/tests/"+test_type+"/"+test+".dia");
223 endfunction