Exemplo n.º 1
0
    def init_test(self,
                  paths=None,
                  key1=None,
                  key2=None,
                  val=None,
                  debug=False):
        """Initialize a testable vimiv object saved as self.vimiv.

        Args:
            paths: Paths passed to vimiv.
            key1: List of keys of the sections for settings to be set.
            key2: List of keys for settings to be set.
            val: List of values for settings to be set.
        """
        self.working_directory = os.getcwd()
        # Create vimiv class with settings, paths, ...
        self.vimiv = Vimiv(True)  # True for running_tests
        self.vimiv.debug = debug
        options = GLib.VariantDict.new()
        bool_true = GLib.Variant("b", True)
        options.insert_value("temp-basedir", bool_true)
        self.vimiv.do_handle_local_options(options)
        # Set the required settings
        if key1:
            for i, section in enumerate(key1):
                self.vimiv.settings[section][key2[i]] = val[i]
        self.vimiv.register()
        self.vimiv.do_startup(self.vimiv)
        if paths:
            # Create a list of Gio.Files for vimiv.do_open
            files = [Gio.File.new_for_path(path) for path in paths]
            self.vimiv.do_open(files, len(paths), "")
        else:
            self.vimiv.activate_vimiv(self.vimiv)
Exemplo n.º 2
0
class QuitTest(VimivTestCase):
    """Quit Tests."""
    def setUp(self):
        """Recreate vimiv for every run."""
        self.vimiv = Vimiv()
        self.init_test()

    def test_quit_with_running_threads(self):
        """Quit vimiv with external threads running."""
        self.run_command("!sleep 0.2")
        self.vimiv.quit_wrapper()
        self.check_statusbar(
            "WARNING: Running external processes: sleep 0.2. Add ! to force.")
        p = self.vimiv["commandline"].running_processes[0]
        # Kill the subprocess
        self.assertFalse(p.poll())
        self.vimiv.quit_wrapper(force=True)
        refresh_gui()
        self.assertEqual(p.poll(), -9)

    def test_clean_quit(self):
        """Quit vimiv and write history and log."""
        self.run_command("!:", external=True)
        self.vimiv.quit_wrapper()
        histfile = os.path.join(GLib.get_user_data_dir(), "vimiv", "history")
        logfile = os.path.join(GLib.get_user_data_dir(), "vimiv", "vimiv.log")
        with open(histfile) as f:
            content = f.readlines()
            self.assertEqual(content, [":!:\n"])
        with open(logfile) as f:
            content = f.readlines()
            self.assertIn("Exited", content[-1])

    def test_quit_with_edited_image(self):
        """Quit vimiv with an edited image."""
        # Fake a manipulation
        self.vimiv["manipulate"].manipulations = {}
        self.vimiv.quit_wrapper()
        self.check_statusbar("WARNING: Image has been edited, add ! to force")
        # Force quit
        self.vimiv.quit_wrapper(force=True)
        self.assertEqual(self.vimiv["manipulate"].manipulations, {
            "bri": 1,
            "con": 1,
            "sha": 1
        })
        refresh_gui()
Exemplo n.º 3
0
class QuitTest(VimivTestCase):
    """Quit Tests."""
    def setUp(self):
        """Recreate vimiv for every run."""
        self.vimiv = Vimiv()
        self.init_test()

    def test_quit_with_running_threads(self):
        """Quit vimiv with external threads running."""
        self.run_command("!sleep 0.2")
        self.vimiv.quit_wrapper()
        self.check_statusbar(
            "WARNING: Running external processes: sleep 0.2. Add ! to force.")
        p = self.vimiv["commandline"].running_processes[0]
        # Kill the subprocess
        self.assertFalse(p.poll())
        self.vimiv.quit_wrapper(force=True)
        refresh_gui()
        self.assertEqual(p.poll(), -9)

    def test_clean_quit(self):
        """Quit vimiv without errors."""
        self.vimiv.quit_wrapper()
Exemplo n.º 4
0
 def setUp(self):
     """Recreate vimiv for every run."""
     self.vimiv = Vimiv()
     self.init_test()
Exemplo n.º 5
0
 def setUpClass(cls):
     # Get set in init_test as setUpClass will be overridden
     cls.working_directory = ""
     cls.vimiv = Vimiv()
     cls.init_test(cls)
Exemplo n.º 6
0
class VimivTestCase(TestCase):
    """Wrapper Class of TestCase."""
    @classmethod
    def setUpClass(cls):
        # Get set in init_test as setUpClass will be overridden
        cls.working_directory = ""
        cls.vimiv = Vimiv()
        cls.init_test(cls)

    def init_test(self,
                  paths=None,
                  key1=None,
                  key2=None,
                  val=None,
                  debug=False):
        """Initialize a testable vimiv object saved as self.vimiv.

        Args:
            paths: Paths passed to vimiv.
            key1: List of keys of the sections for settings to be set.
            key2: List of keys for settings to be set.
            val: List of values for settings to be set.
        """
        self.working_directory = os.getcwd()
        # Create vimiv class with settings, paths, ...
        self.vimiv = Vimiv(True)  # True for running_tests
        self.vimiv.debug = debug
        options = GLib.VariantDict.new()
        bool_true = GLib.Variant("b", True)
        options.insert_value("temp-basedir", bool_true)
        self.vimiv.do_handle_local_options(options)
        # Set the required settings
        if key1:
            for i, section in enumerate(key1):
                self.vimiv.settings[section][key2[i]] = val[i]
        self.vimiv.register()
        self.vimiv.do_startup(self.vimiv)
        if paths:
            # Create a list of Gio.Files for vimiv.do_open
            files = [Gio.File.new_for_path(path) for path in paths]
            self.vimiv.do_open(files, len(paths), "")
        else:
            self.vimiv.activate_vimiv(self.vimiv)

    def run_command(self, command, external=False):
        """Run a command in the command line.

        Args:
            command: The command to run.
            external: If True, run an external command and wait for it to
                finish.
        """
        self.vimiv["commandline"].focus(command)
        self.vimiv["commandline"].handler(self.vimiv["commandline"].entry)
        if external:
            while self.vimiv["commandline"].running_processes:
                self.vimiv["commandline"].running_processes[0].wait()
                time.sleep(0.001)

    def run_search(self, string):
        """Search for string from the command line."""
        self.vimiv["commandline"].entry.set_text("/" + string)
        self.vimiv["commandline"].handler(self.vimiv["commandline"].entry)

    def check_statusbar(self, expected_text):
        """Check statusbar for text."""
        statusbar_text = self.vimiv["statusbar"].left_label.get_text()
        self.assertEqual(expected_text, statusbar_text)

    @classmethod
    def tearDownClass(cls):
        cls.vimiv.quit()
        os.chdir(cls.working_directory)
Exemplo n.º 7
0
Arquivo: vimiv.py Projeto: woefe/vimiv
#!/usr/bin/env python3
# vim: ft=python fileencoding=utf-8 sw=4 et sts=4
"""Vimiv executable."""
import signal
import sys
from vimiv.app import Vimiv

if __name__ == '__main__':
    signal.signal(signal.SIGINT, signal.SIG_DFL)  # ^C
    Vimiv().run(sys.argv)