mirror of
https://github.com/github/codeql.git
synced 2026-02-20 08:53:49 +01:00
Add test for Class and SingletonClass
This commit is contained in:
18
ql/test/library-tests/ast/classes/classes.expected
Normal file
18
ql/test/library-tests/ast/classes/classes.expected
Normal file
@@ -0,0 +1,18 @@
|
||||
classes
|
||||
| classes.rb:3:1:4:3 | Foo | Class | Foo |
|
||||
| classes.rb:7:1:8:3 | Bar | Class | Bar |
|
||||
| classes.rb:11:1:12:3 | Baz | Class | Baz |
|
||||
| classes.rb:16:1:17:3 | MyClass | Class | MyClass |
|
||||
| classes.rb:20:1:31:3 | Wibble | Class | Wibble |
|
||||
classesWithScopeResolutionNames
|
||||
| classes.rb:16:1:17:3 | MyClass | classes.rb:16:7:16:23 | ...::MyClass |
|
||||
exprsInClasses
|
||||
| classes.rb:20:1:31:3 | Wibble | 0 | classes.rb:21:3:23:5 | method_a | Method |
|
||||
| classes.rb:20:1:31:3 | Wibble | 1 | classes.rb:25:3:27:5 | method_b | Method |
|
||||
| classes.rb:20:1:31:3 | Wibble | 2 | classes.rb:29:3:29:20 | call to some_method_call | Call |
|
||||
| classes.rb:20:1:31:3 | Wibble | 3 | classes.rb:30:3:30:19 | ... = ... | AssignExpr |
|
||||
methodsInClasses
|
||||
| classes.rb:20:1:31:3 | Wibble | classes.rb:21:3:23:5 | method_a |
|
||||
| classes.rb:20:1:31:3 | Wibble | classes.rb:25:3:27:5 | method_b |
|
||||
classesWithASuperclass
|
||||
| classes.rb:11:1:12:3 | Baz | classes.rb:11:13:11:32 | call to superclass_for |
|
||||
17
ql/test/library-tests/ast/classes/classes.ql
Normal file
17
ql/test/library-tests/ast/classes/classes.ql
Normal file
@@ -0,0 +1,17 @@
|
||||
import ruby
|
||||
|
||||
query predicate classes(Class c, string pClass, string name) {
|
||||
pClass = c.getAPrimaryQlClass() and name = c.getName()
|
||||
}
|
||||
|
||||
query predicate classesWithScopeResolutionNames(Class c, ScopeResolution name) {
|
||||
name = c.getNameScopeResolution()
|
||||
}
|
||||
|
||||
query predicate exprsInClasses(Class c, int i, Expr e, string eClass) {
|
||||
e = c.getExpr(i) and eClass = e.getAPrimaryQlClass()
|
||||
}
|
||||
|
||||
query predicate methodsInClasses(Class c, Method m) { m = c.getAMethod() }
|
||||
|
||||
query predicate classesWithASuperclass(Class c, Expr scExpr) { scExpr = c.getSuperclassExpr() }
|
||||
46
ql/test/library-tests/ast/classes/classes.rb
Normal file
46
ql/test/library-tests/ast/classes/classes.rb
Normal file
@@ -0,0 +1,46 @@
|
||||
|
||||
# a class with no superclass specified
|
||||
class Foo
|
||||
end
|
||||
|
||||
# a class where the superclass is a constant
|
||||
class Bar < BaseClass
|
||||
end
|
||||
|
||||
# a class where the superclass is a call expression
|
||||
class Baz < superclass_for(:baz)
|
||||
end
|
||||
|
||||
# a class where the name is a scope resolution
|
||||
module MyModule; end
|
||||
class MyModule::MyClass
|
||||
end
|
||||
|
||||
# a class with some methods and some other arbitrary expressions
|
||||
class Wibble
|
||||
def method_a
|
||||
puts 'a'
|
||||
end
|
||||
|
||||
def method_b
|
||||
puts 'b'
|
||||
end
|
||||
|
||||
some_method_call()
|
||||
$global_var = 123
|
||||
end
|
||||
|
||||
# a singleton class with some methods and some other arbitrary expressions
|
||||
x = 'hello'
|
||||
class << x
|
||||
def length
|
||||
100 * super
|
||||
end
|
||||
|
||||
def wibble
|
||||
puts 'wibble'
|
||||
end
|
||||
|
||||
another_method_call
|
||||
$global_var2 = 456
|
||||
end
|
||||
10
ql/test/library-tests/ast/classes/singleton_classes.expected
Normal file
10
ql/test/library-tests/ast/classes/singleton_classes.expected
Normal file
@@ -0,0 +1,10 @@
|
||||
singletonClasses
|
||||
| classes.rb:35:1:46:3 | class << ... | Class | classes.rb:35:10:35:10 | call to x |
|
||||
exprsInSingletonClasses
|
||||
| classes.rb:35:1:46:3 | class << ... | 0 | classes.rb:36:3:38:5 | length | Method |
|
||||
| classes.rb:35:1:46:3 | class << ... | 1 | classes.rb:40:3:42:5 | wibble | Method |
|
||||
| classes.rb:35:1:46:3 | class << ... | 2 | classes.rb:44:3:44:21 | call to another_method_call | Call |
|
||||
| classes.rb:35:1:46:3 | class << ... | 3 | classes.rb:45:3:45:20 | ... = ... | AssignExpr |
|
||||
methodsInSingletonClasses
|
||||
| classes.rb:35:1:46:3 | class << ... | classes.rb:36:3:38:5 | length |
|
||||
| classes.rb:35:1:46:3 | class << ... | classes.rb:40:3:42:5 | wibble |
|
||||
11
ql/test/library-tests/ast/classes/singleton_classes.ql
Normal file
11
ql/test/library-tests/ast/classes/singleton_classes.ql
Normal file
@@ -0,0 +1,11 @@
|
||||
import ruby
|
||||
|
||||
query predicate singletonClasses(SingletonClass sc, string pClass, Expr value) {
|
||||
pClass = sc.getAPrimaryQlClass() and value = sc.getValue()
|
||||
}
|
||||
|
||||
query predicate exprsInSingletonClasses(SingletonClass sc, int i, Expr e, string eClass) {
|
||||
e = sc.getExpr(i) and eClass = e.getAPrimaryQlClass()
|
||||
}
|
||||
|
||||
query predicate methodsInSingletonClasses(SingletonClass sc, Method m) { m = sc.getAMethod() }
|
||||
Reference in New Issue
Block a user