1
- /*
1
+ /**
2
2
* Copyright 2018 Philipp Salvisberg <philipp.salvisberg@trivadis.com>
3
3
*
4
4
* Licensed under the Apache License, Version 2.0 (the "License");
13
13
* See the License for the specific language governing permissions and
14
14
* limitations under the License.
15
15
*/
16
- package org .utplsql .sqldev .test .coverage
16
+ package org .utplsql .sqldev .test .coverage ;
17
17
18
- import java .io .File
19
- import java .nio .charset .StandardCharsets
20
- import java .nio .file .Files
21
- import java .nio .file .Path
22
- import java .util .Comparator
23
- import org .junit .AfterClass
24
- import org .junit .Assert
25
- import org .junit .BeforeClass
26
- import org .junit .Test
27
- import org .springframework .jdbc .BadSqlGrammarException
28
- import org .springframework .jdbc .datasource .SingleConnectionDataSource
29
- import org .utplsql .sqldev .coverage .CodeCoverageReporter
30
- import org .utplsql .sqldev .test .AbstractJdbcTest
18
+ import java .io .File ;
19
+ import java .nio .charset .StandardCharsets ;
20
+ import java .nio .file .Files ;
21
+ import java .nio .file .Path ;
22
+ import java .sql .Connection ;
23
+ import java .util .Collections ;
24
+ import java .util .Comparator ;
25
+ import java .util .List ;
26
+ import java .util .Optional ;
27
+ import java .util .function .Predicate ;
28
+ import java .util .function .ToLongFunction ;
29
+ import org .eclipse .xtend2 .lib .StringConcatenation ;
30
+ import org .eclipse .xtext .xbase .lib .CollectionLiterals ;
31
+ import org .eclipse .xtext .xbase .lib .Exceptions ;
32
+ import org .junit .AfterClass ;
33
+ import org .junit .Assert ;
34
+ import org .junit .BeforeClass ;
35
+ import org .junit .Test ;
36
+ import org .springframework .jdbc .BadSqlGrammarException ;
37
+ import org .springframework .jdbc .datasource .SingleConnectionDataSource ;
38
+ import org .utplsql .sqldev .coverage .CodeCoverageReporter ;
39
+ import org .utplsql .sqldev .test .AbstractJdbcTest ;
31
40
32
- class CodeCoverageReporterTest extends AbstractJdbcTest {
33
-
34
- @ BeforeClass
35
- def static void setup () {
36
- jdbcTemplate .execute ('''
37
- CREATE OR REPLACE FUNCTION f RETURN INTEGER IS
38
- BEGIN
39
- RETURN 1 ;
40
- END f ;
41
- ''')
42
- jdbcTemplate .execute ('''
43
- CREATE OR REPLACE PACKAGE test_f IS
44
- --%suite
45
-
46
- --%test
47
- PROCEDURE f ;
48
- END test_f ;
49
- ''')
50
- jdbcTemplate .execute ('''
51
- CREATE OR REPLACE PACKAGE BODY test_f IS
52
- --%test
53
- PROCEDURE f IS
54
- l_expected INTEGER := 1 ;
55
- l_actual INTEGER ;
56
- BEGIN
57
- l_actual := scott .f ();
58
- ut .expect (l_actual ).to_equal (l_expected );
59
- END f ;
60
- END test_f ;
61
- ''')
62
- }
63
-
64
- private def Path getNewestOutputFile () {
65
- val file = File .createTempFile ("test" , ".txt" )
66
- val dir = file .parentFile
67
- file .delete
68
- val last = Files .list (dir .toPath )
69
- .filter ([f | !f .toFile .directory ])
70
- .filter ([f | f .fileName .toString .startsWith ("utplsql_" )])
71
- .filter ( [f | f .fileName .toString .endsWith (".html" )])
72
- .max (Comparator .comparingLong ( [f |f .toFile ().lastModified ()]))
73
- return last .get
74
- }
75
-
76
- @ Test
77
- def void produceReportAndCloseConnection () {
78
- // create temporary dataSource, closed by reporter
79
- var ds = new SingleConnectionDataSource ()
80
- ds .driverClassName = "oracle.jdbc.OracleDriver"
81
- ds .url = dataSource .url
82
- ds .username = dataSource .username
83
- ds .password = dataSource .password
84
- val conn = ds .connection
85
- val pathList =#[':test_f' ]
86
- val includeObjectList = #['f' ]
87
- val reporter = new CodeCoverageReporter (pathList , includeObjectList , conn )
88
- val run = reporter .runAsync
89
- run .join (20000 )
90
- Assert .assertEquals (true , conn .isClosed )
91
- val outputFile = getNewestOutputFile
92
- Assert .assertTrue (outputFile !== null )
93
- val content = new String (Files .readAllBytes (outputFile ), StandardCharsets .UTF_8 )
94
- Assert .assertTrue (content .contains ('<h3>SCOTT.F</h3><h4><span class="green">100 %</span> lines covered</h4>' ))
95
- }
96
-
97
- @ AfterClass
98
- def static void teardown () {
99
- try {
100
- jdbcTemplate .execute ("DROP PACKAGE test_f" )
101
- } catch (BadSqlGrammarException e ) {
102
- // ignore
103
- }
104
- try {
105
- jdbcTemplate .execute ("DROP FUNCTION f" )
106
- } catch (BadSqlGrammarException e ) {
107
- // ignore
108
- }
109
- }
110
-
111
-
112
-
113
- }
41
+ @ SuppressWarnings ("all" )
42
+ public class CodeCoverageReporterTest extends AbstractJdbcTest {
43
+ @ BeforeClass
44
+ public static void setup () {
45
+ StringConcatenation _builder = new StringConcatenation ();
46
+ _builder .append ("CREATE OR REPLACE FUNCTION f RETURN INTEGER IS" );
47
+ _builder .newLine ();
48
+ _builder .append ("BEGIN" );
49
+ _builder .newLine ();
50
+ _builder .append (" " );
51
+ _builder .append ("RETURN 1;" );
52
+ _builder .newLine ();
53
+ _builder .append ("END f;" );
54
+ _builder .newLine ();
55
+ AbstractJdbcTest .jdbcTemplate .execute (_builder .toString ());
56
+ StringConcatenation _builder_1 = new StringConcatenation ();
57
+ _builder_1 .append ("CREATE OR REPLACE PACKAGE test_f IS" );
58
+ _builder_1 .newLine ();
59
+ _builder_1 .append (" " );
60
+ _builder_1 .append ("--%suite" );
61
+ _builder_1 .newLine ();
62
+ _builder_1 .newLine ();
63
+ _builder_1 .append (" " );
64
+ _builder_1 .append ("--%test" );
65
+ _builder_1 .newLine ();
66
+ _builder_1 .append (" " );
67
+ _builder_1 .append ("PROCEDURE f;" );
68
+ _builder_1 .newLine ();
69
+ _builder_1 .append ("END test_f;" );
70
+ _builder_1 .newLine ();
71
+ AbstractJdbcTest .jdbcTemplate .execute (_builder_1 .toString ());
72
+ StringConcatenation _builder_2 = new StringConcatenation ();
73
+ _builder_2 .append ("CREATE OR REPLACE PACKAGE BODY test_f IS" );
74
+ _builder_2 .newLine ();
75
+ _builder_2 .append (" " );
76
+ _builder_2 .append ("--%test" );
77
+ _builder_2 .newLine ();
78
+ _builder_2 .append (" " );
79
+ _builder_2 .append ("PROCEDURE f IS" );
80
+ _builder_2 .newLine ();
81
+ _builder_2 .append (" " );
82
+ _builder_2 .append ("l_expected INTEGER := 1;" );
83
+ _builder_2 .newLine ();
84
+ _builder_2 .append (" " );
85
+ _builder_2 .append ("l_actual INTEGER;" );
86
+ _builder_2 .newLine ();
87
+ _builder_2 .append (" " );
88
+ _builder_2 .append ("BEGIN" );
89
+ _builder_2 .newLine ();
90
+ _builder_2 .append (" " );
91
+ _builder_2 .append ("l_actual := scott.f();" );
92
+ _builder_2 .newLine ();
93
+ _builder_2 .append (" " );
94
+ _builder_2 .append ("ut.expect(l_actual).to_equal(l_expected);" );
95
+ _builder_2 .newLine ();
96
+ _builder_2 .append (" " );
97
+ _builder_2 .append ("END f;" );
98
+ _builder_2 .newLine ();
99
+ _builder_2 .append ("END test_f;" );
100
+ _builder_2 .newLine ();
101
+ AbstractJdbcTest .jdbcTemplate .execute (_builder_2 .toString ());
102
+ }
103
+
104
+ private Path getNewestOutputFile () {
105
+ try {
106
+ final File file = File .createTempFile ("test" , ".txt" );
107
+ final File dir = file .getParentFile ();
108
+ file .delete ();
109
+ final Predicate <Path > _function = (Path f ) -> {
110
+ boolean _isDirectory = f .toFile ().isDirectory ();
111
+ return (!_isDirectory );
112
+ };
113
+ final Predicate <Path > _function_1 = (Path f ) -> {
114
+ return f .getFileName ().toString ().startsWith ("utplsql_" );
115
+ };
116
+ final Predicate <Path > _function_2 = (Path f ) -> {
117
+ return f .getFileName ().toString ().endsWith (".html" );
118
+ };
119
+ final ToLongFunction <Path > _function_3 = (Path f ) -> {
120
+ return f .toFile ().lastModified ();
121
+ };
122
+ final Optional <Path > last = Files .list (dir .toPath ()).filter (_function ).filter (_function_1 ).filter (_function_2 ).max (Comparator .<Path >comparingLong (_function_3 ));
123
+ return last .get ();
124
+ } catch (Throwable _e ) {
125
+ throw Exceptions .sneakyThrow (_e );
126
+ }
127
+ }
128
+
129
+ @ Test
130
+ public void produceReportAndCloseConnection () {
131
+ try {
132
+ SingleConnectionDataSource ds = new SingleConnectionDataSource ();
133
+ ds .setDriverClassName ("oracle.jdbc.OracleDriver" );
134
+ ds .setUrl (AbstractJdbcTest .dataSource .getUrl ());
135
+ ds .setUsername (AbstractJdbcTest .dataSource .getUsername ());
136
+ ds .setPassword (AbstractJdbcTest .dataSource .getPassword ());
137
+ final Connection conn = ds .getConnection ();
138
+ final List <String > pathList = Collections .<String >unmodifiableList (CollectionLiterals .<String >newArrayList (":test_f" ));
139
+ final List <String > includeObjectList = Collections .<String >unmodifiableList (CollectionLiterals .<String >newArrayList ("f" ));
140
+ final CodeCoverageReporter reporter = new CodeCoverageReporter (pathList , includeObjectList , conn );
141
+ final Thread run = reporter .runAsync ();
142
+ run .join (20000 );
143
+ Assert .assertEquals (Boolean .valueOf (true ), Boolean .valueOf (conn .isClosed ()));
144
+ final Path outputFile = this .getNewestOutputFile ();
145
+ Assert .assertTrue ((outputFile != null ));
146
+ byte [] _readAllBytes = Files .readAllBytes (outputFile );
147
+ final String content = new String (_readAllBytes , StandardCharsets .UTF_8 );
148
+ Assert .assertTrue (content .contains ("<h3>SCOTT.F</h3><h4><span class=\" green\" >100 %</span> lines covered</h4>" ));
149
+ } catch (Throwable _e ) {
150
+ throw Exceptions .sneakyThrow (_e );
151
+ }
152
+ }
153
+
154
+ @ AfterClass
155
+ public static void teardown () {
156
+ try {
157
+ AbstractJdbcTest .jdbcTemplate .execute ("DROP PACKAGE test_f" );
158
+ } catch (final Throwable _t ) {
159
+ if (_t instanceof BadSqlGrammarException ) {
160
+ } else {
161
+ throw Exceptions .sneakyThrow (_t );
162
+ }
163
+ }
164
+ try {
165
+ AbstractJdbcTest .jdbcTemplate .execute ("DROP FUNCTION f" );
166
+ } catch (final Throwable _t_1 ) {
167
+ if (_t_1 instanceof BadSqlGrammarException ) {
168
+ } else {
169
+ throw Exceptions .sneakyThrow (_t_1 );
170
+ }
171
+ }
172
+ }
173
+ }
0 commit comments