Skip to content

Commit

Permalink
tests: Add termination tests for Dummy provider
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
apyrgio committed Apr 24, 2024
1 parent abc6684 commit d4974b1
Showing 1 changed file with 53 additions and 0 deletions.
53 changes: 53 additions & 0 deletions tests/isolation_provider/test_dummy.py
Original file line number Diff line number Diff line change
@@ -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)

0 comments on commit d4974b1

Please sign in to comment.