29 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			29 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Python
		
	
	
	
# content of conftest.py
 | 
						|
import json
 | 
						|
 | 
						|
import pytest
 | 
						|
 | 
						|
 | 
						|
class ManifestDirectory(pytest.Directory):
 | 
						|
    def collect(self):
 | 
						|
        # The standard pytest behavior is to loop over all `test_*.py` files and
 | 
						|
        # call `pytest_collect_file` on each file. This collector instead reads
 | 
						|
        # the `manifest.json` file and only calls `pytest_collect_file` for the
 | 
						|
        # files defined there.
 | 
						|
        manifest_path = self.path / "manifest.json"
 | 
						|
        manifest = json.loads(manifest_path.read_text(encoding="utf-8"))
 | 
						|
        ihook = self.ihook
 | 
						|
        for file in manifest["files"]:
 | 
						|
            yield from ihook.pytest_collect_file(
 | 
						|
                file_path=self.path / file, parent=self
 | 
						|
            )
 | 
						|
 | 
						|
 | 
						|
@pytest.hookimpl
 | 
						|
def pytest_collect_directory(path, parent):
 | 
						|
    # Use our custom collector for directories containing a `mainfest.json` file.
 | 
						|
    if path.joinpath("manifest.json").is_file():
 | 
						|
        return ManifestDirectory.from_parent(parent=parent, path=path)
 | 
						|
    # Otherwise fallback to the standard behavior.
 | 
						|
    return None
 |