redash/tests/query_runner/test_script.py
2018-06-29 00:03:17 +09:00

37 lines
1.5 KiB
Python

import os
import subprocess
from _pytest.monkeypatch import MonkeyPatch
from redash.query_runner.script import query_to_script_path, run_script
from tests import BaseTestCase
class TestQueryToScript(BaseTestCase):
monkeypatch = MonkeyPatch()
def test_unspecified(self):
self.assertEqual("/foo/bar/baz.sh", query_to_script_path("*", "/foo/bar/baz.sh"))
def test_specified(self):
self.assertRaises(IOError, lambda: query_to_script_path("/foo/bar", "baz.sh"))
self.monkeypatch.setattr(os.path, "exists", lambda x: True)
self.assertEqual(["/foo/bar/baz.sh"], query_to_script_path("/foo/bar", "baz.sh"))
class TestRunScript(BaseTestCase):
monkeypatch = MonkeyPatch()
def test_success(self):
self.monkeypatch.setattr(subprocess, "check_output", lambda script, shell: "test")
self.assertEqual(("test", None), run_script("/foo/bar/baz.sh", True))
def test_failure(self):
self.monkeypatch.setattr(subprocess, "check_output", lambda script, shell: None)
self.assertEqual((None, "Error reading output"), run_script("/foo/bar/baz.sh", True))
self.monkeypatch.setattr(subprocess, "check_output", lambda script, shell: "")
self.assertEqual((None, "Error reading output"), run_script("/foo/bar/baz.sh", True))
self.monkeypatch.setattr(subprocess, "check_output", lambda script, shell: " ")
self.assertEqual((None, "Error reading output"), run_script("/foo/bar/baz.sh", True))