diff options
| author | Elena ``of Valhalla'' Grandi <valhalla@trueelena.org> | 2022-03-15 09:52:31 +0100 | 
|---|---|---|
| committer | Elena ``of Valhalla'' Grandi <valhalla@trueelena.org> | 2022-03-15 09:52:31 +0100 | 
| commit | 82eac2165d3a8bc20abea52d32a1037be8472b69 (patch) | |
| tree | d6d49b0bc2e9c8623edee8e6a6e143bf7a8721a9 /tests | |
| parent | 386a27282de20fbf4e41e9f9e3640deec7e77963 (diff) | |
Add a mixin with the ability to open a file in an external editor
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/test_mixins.py | 37 | 
1 files changed, 37 insertions, 0 deletions
| diff --git a/tests/test_mixins.py b/tests/test_mixins.py new file mode 100644 index 0000000..1e2f91d --- /dev/null +++ b/tests/test_mixins.py @@ -0,0 +1,37 @@ +import unittest + +import hazwaz + + +class testEditorMixin(unittest.TestCase): +    def test_open_with_cat_existing_file(self): +        subcmd = hazwaz.mixins.ExternalEditorMixin() +        subcmd.editors = [("cat", "cat")] +        # TODO: suppress this output in the tests (we can't use +        # contextlib.redirect_stdout because that doesn't redirect the +        # stdout used by subprocess. +        res = subcmd.edit_file_in_external_editor("/bin/fgrep") +        self.assertTrue(res) + +    def test_open_with_cat_missing_file(self): +        subcmd = hazwaz.mixins.ExternalEditorMixin() +        subcmd.editors = [("cat", "cat")] +        # TODO: suppress this output in the tests (we can't use +        # contextlib.redirect_stderr because that doesn't redirect the +        # stderr used by subprocess. +        res = subcmd.edit_file_in_external_editor("no_such_file") +        self.assertFalse(res) + +    def test_open_with_non_existing_editor(self): +        subcmd = hazwaz.mixins.ExternalEditorMixin() +        subcmd.editors = [("no_such_command", "no_such_command")] +        with self.assertLogs() as cm: +            subcmd.edit_file_in_external_editor("no_such_file") +        self.assertIn( +            "Could not open file no_such_file with no_such_command", +            cm.output[0] +        ) + + +if __name__ == '__main__': +    unittest.main() | 
