Merge pull request #4346 from RasmusWL/python-add-implicit-init-test

Python: add test for implicit __init__.py files
This commit is contained in:
Taus 2020-10-02 16:13:25 +02:00 коммит произвёл GitHub
Родитель 55d25d90fa 2acfd4cdb1
Коммит 2e4a61428d
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
14 изменённых файлов: 55 добавлений и 1 удалений

Просмотреть файл

@ -0,0 +1,6 @@
debug_missingAnnotationForCallable
debug_nonUniqueAnnotationForCallable
debug_missingAnnotationForCall
expectedCallEdgeNotFound
| example.py:19:1:19:7 | afunc() | foo/bar/a.py:2:1:2:12 | Function afunc |
unexpectedCallEdgeFound

Просмотреть файл

@ -0,0 +1 @@
../CallGraph/PointsTo.ql

Просмотреть файл

@ -0,0 +1,6 @@
debug_missingAnnotationForCallable
debug_nonUniqueAnnotationForCallable
debug_missingAnnotationForCall
pointsTo_found_typeTracker_notFound
| example.py:22:1:22:16 | explicit_afunc() | foo_explicit/bar/a.py:2:1:2:21 | Function explicit_afunc |
pointsTo_notFound_typeTracker_found

Просмотреть файл

@ -0,0 +1 @@
../CallGraph/Relative.ql

Просмотреть файл

@ -0,0 +1,7 @@
debug_missingAnnotationForCallable
debug_nonUniqueAnnotationForCallable
debug_missingAnnotationForCall
expectedCallEdgeNotFound
| example.py:19:1:19:7 | afunc() | foo/bar/a.py:2:1:2:12 | Function afunc |
| example.py:22:1:22:16 | explicit_afunc() | foo_explicit/bar/a.py:2:1:2:21 | Function explicit_afunc |
unexpectedCallEdgeFound

Просмотреть файл

@ -0,0 +1 @@
../CallGraph/TypeTracker.ql

Просмотреть файл

@ -0,0 +1,22 @@
"""
Test that we can resolve callables correctly without using explicit __init__.py files
This is not included in the standard `CallGraph/code` folder, since we're testing our
understanding import work properly, so it's better to have a clean test setup that is
obviously correct (the other one isn't in regards to imports).
Technically this is part of PEP 420 -- Implicit Namespace Packages, but does use the
*real* namespace package feature of allowing source code for a single package to reside
in multiple places.
Since PEP 420 was accepted in Python 3, this test is Python 3 only.
"""
from foo.bar.a import afunc
from foo_explicit.bar.a import explicit_afunc
# calls:afunc
afunc()
# calls:explicit_afunc
explicit_afunc()

Просмотреть файл

@ -0,0 +1,4 @@
# name:afunc
def afunc():
print("afunc called")
return 1

Просмотреть файл

Просмотреть файл

@ -0,0 +1,4 @@
# name:explicit_afunc
def explicit_afunc():
print("explicit_afunc called")
return 1

Просмотреть файл

@ -0,0 +1 @@
semmle-extractor-options: --max-import-depth=1 --lang=3

Просмотреть файл

@ -1 +0,0 @@
semmle-extractor-options:

Просмотреть файл

@ -1 +1,3 @@
# This import will only import code/__init__.py -- BUT we still analyse the other python
# files inside code/ which is what we want.
from code import *