4
4
using System . Drawing ;
5
5
using System . IO ;
6
6
using System . Text ;
7
- using System . Threading ;
7
+ using System . Threading . Tasks ;
8
8
using System . Windows . Forms ;
9
9
using utPLSQL ;
10
10
@@ -39,7 +39,7 @@ public TestRunnerWindow(RealTimeTestRunner testRunner)
39
39
gridResults . Columns [ 3 ] . DefaultCellStyle . Alignment = DataGridViewContentAlignment . MiddleRight ;
40
40
}
41
41
42
- internal void RunTests ( string type , string owner , string name , string procedure , bool coverage )
42
+ internal async Task RunTestsAsync ( string type , string owner , string name , string procedure , bool coverage )
43
43
{
44
44
Running = true ;
45
45
@@ -55,34 +55,115 @@ internal void RunTests(string type, string owner, string name, string procedure,
55
55
DialogResult dialogResult = codeCoverateReportDialog . ShowDialog ( ) ;
56
56
if ( dialogResult == DialogResult . OK )
57
57
{
58
- new Thread ( ( ) =>
59
- {
60
- var schemas = ConvertToVarcharList ( codeCoverateReportDialog . GetSchemas ( ) ) ;
61
- var includes = ConvertToVarcharList ( codeCoverateReportDialog . GetIncludes ( ) ) ;
62
- var excludes = ConvertToVarcharList ( codeCoverateReportDialog . GetExcludes ( ) ) ;
63
-
64
- testRunner . RunTestsWithCoverage ( type , owner , name , procedure , schemas , includes , excludes ) ;
65
- } ) . Start ( ) ;
58
+ RunWithCoverage ( type , owner , name , procedure , codeCoverateReportDialog ) ;
66
59
67
60
Show ( ) ;
68
61
69
62
CollectResults ( coverage ) ;
70
- CollectReport ( coverage ) ;
63
+ CollectReport ( ) ;
71
64
}
72
65
}
73
66
else
74
67
{
75
- new Thread ( ( ) =>
76
- {
77
- testRunner . RunTests ( type , owner , name , procedure ) ;
78
- } ) . Start ( ) ;
68
+ RunTests ( type , owner , name , procedure ) ;
79
69
80
70
Show ( ) ;
81
71
82
72
CollectResults ( coverage ) ;
83
73
}
84
74
}
85
75
76
+ private void RunTests ( string type , string owner , string name , string procedure )
77
+ {
78
+ Task . Factory . StartNew ( ( ) => testRunner . RunTests ( type , owner , name , procedure ) ) ;
79
+ }
80
+
81
+ private void RunWithCoverage ( string type , string owner , string name , string procedure , CodeCoverateReportDialog codeCoverateReportDialog )
82
+ {
83
+ var schemas = ConvertToVarcharList ( codeCoverateReportDialog . GetSchemas ( ) ) ;
84
+ var includes = ConvertToVarcharList ( codeCoverateReportDialog . GetIncludes ( ) ) ;
85
+ var excludes = ConvertToVarcharList ( codeCoverateReportDialog . GetExcludes ( ) ) ;
86
+
87
+ Task . Factory . StartNew ( ( ) => testRunner . RunTestsWithCoverage ( type , owner , name , procedure , schemas , includes , excludes ) ) ;
88
+ }
89
+
90
+ private void CollectResults ( bool coverage )
91
+ {
92
+ var completetedTests = 0 ;
93
+
94
+ Task . Factory . StartNew ( ( ) => testRunner . ConsumeResult ( @event =>
95
+ {
96
+ gridResults . BeginInvoke ( ( MethodInvoker ) delegate ( )
97
+ {
98
+ if ( @event . type . Equals ( "pre-run" ) )
99
+ {
100
+ totalNumberOfTests = @event . totalNumberOfTests ;
101
+
102
+ progressBar . Minimum = 0 ;
103
+ progressBar . Maximum = totalNumberOfTests * STEPS ;
104
+ progressBar . Step = STEPS ;
105
+
106
+ CreateTestResults ( @event ) ;
107
+
108
+ gridResults . Rows [ 0 ] . Selected = false ;
109
+ }
110
+ else if ( @event . type . Equals ( "post-test" ) )
111
+ {
112
+ completetedTests ++ ;
113
+ txtTests . Text = ( completetedTests > totalNumberOfTests ? totalNumberOfTests : completetedTests ) + "/" + totalNumberOfTests ;
114
+
115
+ UpdateProgressBar ( completetedTests ) ;
116
+
117
+ UpdateTestResult ( @event ) ;
118
+ }
119
+ else if ( @event . type . Equals ( "post-run" ) )
120
+ {
121
+ txtStart . Text = @event . run . startTime . ToString ( ) ;
122
+ txtEnd . Text = @event . run . endTime . ToString ( ) ;
123
+ txtTime . Text = @event . run . executionTime + " s" ;
124
+
125
+ txtTests . Text = ( completetedTests > totalNumberOfTests ? totalNumberOfTests : completetedTests ) + "/" + totalNumberOfTests ;
126
+ txtFailures . Text = @event . run . counter . failure + "" ;
127
+ txtErrors . Text = @event . run . counter . error + "" ;
128
+ txtDisabled . Text = @event . run . counter . disabled + "" ;
129
+
130
+ if ( @event . run . counter . failure > 0 || @event . run . counter . error > 0 )
131
+ {
132
+ progressBar . ForeColor = Color . DarkRed ;
133
+ }
134
+
135
+ if ( ! coverage )
136
+ {
137
+ txtStatus . Text = "Finished" ;
138
+ Running = false ;
139
+ }
140
+ }
141
+ } ) ;
142
+ } ) ) ;
143
+ }
144
+
145
+ private void CollectReport ( )
146
+ {
147
+ Task . Factory . StartNew ( ( ) =>
148
+ {
149
+ var start = DateTime . Now ;
150
+ txtStatus . Text = "Running with Coverage..." ;
151
+
152
+ string report = testRunner . GetCoverageReport ( ) ;
153
+
154
+ string filePath = $ "{ Path . GetTempPath ( ) } \\ utPLSQL_Coverage_Report_{ Guid . NewGuid ( ) } .html";
155
+ using ( StreamWriter sw = new StreamWriter ( filePath ) )
156
+ {
157
+ sw . WriteLine ( report ) ;
158
+ }
159
+
160
+ txtStatus . Text = $ "Finished in { ( DateTime . Now - start ) } ";
161
+ Running = false ;
162
+
163
+ System . Diagnostics . Process . Start ( filePath ) ;
164
+ } ) ;
165
+ }
166
+
86
167
private string ConvertToVarcharList ( string listValue )
87
168
{
88
169
if ( String . IsNullOrWhiteSpace ( listValue ) )
@@ -132,90 +213,6 @@ private static string JoinParts(string[] parts)
132
213
}
133
214
return sb . ToString ( ) ;
134
215
}
135
-
136
- private void CollectReport ( bool coverage )
137
- {
138
- new Thread ( ( ) =>
139
- {
140
- if ( coverage )
141
- {
142
- var start = DateTime . Now ;
143
- txtStatus . Text = "Running with Coverage..." ;
144
-
145
- string report = testRunner . GetCoverageReport ( ) ;
146
-
147
- string filePath = $ "{ Path . GetTempPath ( ) } \\ utPLSQL_Coverage_Report_{ Guid . NewGuid ( ) } .html";
148
- using ( StreamWriter sw = new StreamWriter ( filePath ) )
149
- {
150
- sw . WriteLine ( report ) ;
151
- }
152
-
153
- txtStatus . Text = $ "Finished in { ( DateTime . Now - start ) } ";
154
- Running = false ;
155
-
156
- System . Diagnostics . Process . Start ( filePath ) ;
157
- }
158
- } ) . Start ( ) ;
159
- }
160
-
161
- private void CollectResults ( bool coverage )
162
- {
163
- new Thread ( ( ) =>
164
- {
165
- var completetedTests = 0 ;
166
-
167
- testRunner . ConsumeResult ( @event =>
168
- {
169
- gridResults . BeginInvoke ( ( MethodInvoker ) delegate ( )
170
- {
171
- if ( @event . type . Equals ( "pre-run" ) )
172
- {
173
- totalNumberOfTests = @event . totalNumberOfTests ;
174
-
175
- progressBar . Minimum = 0 ;
176
- progressBar . Maximum = totalNumberOfTests * STEPS ;
177
- progressBar . Step = STEPS ;
178
-
179
- CreateTestResults ( @event ) ;
180
-
181
- gridResults . Rows [ 0 ] . Selected = false ;
182
- }
183
- else if ( @event . type . Equals ( "post-test" ) )
184
- {
185
- completetedTests ++ ;
186
- txtTests . Text = ( completetedTests > totalNumberOfTests ? totalNumberOfTests : completetedTests ) + "/" + totalNumberOfTests ;
187
-
188
- UpdateProgressBar ( completetedTests ) ;
189
-
190
- UpdateTestResult ( @event ) ;
191
- }
192
- else if ( @event . type . Equals ( "post-run" ) )
193
- {
194
- txtStart . Text = @event . run . startTime . ToString ( ) ;
195
- txtEnd . Text = @event . run . endTime . ToString ( ) ;
196
- txtTime . Text = @event . run . executionTime + " s" ;
197
-
198
- txtTests . Text = ( completetedTests > totalNumberOfTests ? totalNumberOfTests : completetedTests ) + "/" + totalNumberOfTests ;
199
- txtFailures . Text = @event . run . counter . failure + "" ;
200
- txtErrors . Text = @event . run . counter . error + "" ;
201
- txtDisabled . Text = @event . run . counter . disabled + "" ;
202
-
203
- if ( @event . run . counter . failure > 0 || @event . run . counter . error > 0 )
204
- {
205
- progressBar . ForeColor = Color . DarkRed ;
206
- }
207
-
208
- if ( ! coverage )
209
- {
210
- txtStatus . Text = "Finished" ;
211
- Running = false ;
212
- }
213
- }
214
- } ) ;
215
- } ) ;
216
- } ) . Start ( ) ;
217
- }
218
-
219
216
private void UpdateProgressBar ( int completetedTests )
220
217
{
221
218
int newValue = ( completetedTests * STEPS ) + 1 ;
@@ -502,7 +499,7 @@ private void menuItemRunTests_Click(object sender, EventArgs e)
502
499
TestResult testResult = testResults [ rowIndexOnRightClick ] ;
503
500
504
501
var testResultWindow = new TestRunnerWindow ( testRunner ) ;
505
- testResultWindow . RunTests ( RealTimeTestRunner . PROCEDURE , testResult . Owner , testResult . Package , testResult . Procedure , false ) ;
502
+ testResultWindow . RunTestsAsync ( RealTimeTestRunner . PROCEDURE , testResult . Owner , testResult . Package , testResult . Procedure , false ) ;
506
503
}
507
504
}
508
505
}
0 commit comments