51 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
import sys
 | 
						|
 | 
						|
import pytest
 | 
						|
from _pytest.compat import is_generator
 | 
						|
 | 
						|
 | 
						|
def test_is_generator():
 | 
						|
    def zap():
 | 
						|
        yield
 | 
						|
 | 
						|
    def foo():
 | 
						|
        pass
 | 
						|
 | 
						|
    assert is_generator(zap)
 | 
						|
    assert not is_generator(foo)
 | 
						|
 | 
						|
 | 
						|
@pytest.mark.skipif(sys.version_info < (3, 4), reason='asyncio available in Python 3.4+')
 | 
						|
def test_is_generator_asyncio(testdir):
 | 
						|
    testdir.makepyfile("""
 | 
						|
        from _pytest.compat import is_generator
 | 
						|
        import asyncio
 | 
						|
        @asyncio.coroutine
 | 
						|
        def baz():
 | 
						|
            yield from [1,2,3]
 | 
						|
 | 
						|
        def test_is_generator_asyncio():
 | 
						|
            assert not is_generator(baz)
 | 
						|
    """)
 | 
						|
    # avoid importing asyncio into pytest's own process, which in turn imports logging (#8)
 | 
						|
    result = testdir.runpytest_subprocess()
 | 
						|
    result.stdout.fnmatch_lines(['*1 passed*'])
 | 
						|
 | 
						|
 | 
						|
@pytest.mark.skipif(sys.version_info < (3, 5), reason='async syntax available in Python 3.5+')
 | 
						|
def test_is_generator_async_syntax(testdir):
 | 
						|
    testdir.makepyfile("""
 | 
						|
        from _pytest.compat import is_generator
 | 
						|
        def test_is_generator_py35():
 | 
						|
            async def foo():
 | 
						|
                await foo()
 | 
						|
 | 
						|
            async def bar():
 | 
						|
                pass
 | 
						|
 | 
						|
            assert not is_generator(foo)
 | 
						|
            assert not is_generator(bar)
 | 
						|
    """)
 | 
						|
    result = testdir.runpytest()
 | 
						|
    result.stdout.fnmatch_lines(['*1 passed*'])
 |