Example #1
0
 def setUp(self):
     self.bevel = Bevel("/foo")
Example #2
0
 def setUp(self):
     self.bevel = Bevel(self.fixture_dir)
     super(BevelRealTestCases, self).setUp()
Example #3
0
class BevelStubTestCases(unittest.TestCase):
    def setUp(self):
        self.bevel = Bevel("/foo")

    def test_args_to_path(self):
        self.assertEquals(self.bevel._args_to_path([]), "/foo")
        self.assertEquals(self.bevel._args_to_path(["bar"]), "/foo/bar")
        self.assertEquals(self.bevel._args_to_path(["bar", "baz"]), "/foo/bar/baz")

    @patch("os.path.isdir")
    @patch("os.path.isfile")
    def test_get_bin_dir(self, isdir, isfile):
        isdir.return_value = True
        isfile.return_value = True
        self.assertEquals(self.bevel._get_bin("/foo/bar"), "/foo/bar/_driver")

    @patch("os.path.isdir")
    @patch("os.path.isfile")
    def test_get_bin_dir(self, isfile, isdir):
        isdir.return_value = True
        isfile.return_value = False
        self.assertEquals(self.bevel._get_bin("/foo/bar"), None)

    @patch("os.path.isfile")
    def test_get_bin(self, isfile):
        isfile.return_value = True
        self.assertEquals(self.bevel._get_bin("/foo/bar"), "/foo/bar")

    def test_get_bin_missing(self):
        self.assertEquals(self.bevel._get_bin("/foo/bar"), None)

    def test_command_is_valid(self):
        for cmd in ["foo", "48", "foo-bar", "foo-bar-baz"]:
            self.assertTrue(self.bevel._is_valid_name(cmd))
        for cmd in ["_foo", "-", "foo-", "--bar", "foo--bar", "foo--", "foo-bar--baz"]:
            self.assertFalse(self.bevel._is_valid_name(cmd))

    def test_args_are_valid(self):
        self.assertFalse(self.bevel._args_are_valid(["-lskdjf"]))
        self.assertFalse(self.bevel._args_are_valid(["foo bar"]))
        self.assertTrue(self.bevel._args_are_valid([]))
        self.assertTrue(self.bevel._args_are_valid(["foo", "bar"]))

    def test_completion(self):
        self.bevel._subcommands = Mock(return_value=["foo", "bar", "baz"])
        self.assertEquals(self.bevel._complete(["f"]), ["foo"])
        self.assertEquals(self.bevel._complete([]), ["foo", "bar", "baz"])
        self.assertEquals(self.bevel._complete(["b"]), ["bar", "baz"])
        self.assertEquals(self.bevel._complete(["foo", "b"]), ["bar", "baz"])
        self.assertEquals(self.bevel._complete(["blah"]), [])
        self.assertEquals(self.bevel._complete(["foo", "blah"]), [])

    def test_resolve_no_args(self):
        self.assertEquals(self.bevel._resolve_args([]), (None, []))

    def test_resolve_args_candidate(self):
        self.bevel._args_to_bin = Mock(return_value="/foo/bar")
        self.assertEquals(self.bevel._resolve_args(["blah"]), ("/foo/bar", []))

    def test_resolve_args_candidate_miss(self):
        self.bevel._args_to_bin = Mock(return_value=None)
        self.assertEquals(self.bevel._resolve_args(["blah"]), (None, ["blah"]))

    @patch("subprocess.Popen")
    def test_missing_runtime(self, popen):
        popen.side_effect = OSError(errno.ENOEXEC, "foo")
        self.assertRaises(InternalError, self.bevel._run, "foo", ["bar"])

    @patch("subprocess.Popen")
    def test_other_popen_problem(self, popen):
        popen.side_effect = OSError(9, "foo")
        self.assertRaises(OSError, self.bevel._run, "foo", ["bar"])

    @patch("subprocess.Popen")
    def test_successful_run(self, popen):
        proc = Mock()
        proc.returncode = 0
        popen.return_value = proc
        self.assertEquals(self.bevel._run("foo", ["bar"]), 0)
Example #4
0
class BevelRealTestCases(TestCase):
    fixture_dir = "bevel/tests/fixtures/myapplib"

    def setUp(self):
        self.bevel = Bevel(self.fixture_dir)
        super(BevelRealTestCases, self).setUp()

    def test_has_driver(self):
        for path in [self.fixture_dir, "%s/hasdriver" % self.fixture_dir]:
            self.assertTrue(self.bevel._has_driver(path))
        for path in ["%s/nodriver" % self.fixture_dir]:
            self.assertFalse(self.bevel._has_driver(path))

    def test_subcommands(self):
        self.assertEquals(self.bevel._subcommands([]), ["emptydriver", "hasdriver", "hasdriver2", "takesargs"])
        self.assertEquals(self.bevel._subcommands(["hasdriver", "subcommand"]), [])

    def test_is_regular_command(self):
        self.assertTrue(self.bevel._is_regular_command("%s/hasdriver/subcommand" % self.fixture_dir))
        self.assertFalse(self.bevel._is_regular_command("%s/nodriver/subcommand" % self.fixture_dir))

    def test_completion(self):
        for str_args, expected in (
            ("hasdrive ", []),
            ("hasdrive", ["hasdriver", "hasdriver2"]),
            ("hasdriver ", ["dashed-command", "subcommand"]),
            ("hasdriver", ["hasdriver", "hasdriver2"]),
            ("hasdriver s", ["subcommand"]),
            ("hasdriver f", []),
        ):
            self.assertEquals(self.bevel.complete(str_args), expected)

    def test_appears_as_command(self):
        self.assertTrue(self.bevel._appears_as_command("%s/hasdriver" % self.fixture_dir))
        self.assertFalse(self.bevel._appears_as_command("%s/hasbaddriver" % self.fixture_dir))

    def test_is_empty(self):
        self.assertTrue(self.bevel._is_empty("%s/hasdriver2/_driver" % self.fixture_dir))
        self.assertFalse(self.bevel._is_empty("%s/hasdriver/_driver" % self.fixture_dir))

    def test_missing_command(self):
        self.bevel.run("emptydriver foo")
        self.assertEquals(
            "usage: myapplib emptydriver <subcommand> [arguments] "
            "[options]\n\nValid subcommands are: subcommand\n\n",
            self.stdout.get(),
        )

    def test_argument_passing(self):
        self.bevel.run("takesargs foo")
        self.assertEquals("foo\n", self.stdout.get())