mirror of
https://github.com/freedomofpress/dangerzone.git
synced 2025-04-28 18:02:38 +02:00
tests: Add termination tests for Dummy provider
Add termination tests for the Dummy provider, so that we can have cross-platform coverage in our Windows/macOS CI runners, which can't use the Container isolation providers.
This commit is contained in:
parent
abc66840a8
commit
d4974b1229
1 changed files with 53 additions and 0 deletions
53
tests/isolation_provider/test_dummy.py
Normal file
53
tests/isolation_provider/test_dummy.py
Normal file
|
@ -0,0 +1,53 @@
|
|||
import os
|
||||
import subprocess
|
||||
|
||||
import pytest
|
||||
from pytest_mock import MockerFixture
|
||||
|
||||
from dangerzone.conversion import errors
|
||||
from dangerzone.document import Document
|
||||
from dangerzone.isolation_provider.base import IsolationProvider
|
||||
from dangerzone.isolation_provider.dummy import Dummy
|
||||
|
||||
from .base import IsolationProviderTermination, IsolationProviderTest
|
||||
|
||||
|
||||
class DummyWait(Dummy):
|
||||
"""Dummy isolation provider that spawns a blocking process."""
|
||||
|
||||
def start_doc_to_pixels_proc(self, document: Document) -> subprocess.Popen:
|
||||
return subprocess.Popen(
|
||||
["python3"],
|
||||
stdin=subprocess.PIPE,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE,
|
||||
)
|
||||
|
||||
def terminate_doc_to_pixels_proc(
|
||||
self, document: Document, p: subprocess.Popen
|
||||
) -> None:
|
||||
p.terminate()
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def provider_wait() -> DummyWait:
|
||||
return DummyWait()
|
||||
|
||||
|
||||
@pytest.mark.skipif(
|
||||
os.environ.get("DUMMY_CONVERSION", False) == False,
|
||||
reason="can only run for dummy conversions",
|
||||
)
|
||||
class TestDummyTermination(IsolationProviderTermination):
|
||||
|
||||
def test_failed(
|
||||
self,
|
||||
provider_wait: IsolationProvider,
|
||||
mocker: MockerFixture,
|
||||
) -> None:
|
||||
mocker.patch.object(
|
||||
provider_wait,
|
||||
"get_proc_exception",
|
||||
return_value=errors.DocFormatUnsupported(),
|
||||
)
|
||||
super().test_failed(provider_wait, mocker)
|
Loading…
Reference in a new issue