Skip to content
Snippets Groups Projects
test_execution.py 1.47 KiB
Newer Older
Stefano Borini's avatar
Stefano Borini committed
import unittest
import subprocess
import os
from contextlib import contextmanager

Stefano Borini's avatar
Stefano Borini committed
from force_bdss.tests import fixtures

Stefano Borini's avatar
Stefano Borini committed

@contextmanager
def cd(dir):
    cwd = os.getcwd()
Stefano Borini's avatar
Stefano Borini committed
    os.chdir(dir)
    try:
        yield
    finally:
        os.chdir(cwd)


def fixture_dir():
    return os.path.join(
        os.path.dirname(os.path.abspath(__file__)),
        "fixtures")


class TestExecution(unittest.TestCase):
    def test_plain_invocation_mco(self):
Stefano Borini's avatar
Stefano Borini committed
        with cd(fixtures.dirpath()):
Stefano Borini's avatar
Stefano Borini committed
            out = subprocess.check_call(["force_bdss", "test_csv.json"])
            self.assertEqual(out, 0)

    def test_plain_invocation_evaluate(self):
        with cd(fixtures.dirpath()):
Stefano Borini's avatar
Stefano Borini committed
            proc = subprocess.Popen([
                "force_bdss", "--evaluate", "test_csv.json"],
                stdin=subprocess.PIPE,
                stdout=subprocess.PIPE)
            proc.communicate(b"1")
            retcode = proc.wait(5)
            self.assertEqual(retcode, 0)
    def test_unsupported_file_input(self):
Stefano Borini's avatar
Stefano Borini committed
        with cd(fixtures.dirpath()):
            with self.assertRaises(subprocess.CalledProcessError):
                subprocess.check_call(["force_bdss", "test_csv_v2.json"])

    def test_corrupted_file_input(self):
Stefano Borini's avatar
Stefano Borini committed
        with cd(fixtures.dirpath()):
            with self.assertRaises(subprocess.CalledProcessError):
                subprocess.check_call(["force_bdss",
                                       "test_csv_corrupted.json"])

Stefano Borini's avatar
Stefano Borini committed

if __name__ == '__main__':
    unittest.main()