Skip to content

Commit 2ded677

Browse files
authored
Incremental work on spec cleanup (#1104)
* Move BINDING nodes + BINDS edges into enhacements * Move EVALUATION_STRATEGY out * Move over DISPATCH_TYPE * Move DYNAMIC_TYPE_HINT_FULL_NAME over * Store code in `$MethodReturn.code` instead of just "RET" * Finish tests for `MethodReturn`
1 parent bc39fea commit 2ded677

15 files changed

Lines changed: 121 additions & 67 deletions

File tree

console/src/test/scala/io/shiftleft/console/QueryDatabaseTests.scala

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@ object TestBundle extends QueryBundle {
1313
title = "a-title",
1414
description = s"a-description $n",
1515
score = 2.0,
16-
traversal = { cpg => cpg.method }
16+
traversal = { cpg =>
17+
cpg.method
18+
}
1719
)
1820
}
1921

@@ -42,11 +44,12 @@ class QueryDatabaseTests extends AnyWordSpec with should.Matchers {
4244
"an-author",
4345
"a-title",
4446
"a-description",
45-
2.0,
46-
{ cpg: Cpg => cpg.method }
47+
2.0, { cpg: Cpg =>
48+
cpg.method
49+
}
4750
)
4851
query.title shouldBe "a-title"
49-
query.traversalAsString shouldBe "cpg: Cpg => cpg.method"
52+
query.traversalAsString.endsWith("cpg.method") shouldBe true
5053
}
5154
}
5255
}

fuzzyc2cpg-tests/src/test/scala/io/shiftleft/fuzzyc2cpg/querying/CDataFlowTests.scala

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -603,7 +603,7 @@ class CDataFlowTests17 extends DataFlowCodeToCpgSuite {
603603
sink.reachableByFlows(source).l.map(flowToResultPairs).toSet shouldBe Set(
604604
List(("source()", Some(4)),
605605
("return source();", Some(4)),
606-
("RET", Some(3)),
606+
("int", Some(3)),
607607
("bar()", Some(8)),
608608
("y = bar()", Some(8)),
609609
("sink(y)", Some(9)))
@@ -616,7 +616,7 @@ class CDataFlowTests17 extends DataFlowCodeToCpgSuite {
616616
sink.reachableByFlows(source).l.map(flowToResultPairs).toSet shouldBe Set(
617617
List(("source()", Some(4)),
618618
("return source();", Some(4)),
619-
("RET", Some(3)),
619+
("int", Some(3)),
620620
("bar()", Some(8)),
621621
("y = bar()", Some(8)),
622622
("sink(y)", Some(9)),
@@ -657,7 +657,7 @@ class CDataFlowTests18 extends DataFlowCodeToCpgSuite {
657657
val flows = sink.reachableByFlows(source).l
658658
flows.size shouldBe 1
659659
flows.map(flowToResultPairs).toSet shouldBe Set(
660-
List(("RET", Some(7)),
660+
List(("double", Some(7)),
661661
("source(2)", Some(16)),
662662
("k = source(2)", Some(16)),
663663
("point.x = k", Some(18)),
@@ -698,7 +698,7 @@ class CDataFlowTests19 extends DataFlowCodeToCpgSuite {
698698

699699
flows.size shouldBe 1
700700
flows.map(flowToResultPairs).toSet shouldBe Set(
701-
List(("RET", Some(7)),
701+
List(("struct Point", Some(7)),
702702
("source(2)", Some(17)),
703703
("point = source(2)", Some(17)),
704704
("sink(point.x)", Some(18)),
@@ -879,8 +879,8 @@ class CDataFlowTests27 extends DataFlowCodeToCpgSuite {
879879
val flows = sink.reachableByFlows(source).l
880880

881881
flows.map(flowToResultPairs).toSet shouldBe Set(
882-
List(("free(x)", Some(4)), ("RET", Some(2))),
883-
List(("free(y)", Some(3)), ("RET", Some(2)))
882+
List(("free(x)", Some(4)), ("int", Some(2))),
883+
List(("free(y)", Some(3)), ("int", Some(2)))
884884
)
885885
}
886886
}

fuzzyc2cpg-tests/src/test/scala/io/shiftleft/fuzzyc2cpg/querying/NewCDataFlowTests.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ class NewCDataFlowTests3 extends DataFlowCodeToCpgSuite {
5858
val flows = sink.reachableByFlows(source).l
5959
flows.size shouldBe 1
6060
flows.map(flowToResultPairs).toSet shouldBe Set(
61-
List(("woo(x)", Some(3)), ("RET", Some(2)))
61+
List(("woo(x)", Some(3)), ("void", Some(2)))
6262
)
6363
}
6464
}

fuzzyc2cpg-tests/src/test/scala/io/shiftleft/fuzzyc2cpg/querying/FileNodeTests.scala renamed to fuzzyc2cpg-tests/src/test/scala/io/shiftleft/fuzzyc2cpg/standard/FileTests.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
package io.shiftleft.fuzzyc2cpg.querying
1+
package io.shiftleft.fuzzyc2cpg.standard
22

33
import io.shiftleft.fuzzyc2cpg.testfixtures.FuzzyCCodeToCpgSuite
44
import io.shiftleft.semanticcpg.language._
55
import io.shiftleft.semanticcpg.language.types.structure.File
66

7-
class FileNodeTests extends FuzzyCCodeToCpgSuite {
7+
class FileTests extends FuzzyCCodeToCpgSuite {
88

99
override val code: String =
1010
"""

fuzzyc2cpg-tests/src/test/scala/io/shiftleft/fuzzyc2cpg/querying/MetaDataNodeTests.scala renamed to fuzzyc2cpg-tests/src/test/scala/io/shiftleft/fuzzyc2cpg/standard/MetaDataTests.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
package io.shiftleft.fuzzyc2cpg.querying
1+
package io.shiftleft.fuzzyc2cpg.standard
22

33
import io.shiftleft.fuzzyc2cpg.testfixtures.FuzzyCCodeToCpgSuite
44
import io.shiftleft.semanticcpg.language._
55

6-
class MetaDataNodeTests extends FuzzyCCodeToCpgSuite {
6+
class MetaDataTests extends FuzzyCCodeToCpgSuite {
77

88
override val code: String =
99
"""
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package io.shiftleft.fuzzyc2cpg.standard
2+
3+
import io.shiftleft.semanticcpg.language._
4+
import io.shiftleft.fuzzyc2cpg.testfixtures.FuzzyCCodeToCpgSuite
5+
6+
class MethodReturnTests extends FuzzyCCodeToCpgSuite {
7+
8+
override val code =
9+
"""
10+
| int *foo() { return x; }
11+
|""".stripMargin
12+
13+
"should have METHOD_RETURN node with correct fields" in {
14+
cpg.methodReturn.l match {
15+
case List(x) =>
16+
x.code shouldBe "int *"
17+
x.typeFullName shouldBe "int *"
18+
x.lineNumber shouldBe Some(2)
19+
x.columnNumber shouldBe Some(1)
20+
// we expect the METHOD_RETURN node to be the right-most
21+
// child so that when traversing the AST from left to
22+
// right in CFG construction, we visit it last.
23+
x.order shouldBe 2
24+
case _ => fail()
25+
}
26+
}
27+
28+
"should allow traversing to method" in {
29+
cpg.methodReturn.method.name.l shouldBe List("foo")
30+
}
31+
32+
}

fuzzyc2cpg-tests/src/test/scala/io/shiftleft/fuzzyc2cpg/querying/CMethodTests.scala renamed to fuzzyc2cpg-tests/src/test/scala/io/shiftleft/fuzzyc2cpg/standard/MethodTests.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
package io.shiftleft.fuzzyc2cpg.querying
1+
package io.shiftleft.fuzzyc2cpg.standard
22

33
import io.shiftleft.fuzzyc2cpg.testfixtures.FuzzyCCodeToCpgSuite
44
import io.shiftleft.semanticcpg.language._
55

66
/**
77
* Language primitives for navigating method stubs
88
* */
9-
class CMethodTests extends FuzzyCCodeToCpgSuite {
9+
class MethodTests extends FuzzyCCodeToCpgSuite {
1010

1111
override val code =
1212
"""

fuzzyc2cpg-tests/src/test/scala/io/shiftleft/fuzzyc2cpg/querying/NamespaceBlockTests.scala renamed to fuzzyc2cpg-tests/src/test/scala/io/shiftleft/fuzzyc2cpg/standard/NamespaceBlockTests.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.shiftleft.fuzzyc2cpg.querying
1+
package io.shiftleft.fuzzyc2cpg.standard
22

33
import io.shiftleft.fuzzyc2cpg.testfixtures.FuzzyCCodeToCpgSuite
44
import io.shiftleft.semanticcpg.language._
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package io.shiftleft.fuzzyc2cpg.standard
2+
3+
class ParameterTests {}

fuzzyc2cpg-tests/src/test/scala/io/shiftleft/fuzzyc2cpg/querying/TypeDeclTests.scala renamed to fuzzyc2cpg-tests/src/test/scala/io/shiftleft/fuzzyc2cpg/standard/TypeDeclTests.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.shiftleft.fuzzyc2cpg.querying
1+
package io.shiftleft.fuzzyc2cpg.standard
22

33
import io.shiftleft.fuzzyc2cpg.testfixtures.FuzzyCCodeToCpgSuite
44
import io.shiftleft.semanticcpg.language._

0 commit comments

Comments
 (0)