Skip to content

Commit dc5f876

Browse files
committed
java inline expectations prototype with tests
1 parent 3ae4cb2 commit dc5f876

File tree

44 files changed

+577
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+577
-0
lines changed
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
import java
2+
3+
externalpredicatequeryResults(stringrelation,introw,intcolumn,stringdata);
4+
5+
stringactualLines(){
6+
exists(inti|
7+
queryResults("#select",i, _, _)and
8+
result=
9+
" | "+
10+
concat(intj,stringcell|queryResults("#select",i,j,cell)|cell," | "orderbyj)+
11+
" | "
12+
)
13+
}
14+
15+
predicateparsedExpectedResults(stringfilename,intline,stringcontent){
16+
exists(Javadocdoc|
17+
isEolComment(doc)and
18+
filename=doc.getLocation().getFile().getBaseName()and
19+
line=doc.getLocation().getStartLine()and
20+
line=doc.getLocation().getEndLine()and
21+
content=doc.getChild(0).getText().trim()
22+
)
23+
}
24+
25+
predicateexpectError(stringfilename,intline){
26+
exists(stringcontent|
27+
parsedExpectedResults(filename,line,content)andcontent.indexOf("NOT OK")=0
28+
)
29+
}
30+
31+
predicateexpectPass(stringfilename,intline){
32+
exists(stringcontent|
33+
parsedExpectedResults(filename,line,content)andcontent.indexOf("OK")=0
34+
)
35+
}
36+
37+
predicateparsedActualResults(stringfilename,intline,intcolStart,intcolEnd,stringcontent){
38+
exists(strings,stringposString,stringlineString|
39+
s=actualLines()and
40+
posString=s.substring(s.indexOf("|",0,0)+1,s.indexOf("|",1,0)).trim()and
41+
filename=posString.substring(0,posString.indexOf(":",0,0))and
42+
lineString=posString.substring(posString.indexOf(":",0,0)+1,posString.indexOf(":",1,0))and
43+
lineString=posString.substring(posString.indexOf(":",2,0)+1,posString.indexOf(":",3,0))and
44+
colStart=
45+
posString.substring(posString.indexOf(":",1,0)+1,posString.indexOf(":",2,0)).toInt()and
46+
colEnd=posString.substring(posString.indexOf(":",3,0)+1,posString.length()).toInt()and
47+
line=lineString.toInt()and
48+
content=s.substring(s.indexOf("|",2,0)+1,s.indexOf("|",3,0))
49+
)
50+
}
51+
52+
predicateactualExpectedDiff(stringtype,stringposition,stringerror){
53+
exists(stringfilename,intline,intcolStart,intcolEnd|
54+
parsedActualResults(filename,line,colStart,colEnd,error)and
55+
expectPass(filename,line)and
56+
type="unexpected alert"and
57+
position=filename+":"+line+":"+colStart+":"+line+":"+colEnd
58+
)
59+
or
60+
exists(stringfilename,intline|
61+
expectError(filename,line)and
62+
notparsedActualResults(filename,line, _, _, _)and
63+
type="expected alert"and
64+
position=filename+":"+lineand
65+
parsedExpectedResults(filename,line,error)
66+
)
67+
or
68+
exists(stringfilename,intline,stringcontent|
69+
parsedExpectedResults(filename,line,content)and
70+
notexpectPass(filename,line)and
71+
notexpectError(filename,line)and
72+
type="invalid inline expectation"and
73+
position=filename+":"+lineand
74+
error=content
75+
)
76+
}
77+
78+
fromintline,stringposition,intcolumn,stringcontent
79+
where
80+
position=rank[line](stringp|actualExpectedDiff(_,p, _)|p)and
81+
(
82+
column=0andcontent=position
83+
or
84+
column=1andactualExpectedDiff(content,position, _)
85+
or
86+
column=2andactualExpectedDiff(_,position,content)
87+
)
88+
select"#select",line,column,content
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
querypredicateresultRelations(stringname){name="#select"}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
querypredicatelearnEdits(stringname){none()}
2+
3+
select"#select",1,1,"foo"
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
querypredicateextraQuery(stringname){none()}
2+
3+
select"#select",1,1,"foo"
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
querypredicateresultRelations(stringname,intarity){name="#select"andarity=5}
2+
3+
select"#select",1,1,"foo"
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
select"#select","1",1,"foo"
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
select"#select",1,1,["foo","bar"]
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
frominti,intj
2+
where
3+
iin[1,2]and
4+
jin[1,2]and
5+
not(i=2andj=2)
6+
select"#select",i,j,"foo"

‎java/ql/test/query-tests/Postprocessing/failing/OverlyLargeRangeQuery.expected‎

Whitespace-only changes.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
query: Security/CWE/CWE-020/OverlyLargeRange.ql
2+
postprocess: TestUtilities/JavaInlineExpectations.ql

0 commit comments

Comments
(0)