38 lines
		
	
	
		
			930 B
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			930 B
		
	
	
	
		
			Python
		
	
	
	
import subprocess
 | 
						|
import sys
 | 
						|
 | 
						|
import py
 | 
						|
 | 
						|
import _pytest
 | 
						|
import pytest
 | 
						|
 | 
						|
MODSET = [
 | 
						|
    x
 | 
						|
    for x in py.path.local(_pytest.__file__).dirpath().visit("*.py")
 | 
						|
    if x.purebasename != "__init__"
 | 
						|
]
 | 
						|
 | 
						|
 | 
						|
@pytest.mark.parametrize("modfile", MODSET, ids=lambda x: x.purebasename)
 | 
						|
def test_fileimport(modfile):
 | 
						|
    # this test ensures all internal packages can import
 | 
						|
    # without needing the pytest namespace being set
 | 
						|
    # this is critical for the initialization of xdist
 | 
						|
 | 
						|
    p = subprocess.Popen(
 | 
						|
        [
 | 
						|
            sys.executable,
 | 
						|
            "-c",
 | 
						|
            "import sys, py; py.path.local(sys.argv[1]).pyimport()",
 | 
						|
            modfile.strpath,
 | 
						|
        ],
 | 
						|
        stdout=subprocess.PIPE,
 | 
						|
        stderr=subprocess.PIPE,
 | 
						|
    )
 | 
						|
    (out, err) = p.communicate()
 | 
						|
    if p.returncode != 0:
 | 
						|
        pytest.fail(
 | 
						|
            "importing %s failed (exitcode %d): out=%r, err=%r"
 | 
						|
            % (modfile, p.returncode, out, err)
 | 
						|
        )
 |