Example #1
0
    def test_args_session(self):
        args = Args(session='interactions')

        config = Configuration()
        config.parse_args(args)

        self.assertEqual('interactions', config.session)
Example #2
0
    def test_no_session_arg_means_default_session(self):
        args = Args()

        config = Configuration()
        config.parse_args(args)

        self.assertEqual(DEFAULT_SESSION, config.session)
Example #3
0
File: cli.py Project: 1reza/turses
def main():
    """
    Launch ``turses``.
    """
    set_title(__name__)
    set_encoding('utf8')

    args = parse_arguments()

    # check if stdout has to be restored after program exit
    if any([args.debug,
            args.offline,
            getattr(args, 'help', False),
            getattr(args, 'version', False)]):
        # we are going to print information to stdout
        save_and_restore_stdout = False
    else:
        save_and_restore_stdout = True

    if save_and_restore_stdout:
        save_stdout()

    # load configuration
    configuration = Configuration(args)
    configuration.load()

    # start logger
    logging.basicConfig(filename=LOG_FILE,
                        level=configuration.logging_level)

    # create view
    curses_interface = CursesInterface(configuration)

    # select API backend
    if args.offline:
        api_backend = MockApi
    else:
        api_backend = TweepyApi

    # create controller
    turses = Turses(configuration=configuration,
                    ui=curses_interface,
                    api_backend=api_backend)
    try:
        turses.start()
    except KeyboardInterrupt:
        pass
    except:
        # open the debugger
        if args.debug or args.offline:
            import pdb
            pdb.post_mortem()
    finally:
        if save_and_restore_stdout:
            restore_stdout()

        restore_title()

        exit(0)
Example #4
0
    def test_args_config(self):
        config_path = '/path/to/custom/config/file'
        args = Args(config=config_path)

        config = Configuration()
        config.parse_args(args)

        self.assertEqual(config_path, config.config_file)
Example #5
0
    def test_args_config(self):
        config_path = '/path/to/custom/config/file'
        args = Args(config=config_path)

        config = Configuration()
        config.parse_args(args)

        self.assertEqual(config_path, config.config_file)
Example #6
0
    def test_args_generate_config(self):
        config_path = '~/.turses/custom_config'
        args = Args(generate_config=config_path)

        config = Configuration()
        config.generate_config_file = Mock()
        config.parse_args(args)

        config.generate_config_file.assert_called_once()
Example #7
0
    def test_args_generate_config(self):
        config_path = '~/.turses/custom_config'
        args = Args(generate_config=config_path)

        config = Configuration()
        config.generate_config_file = Mock()
        config.parse_args(args)

        config.generate_config_file.assert_called_once()
Example #8
0
    def test_args_account(self):
        account = 'bob'
        args = Args(account=account)
        token_path = join(CONFIG_PATH, "%s.token" % account)

        config = Configuration()
        config.parse_args(args)

        self.assertEqual(token_path, config.token_file)
Example #9
0
    def test_args_account(self):
        account = 'bob'
        args = Args(account=account)
        token_path = join(CONFIG_PATH, "%s.token" % account)

        config = Configuration()
        config.parse_args(args)

        self.assertEqual(token_path, config.token_file)
Example #10
0
File: cli.py Project: tazjel/turses
def main():
    """
    Launch ``turses``.
    """
    set_title(__name__)
    set_encoding('utf8')

    args = parse_arguments()

    # stdout
    if any([args.debug,
            args.offline,
            getattr(args, 'help', False),
            getattr(args, 'version', False)]):
        # we are going to print information to stdout
        save_and_restore_stdout = False
    else:
        save_and_restore_stdout = True

    if save_and_restore_stdout:
        save_stdout()

    # configuration
    configuration = Configuration(args)
    configuration.load()

    # view
    curses_interface = CursesInterface(configuration)

    # API
    if args.offline:
        api_backend = MockApi
    else:
        api_backend = TweepyApi

    # controller
    turses = Turses(configuration=configuration,
                    ui=curses_interface,
                    api_backend=api_backend)
    try:
        turses.start()
    except KeyboardInterrupt:
        pass
    except:
        if args.debug or args.offline:
            import pdb
            pdb.post_mortem()
    finally:
        if save_and_restore_stdout:
            restore_stdout()

        restore_title()

        exit(0)
Example #11
0
    def test_defaults(self):
        """Test that defaults get loaded correctly."""
        config = Configuration()

        # files
        self.assertEqual(config.config_file, DEFAULT_CONFIG_FILE)
        self.assertEqual(config.token_file, DEFAULT_TOKEN_FILE)

        # config options
        self.assertEqual(config.default_timelines, DEFAULT_TIMELINES)
        self.assertEqual(config.update_frequency, UPDATE_FREQUENCY)
        self.assertEqual(config.key_bindings, KEY_BINDINGS)
        self.assertEqual(config.palette, PALETTE)
        self.assertEqual(config.styles, STYLES)
        self.assertEqual(config.logging_level, LOGGING_LEVEL)

        # debug mode
        self.assertEqual(config.debug, False)
Example #12
0
    def test_set_color(self):
        """Test `Configuration._set_color`."""
        config = Configuration()

        palette = [['first', 'cyan', 'black', 'default', ''],
                   ['second', 'green', 'black']]
        modified_color = ['first', 'black', 'cyan', 'default', '']
        palette[0] = modified_color
        label, fg, bg = modified_color[:3]

        config.palette = list(palette)
        config._set_color(label, fg, bg)

        self.assertEqual(palette, config.palette)

        config._set_color('idontexist', fg, bg)
        self.assertEqual(palette, config.palette)
Example #13
0
    def test_defaults(self):
        """Test that defaults get loaded correctly."""
        config = Configuration()

        # files
        self.assertEqual(config.config_file, DEFAULT_CONFIG_FILE)
        self.assertEqual(config.token_file, DEFAULT_TOKEN_FILE)

        # config options
        self.assertEqual(config.twitter['update_frequency'],
                         TWITTER['update_frequency'])
        self.assertEqual(config.twitter['use_https'],
                         TWITTER['use_https'])
        self.assertEqual(config.key_bindings, KEY_BINDINGS)
        self.assertEqual(config.palette, PALETTE)
        self.assertEqual(config.styles, STYLES)
        self.assertEqual(config.logging_level, LOGGING_LEVEL)

        # debug mode
        self.assertEqual(config.debug, False)
Example #14
0
    def test_set_key_binding(self):
        """Test `Configuration._set_key_binding`."""
        config = Configuration()

        key_bindings = {
            'quit': ('q', 'Quit the program'),
            'help': ('h', 'Show help')
        }

        config.key_bindings = key_bindings.copy()
        # swap the key bindings
        config._set_key_binding('quit', 'h')
        config._set_key_binding('help', 'q')
        swapped_key_bindings = {
            'quit': ('h', 'Quit the program'),
            'help': ('q', 'Show help')
        }

        self.assertEqual(swapped_key_bindings, config.key_bindings)

        config._set_key_binding('idontexist', '~')
        self.assertEqual(swapped_key_bindings, config.key_bindings)
Example #15
0
    def test_set_color(self):
        """Test `Configuration._set_color`."""
        config = Configuration()

        palette = [
            ['first', 'cyan', 'black', 'default', ''],
            ['second', 'green', 'black']
        ]
        modified_color = ['first', 'black', 'cyan', 'default', '']
        palette[0] = modified_color
        label, fg, bg = modified_color[:3]

        config.palette = list(palette)
        config._set_color(label, fg, bg)

        self.assertEqual(palette, config.palette)

        config._set_color('idontexist', fg, bg)
        self.assertEqual(palette, config.palette)
Example #16
0
    def test_set_key_binding(self):
        """Test `Configuration._set_key_binding`."""
        config = Configuration()

        key_bindings = {
            'quit': ('q', 'Quit the program'),
            'help': ('h', 'Show help')
        }

        config.key_bindings = key_bindings.copy()
        # swap the key bindings
        config._set_key_binding('quit', 'h')
        config._set_key_binding('help', 'q')
        swapped_key_bindings = {
            'quit': ('h', 'Quit the program'),
            'help': ('q', 'Show help')
        }

        self.assertEqual(swapped_key_bindings, config.key_bindings)

        config._set_key_binding('idontexist', '~')
        self.assertEqual(swapped_key_bindings, config.key_bindings)
Example #17
0
 def test_defaults(self):
     """Test that defaults get loaded correctly."""
     config = Configuration()
     self.assertEqual(config.config_file, DEFAULT_CONFIG_FILE)
     self.assertEqual(config.token_file, DEFAULT_TOKEN_FILE)