Ruby: add test for API::EntryPoint

This commit is contained in:
Asger Feldthaus
2022-03-01 10:28:45 +01:00
parent bf83400bd2
commit 05ea33033b
2 changed files with 23 additions and 0 deletions

View File

@@ -62,3 +62,9 @@ M1::C1.new.m #$ use=getMember("M1").getMember("C1").getMethod("new").getReturn()
M2::C3.new.m #$ use=getMember("M2").getMember("C3").getMethod("new").getReturn().getMethod("m").getReturn()
Foo.foo(a,b:c) #$ use=getMember("Foo").getMethod("foo").getReturn() def=getMember("Foo").getMethod("foo").getParameter(0) def=getMember("Foo").getMethod("foo").getKeywordParameter("b")
def userDefinedFunction(x, y)
x.noApiGraph(y)
x.customEntryPointCall(y) #$ call=CustomEntryPointCall use=CustomEntryPointCall.getReturn() rhs=CustomEntryPointCall.getParameter(0)
x.customEntryPointUse(y) #$ use=CustomEntryPointUse
end

View File

@@ -3,6 +3,20 @@ import codeql.ruby.DataFlow
import TestUtilities.InlineExpectationsTest
import codeql.ruby.ApiGraphs
class CustomEntryPointCall extends API::EntryPoint {
CustomEntryPointCall() { this = "CustomEntryPointCall" }
override DataFlow::CallNode getACall() { result.getMethodName() = "customEntryPointCall" }
}
class CustomEntryPointUse extends API::EntryPoint {
CustomEntryPointUse() { this = "CustomEntryPointUse" }
override DataFlow::LocalSourceNode getAUse() {
result.(DataFlow::CallNode).getMethodName() = "customEntryPointUse"
}
}
class ApiUseTest extends InlineExpectationsTest {
ApiUseTest() { this = "ApiUseTest" }
@@ -16,6 +30,9 @@ class ApiUseTest extends InlineExpectationsTest {
or
tag = "def" and
n = a.getARhs()
or
tag = "call" and
n = a.(API::MethodAccessNode).getCallNode()
)
}