Skip to content

Commit

Permalink
Merge pull request #2407 from efiop/master
Browse files Browse the repository at this point in the history
test: run: refactor signal handler tests
  • Loading branch information
efiop authored Aug 19, 2019
2 parents 239739d + 89d3cca commit f0c12ea
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 63 deletions.
63 changes: 0 additions & 63 deletions tests/func/test_run.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,6 @@
import mock
import shutil
import filecmp
import subprocess
import signal
import threading
import pytest

from dvc.main import main
Expand Down Expand Up @@ -272,66 +269,6 @@ def test_not_found(self):
)


@pytest.mark.skipif(
not isinstance(threading.current_thread(), threading._MainThread),
reason="Not running in the main thread.",
)
@mock.patch.object(subprocess.Popen, "wait", new=KeyboardInterrupt)
def test_keyboard_interrupt(repo_dir, dvc_repo):
assert (
main(
[
"run",
"-d",
repo_dir.FOO,
"-d",
repo_dir.CODE,
"-o",
"out",
"-f",
"out.dvc",
"python",
repo_dir.CODE,
repo_dir.FOO,
"out",
]
)
== 1
)


@pytest.mark.skipif(
not isinstance(threading.current_thread(), threading._MainThread),
reason="Not running in the main thread.",
)
def test_keyboard_interrupt_after_second_signal_call(
mocker, repo_dir, dvc_repo
):
mocker.patch.object(
signal, "signal", side_effect=[None, KeyboardInterrupt]
)
assert (
main(
[
"run",
"-d",
repo_dir.FOO,
"-d",
repo_dir.CODE,
"-o",
"out",
"-f",
"out.dvc",
"python",
repo_dir.CODE,
repo_dir.FOO,
"out",
]
)
== 252
)


class TestRunRemoveOuts(TestDvc):
def test(self):
with open(self.CODE, "w+") as fobj:
Expand Down
25 changes: 25 additions & 0 deletions tests/unit/test_stage.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
from dvc.stage import Stage, StageUpdateError
from dvc.dependency.repo import DependencyREPO

import signal
import threading
import subprocess

import mock
import pytest
from unittest import TestCase
Expand Down Expand Up @@ -82,3 +86,24 @@ def test_stage_update(mocker):
is_repo_import.return_value = False
with pytest.raises(StageUpdateError):
stage.update()


@pytest.mark.skipif(
not isinstance(threading.current_thread(), threading._MainThread),
reason="Not running in the main thread.",
)
def test_stage_run_ignore_sigint(mocker):
stage = Stage(None, "path")

proc = mocker.Mock()
communicate = mocker.Mock()
proc.configure_mock(returncode=0, communicate=communicate)
popen = mocker.patch.object(subprocess, "Popen", return_value=proc)
signal_mock = mocker.patch("signal.signal")

stage._run()

assert popen.called_once()
assert communicate.called_once_with()
signal_mock.assert_any_call(signal.SIGINT, signal.SIG_IGN)
assert signal.getsignal(signal.SIGINT) == signal.default_int_handler

0 comments on commit f0c12ea

Please sign in to comment.