Skip to content

Commit 659e745

Browse files
authored
Merge pull request #5 from intersystems/internal-updates
Support use w/ delimited identifiers disabled
2 parents ba92590 + 8b5fd75 commit 659e745

File tree

8 files changed

+97
-26
lines changed

8 files changed

+97
-26
lines changed

cls/TestCoverage/Data/Aggregate/Base.cls

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Property CoveredMethods As %Integer [ Required ];
1111

1212
Property RtnLine As %Integer [ InitialExpression = 0 ];
1313

14-
Property Time As TestCoverage.DataType.Timing [ InitialExpression = 0 ];
14+
Property Time As TestCoverage.DataType.Timing [ InitialExpression = 0, SqlFieldName = _TIME ];
1515

1616
Property TotalTime As TestCoverage.DataType.Timing [ InitialExpression = 0 ];
1717

cls/TestCoverage/Data/CodeSubUnit/Method.cls

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ Method UpdateComplexity() As %Status
1818
// Get unique by map.ToLine to avoid issues with mapping of embedded SQL
1919
// (all lines of the generated query map back to the class line defining it)
2020
Set tResult = ##class(%SQL.Statement).%ExecDirect(,
21-
"select distinct by (map.ToLine) element_key ""Line"", Lines ""Code"" from TestCoverage_Data.CodeUnit_Lines intcode "_
21+
"select distinct by (map.ToLine) element_key as Line, Lines as Code from TestCoverage_Data.CodeUnit_Lines intcode "_
2222
"join TestCoverage_Data.CodeUnitMap map "_
2323
" on map.FromHash = intcode.CodeUnit "_
2424
" and map.FromLine = intcode.element_key "_

cls/TestCoverage/Data/Coverage.cls

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ Property CoveredLines As TestCoverage.DataType.Bitstring;
4545
Property RtnLine As array Of %Integer;
4646

4747
/// List of "Time" measurements from line-by-line monitor, subscripted by line number
48-
Property Time As array Of TestCoverage.DataType.Timing;
48+
Property Time As array Of TestCoverage.DataType.Timing [ SqlFieldName = _TIME ];
4949

5050
/// List of "TotalTime" measurements from line-by-line monitor, subscripted by line number
5151
Property TotalTime As array Of TestCoverage.DataType.Timing;

cls/TestCoverage/Data/Run.cls

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -83,20 +83,24 @@ ClassMethod MapRunCoverage(pRunIndex As %Integer) As %Status
8383
// Copy any other metrics captured/requested as well.
8484
For i=1:1:tRun.Metrics.Count() {
8585
Set tMetric = tRun.Metrics.GetAt(i)
86-
Set tSQLStatement = "INSERT OR UPDATE %NOLOCK %NOCHECK INTO TestCoverage_Data.""Coverage_"_tMetric_""" "_
87-
"(Coverage,element_key,"""_tMetric_""") "_
88-
"SELECT target.ID,map.ToLine,NVL(oldMetric."""_tMetric_""",0) + SUM(metric."""_tMetric_""") "_
86+
If $System.SQL.IsReservedWord(tMetric) {
87+
// e.g., "Time" -> "_Time"
88+
Set tMetric = "_"_tMetric
89+
}
90+
Set tSQLStatement = "INSERT OR UPDATE %NOLOCK %NOCHECK INTO TestCoverage_Data.Coverage_"_tMetric_" "_
91+
"(Coverage,element_key,"_tMetric_") "_
92+
"SELECT target.ID,map.ToLine,NVL(oldMetric."_tMetric_",0) + SUM(metric."_tMetric_") "_
8993
"FROM TestCoverage_Data.Coverage source "_
9094
"JOIN TestCoverage_Data.CodeUnitMap map "_
9195
" ON source.Hash = map.FromHash "_
92-
"JOIN TestCoverage_Data.""Coverage_"_tMetric_""" metric "_
96+
"JOIN TestCoverage_Data.Coverage_"_tMetric_" metric "_
9397
" ON metric.Coverage = source.ID "_
9498
" AND metric.element_key = map.FromLine "_
9599
"JOIN TestCoverage_Data.Coverage target "_
96100
" ON target.Run = source.Run "_
97101
" AND target.Hash = map.ToHash "_
98102
" AND target.TestPath = source.TestPath "_
99-
"LEFT JOIN TestCoverage_Data.""Coverage_"_tMetric_""" oldMetric "_
103+
"LEFT JOIN TestCoverage_Data.Coverage_"_tMetric_" oldMetric "_
100104
" ON oldMetric.ID = target.ID "_
101105
" AND oldMetric.element_key = map.ToLine "_
102106
"WHERE source.Run = ? "_

cls/TestCoverage/UI/AggregateResultViewer.cls

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,13 @@ XData Contents [ XMLNamespace = "http://www.intersystems.com/zen" ]
2121
</vgroup>
2222
<vgroup labelPosition="left" align="left" enclosingClass="box" layout="none">
2323
<altJSONSQLProvider id="aggregateDataProvider" maxRows="10000"
24-
sql=" select 'Overall' As &quot;Routine&quot;,
25-
ROUND(100*CoveredLines/ExecutableLines,2) &quot;Percent Coverage&quot;,
26-
ExecutableLines &quot;Executable Lines&quot;,
27-
CoveredLines As &quot;Lines Covered&quot;,
28-
ROUND(100*CoveredMethods/ExecutableMethods,2) &quot;Method Coverage&quot;,
29-
ExecutableMethods As &quot;Executable Methods&quot;,
30-
CoveredMethods As &quot;Methods Covered&quot;,
24+
sql=" select 'Overall' As Routine,
25+
ROUND(100*CoveredLines/ExecutableLines,2) PercentCoverage,
26+
ExecutableLines as ExecutableLines,
27+
CoveredLines As LinesCovered,
28+
ROUND(100*CoveredMethods/ExecutableMethods,2) MethodCoverage,
29+
ExecutableMethods As ExecutableMethods,
30+
CoveredMethods As MethodsCovered,
3131
'' as Info,
3232
1 as TopSortOrder
3333
from TestCoverage_Data_Aggregate.ByRun where ExecutableLines > 0 and Run = ?

cls/TestCoverage/Utils.cls

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -176,11 +176,15 @@ ClassMethod AggregateCoverage(pTestIndex As %String) As %Status
176176
// Copy any other metrics captured/requested as well.
177177
For i=1:1:tRun.Metrics.Count() {
178178
Set tMetric = tRun.Metrics.GetAt(i)
179-
Set tSQLStatement = "INSERT %NOLOCK %NOCHECK INTO TestCoverage_Data.""Coverage_"_tMetric_""" "_
180-
"(Coverage,element_key,"""_tMetric_""") "_
181-
"SELECT target.ID,metric.element_key,SUM(metric."""_tMetric_""") "_
179+
If $System.SQL.IsReservedWord(tMetric) {
180+
// e.g., "Time" -> "_Time"
181+
Set tMetric = "_"_tMetric
182+
}
183+
Set tSQLStatement = "INSERT %NOLOCK %NOCHECK INTO TestCoverage_Data.Coverage_"_tMetric_" "_
184+
"(Coverage,element_key,"_tMetric_") "_
185+
"SELECT target.ID,metric.element_key,SUM(metric."_tMetric_") "_
182186
"FROM TestCoverage_Data.Coverage source "_
183-
"JOIN TestCoverage_Data.""Coverage_"_tMetric_""" metric "_
187+
"JOIN TestCoverage_Data.Coverage_"_tMetric_" metric "_
184188
" ON metric.Coverage = source.ID "_
185189
"JOIN TestCoverage_Data.Coverage target "_
186190
" ON target.Hash = source.Hash "_
@@ -209,7 +213,7 @@ ClassMethod AggregateCoverage(pTestIndex As %String) As %Status
209213
ExecutableMethods,
210214
CoveredMethods,
211215
RtnLine,
212-
"Time",
216+
_Time,
213217
TotalTime)
214218
select :pTestIndex,
215219
CodeUnit,
@@ -237,17 +241,17 @@ ClassMethod AggregateCoverage(pTestIndex As %String) As %Status
237241
where method.Parent = CodeUnit),0) CoveredMethods,
238242

239243
-- Other metrics
240-
RtnLine, "Time", TotalTime
244+
RtnLine, _Time, TotalTime
241245
from (
242246
select Hash CodeUnit,
243247
Hash->ExecutableLines ExecutableLines,
244248
TestCoverage.BITWISE_AND(Hash->ExecutableLines,CoveredLines) CoveredLines,
245249
(select SUM(RtnLine)
246250
from TestCoverage_Data.Coverage_RtnLine r
247251
where r.Coverage = coverage.ID) RtnLine,
248-
(select SUM("Time")
249-
from TestCoverage_Data.Coverage_Time t
250-
where t.Coverage = coverage.ID) "Time",
252+
(select SUM(_Time)
253+
from TestCoverage_Data.Coverage__Time t
254+
where t.Coverage = coverage.ID) _Time,
251255
(select SUM(TotalTime)
252256
from TestCoverage_Data.Coverage_TotalTime tt
253257
where tt.Coverage = coverage.ID) TotalTime
@@ -272,10 +276,10 @@ ClassMethod AggregateCoverage(pTestIndex As %String) As %Status
272276
insert %NOLOCK %NOCHECK into TestCoverage_Data_Aggregate.ByRun
273277
(Run, ExecutableLines ,CoveredLines,
274278
ExecutableMethods, CoveredMethods,
275-
RtnLine, "Time", TotalTime)
279+
RtnLine, _Time, TotalTime)
276280
select Run, SUM(ExecutableLines), SUM(CoveredLines),
277281
SUM(ExecutableMethods), SUM(CoveredMethods),
278-
SUM(RtnLine), SUM("Time"), SUM(TotalTime)
282+
SUM(RtnLine), SUM(_Time), SUM(TotalTime)
279283
from TestCoverage_Data_Aggregate.ByCodeUnit
280284
where Run = :pTestIndex
281285
group by Run
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
Include TestCoverage
2+
3+
Class UnitTest.TestCoverage.Unit.TestDelimitedIdentifiers Extends %UnitTest.TestCase
4+
{
5+
6+
Property InitialDelimitedIdentifiersSetting As %Boolean;
7+
8+
Property Run As TestCoverage.Data.Run;
9+
10+
Method TestWithDelimitedIdentifiers()
11+
{
12+
Do $System.SQL.SetDelimitedIdentifiers(0,.old)
13+
Set ..InitialDelimitedIdentifiersSetting = old
14+
Do $$$AssertStatusOK($System.OBJ.CompilePackage("TestCoverage","ck-d/nomulticompile"))
15+
16+
Set ..Run = ##class(TestCoverage.Data.Run).%New()
17+
Set ..Run.Detail = 1 // Force calculation of rollups
18+
For metric = $$$METRICS {
19+
Do ..Run.Metrics.Insert(metric)
20+
}
21+
Do $$$AssertStatusOK(..Run.%Save())
22+
23+
// Other things that are likely to break:
24+
// Dynamic SQL in TestCoverage.Data.Run:MapRunCoverage
25+
Set sc = $$$OK
26+
Try {
27+
Do ##class(TestCoverage.Data.Run).MapRunCoverage(..Run.%Id())
28+
} Catch e {
29+
Set sc = e.AsStatus()
30+
}
31+
Do $$$AssertStatusOK(sc,"No exceptions thrown by TestCoverage.Data.Run:MapRunCoverage.")
32+
33+
// Dynamic SQL in TestCoverage.Utils:AggregateCoverage
34+
Set sc = $$$OK
35+
Try {
36+
Do ##class(TestCoverage.Utils).AggregateCoverage(..Run.%Id())
37+
} Catch e {
38+
Set sc = e.AsStatus()
39+
}
40+
Do $$$AssertStatusOK(sc,"No exceptions thrown by TestCoverage.Utils:AggregateCoverage.")
41+
}
42+
43+
/// Clean up: Delimited Identifiers setting, run ID
44+
Method %OnClose() As %Status [ Private, ServerOnly = 1 ]
45+
{
46+
Set sc = $$$OK
47+
If (..InitialDelimitedIdentifiersSetting '= "") {
48+
Set sc = $System.SQL.SetDelimitedIdentifiers(..InitialDelimitedIdentifiersSetting,.old)
49+
If (old '= ..InitialDelimitedIdentifiersSetting) {
50+
// Recompile with original setting, just to be safe.
51+
Set sc = $$$ADDSC(sc,$System.OBJ.Compile("TestCoverage","ck-d/nomulticompile"))
52+
}
53+
}
54+
If $IsObject(..Run) {
55+
Set sc = $$$ADDSC(sc,##class(TestCoverage.Data.Run).%DeleteId(..Run.%Id()))
56+
}
57+
Quit sc
58+
}
59+
60+
}
61+
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
TestCoverage.PKG
2+
-TestCoverage.UI.PKG

0 commit comments

Comments
 (0)