| Viewing file:  test_code_segment.py (4.39 KB)      -rw-r--r-- Select action/file-type:
 
  (+) |  (+) |  (+) | Code (+) | Session (+) |  (+) | SDB (+) |  (+) |  (+) |  (+) |  (+) |  (+) | 
 
from pyflakes import messages as mfrom 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)
 
 |