| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- from pyflakes import messages as m
- from pyflakes.checker import (FunctionScope, ClassScope, ModuleScope,
- Argument, FunctionDefinition, Assignment)
- from pyflakes.test.harness import TestCase
- class TestCodeSegments(TestCase):
- """
- Tests for segments of a module
- """
- def test_function_segment(self):
- self.flakes('''
- def foo():
- def bar():
- pass
- ''', is_segment=True)
- self.flakes('''
- def foo():
- def bar():
- x = 0
- ''', m.UnusedVariable, is_segment=True)
- def test_class_segment(self):
- self.flakes('''
- class Foo:
- class Bar:
- pass
- ''', is_segment=True)
- self.flakes('''
- class Foo:
- def bar():
- x = 0
- ''', m.UnusedVariable, is_segment=True)
- def test_scope_class(self):
- checker = self.flakes('''
- class Foo:
- x = 0
- def bar(a, b=1, *d, **e):
- pass
- ''', is_segment=True)
- scopes = checker.deadScopes
- module_scopes = [
- scope for scope in scopes if scope.__class__ is ModuleScope]
- class_scopes = [
- scope for scope in scopes if scope.__class__ is ClassScope]
- function_scopes = [
- scope for scope in scopes if scope.__class__ is FunctionScope]
- # Ensure module scope is not present because we are analysing
- # the inner contents of Foo
- self.assertEqual(len(module_scopes), 0)
- self.assertEqual(len(class_scopes), 1)
- self.assertEqual(len(function_scopes), 1)
- class_scope = class_scopes[0]
- function_scope = function_scopes[0]
- self.assertIsInstance(class_scope, ClassScope)
- self.assertIsInstance(function_scope, FunctionScope)
- self.assertIn('x', class_scope)
- self.assertIn('bar', class_scope)
- self.assertIn('a', function_scope)
- self.assertIn('b', function_scope)
- self.assertIn('d', function_scope)
- self.assertIn('e', function_scope)
- self.assertIsInstance(class_scope['bar'], FunctionDefinition)
- self.assertIsInstance(class_scope['x'], Assignment)
- self.assertIsInstance(function_scope['a'], Argument)
- self.assertIsInstance(function_scope['b'], Argument)
- self.assertIsInstance(function_scope['d'], Argument)
- self.assertIsInstance(function_scope['e'], Argument)
- def test_scope_function(self):
- checker = self.flakes('''
- def foo(a, b=1, *d, **e):
- def bar(f, g=1, *h, **i):
- pass
- ''', is_segment=True)
- scopes = checker.deadScopes
- module_scopes = [
- scope for scope in scopes if scope.__class__ is ModuleScope]
- function_scopes = [
- scope for scope in scopes if scope.__class__ is FunctionScope]
- # Ensure module scope is not present because we are analysing
- # the inner contents of foo
- self.assertEqual(len(module_scopes), 0)
- self.assertEqual(len(function_scopes), 2)
- function_scope_foo = function_scopes[1]
- function_scope_bar = function_scopes[0]
- self.assertIsInstance(function_scope_foo, FunctionScope)
- self.assertIsInstance(function_scope_bar, FunctionScope)
- self.assertIn('a', function_scope_foo)
- self.assertIn('b', function_scope_foo)
- self.assertIn('d', function_scope_foo)
- self.assertIn('e', function_scope_foo)
- self.assertIn('bar', function_scope_foo)
- self.assertIn('f', function_scope_bar)
- self.assertIn('g', function_scope_bar)
- self.assertIn('h', function_scope_bar)
- self.assertIn('i', function_scope_bar)
- self.assertIsInstance(function_scope_foo['bar'], FunctionDefinition)
- self.assertIsInstance(function_scope_foo['a'], Argument)
- self.assertIsInstance(function_scope_foo['b'], Argument)
- self.assertIsInstance(function_scope_foo['d'], Argument)
- self.assertIsInstance(function_scope_foo['e'], Argument)
- self.assertIsInstance(function_scope_bar['f'], Argument)
- self.assertIsInstance(function_scope_bar['g'], Argument)
- self.assertIsInstance(function_scope_bar['h'], Argument)
- self.assertIsInstance(function_scope_bar['i'], Argument)
- def test_scope_async_function(self):
- self.flakes('async def foo(): pass', is_segment=True)
|