コード例 #1
0
    def test_askpass(self, mock_getpass: Mock):
        def getpass(prompt, stream):
            stream.write(prompt)
            return "hello"

        output = StringIO()
        console = ConsoleOutput(output)
        mock_getpass.side_effect = getpass
        self.assertEqual("hello", console.askpass("test: "))
        self.assertEqual("test: ", output.getvalue())
コード例 #2
0
ファイル: main.py プロジェクト: nickersk/streamlink-27
def setup_console(output):
    """Console setup."""
    global console

    # All console related operations is handled via the ConsoleOutput class
    console = ConsoleOutput(output, streamlink)
    console.json = args.json

    # Handle SIGTERM just like SIGINT
    signal.signal(signal.SIGTERM, signal.default_int_handler)
コード例 #3
0
 def test_msg_json_merge_object(self):
     output = StringIO()
     console = ConsoleOutput(output, json=True)
     test_obj1 = {"test": 1, "foo": "foo"}
     test_obj2 = Mock(__json__=Mock(return_value={"test": 2}))
     console.msg_json(test_obj1, test_obj2, ["qux"], foo="bar", baz="qux")
     self.assertEqual(
         '{\n'
         '  "test": 2,\n'
         '  "foo": "bar",\n'
         '  "baz": "qux"\n'
         '}\n', output.getvalue())
     self.assertEqual([("test", 1), ("foo", "foo")],
                      list(test_obj1.items()))
コード例 #4
0
def setup_logger_and_console(stream=sys.stdout,
                             filename=None,
                             level="info",
                             json=False):
    global console

    if filename == "-":
        filename = LOG_DIR / datetime.datetime.now().strftime(
            "%Y-%m-%d_%H-%M-%S.log")
    elif filename:
        filename = Path(filename).expanduser().resolve()

    if filename:
        filename.parent.mkdir(parents=True, exist_ok=True)

    streamhandler = logger.basicConfig(
        stream=stream,
        filename=filename,
        level=level,
        style="{",
        format=("[{asctime}]" if level == "trace" else "") +
        "[{name}][{levelname}] {message}",
        datefmt="%H:%M:%S" + (".%f" if level == "trace" else ""))

    console = ConsoleOutput(streamhandler.stream, json)
コード例 #5
0
ファイル: main.py プロジェクト: Billy2011/streamlink-27
def setup_logger_and_console(stream=sys.stdout,
                             filename=None,
                             level="info",
                             json=False):
    global console

    if filename == "-":
        if not os.path.isdir(LOG_DIR):
            os.makedirs(LOG_DIR)
        filename = os.path.join(
            LOG_DIR,
            datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S.log"))
    elif filename:
        filename = os.path.expanduser(filename)
        head = os.path.dirname(filename)
        if head and not os.path.isdir(head):
            os.makedirs(head)

    streamhandler = logger.basicConfig(
        stream=stream,
        filename=filename,
        level=level,
        style="{",
        format=("[{asctime},{msecs:03.0f}]" if level == "trace" else "") +
        "[{name}][{levelname}] {message}",
        datefmt="%H:%M:%S")

    console = ConsoleOutput(streamhandler.stream, streamlink, json)
コード例 #6
0
 def test_msg_json_merge_list(self):
     output = StringIO()
     console = ConsoleOutput(output, json=True)
     test_list1 = ["foo", "bar"]
     test_list2 = Mock(__json__=Mock(return_value={"foo": "bar"}))
     console.msg_json(test_list1, ["baz"],
                      test_list2, {"foo": "bar"},
                      foo="bar",
                      baz="qux")
     self.assertEqual(
         '[\n'
         '  "foo",\n'
         '  "bar",\n'
         '  "baz",\n'
         '  {\n    "foo": "bar"\n  },\n'
         '  {\n    "foo": "bar"\n  },\n'
         '  {\n    "foo": "bar",\n    "baz": "qux"\n  }\n'
         ']\n', output.getvalue())
     self.assertEqual(["foo", "bar"], test_list1)
コード例 #7
0
ファイル: test_console.py プロジェクト: yuviDX/streamlink
 def test_msg_json_object(self):
     output = StringIO()
     test_obj = _TestObj()
     console = ConsoleOutput(output, json=True)
     console.msg_json(test_obj)
     self.assertEqual('''{\n  "test": 1\n}\n''', output.getvalue())
コード例 #8
0
ファイル: test_console.py プロジェクト: yuviDX/streamlink
 def test_msg_json(self):
     output = StringIO()
     console = ConsoleOutput(output, json=True)
     console.msg_json({"test": 1})
     self.assertEqual('''{\n  "test": 1\n}\n''', output.getvalue())
コード例 #9
0
ファイル: test_console.py プロジェクト: yuviDX/streamlink
 def test_msg_json_not_set(self):
     output = StringIO()
     console = ConsoleOutput(output)
     self.assertEqual(None, console.msg_json({"test": 1}))
     self.assertEqual("", output.getvalue())
コード例 #10
0
ファイル: test_console.py プロジェクト: yuviDX/streamlink
    def test_msg_format_kw(self):
        output = StringIO()
        console = ConsoleOutput(output)
        console.msg("{test} - {what}", test=1, what=2)

        self.assertEqual("1 - 2\n", output.getvalue())
コード例 #11
0
ファイル: test_console.py プロジェクト: yuviDX/streamlink
    def test_msg_format(self):
        output = StringIO()
        console = ConsoleOutput(output)
        console.msg("{0} - {1}", 1, 2)

        self.assertEqual("1 - 2\n", output.getvalue())
コード例 #12
0
 def test_msg_json_list(self):
     output = StringIO()
     console = ConsoleOutput(output, json=True)
     test_list = ["foo", "bar"]
     console.msg_json(test_list)
     self.assertEqual('[\n  "foo",\n  "bar"\n]\n', output.getvalue())
コード例 #13
0
ファイル: test_console.py プロジェクト: yuviDX/streamlink
 def test_exit_json(self, mock_exit):
     output = StringIO()
     console = ConsoleOutput(output, json=True)
     console.exit("error")
     self.assertEqual('''{\n  "error": "error"\n}\n''', output.getvalue())
     mock_exit.assert_called_with(1)
コード例 #14
0
ファイル: test_console.py プロジェクト: yuviDX/streamlink
 def test_ask_no_tty(self, isatty, input, stderr):
     isatty.return_value = False
     self.assertEqual("", ConsoleOutput.ask("test: "))
     input.assert_not_called()
     stderr.write.assert_not_called()
コード例 #15
0
 def test_ask_input_exception(self):
     output = StringIO()
     console = ConsoleOutput(output)
     self.assertIsNone(console.ask("test: "))
     self.assertEqual("test: ", output.getvalue())
コード例 #16
0
 def test_ask(self):
     output = StringIO()
     console = ConsoleOutput(output)
     self.assertEqual("hello", console.ask("test: "))
     self.assertEqual("test: ", output.getvalue())
コード例 #17
0
 def test_msg(self):
     output = StringIO()
     console = ConsoleOutput(output)
     console.msg("foo")
     console.msg_json({"test": 1})
     self.assertEqual("foo\n", output.getvalue())
コード例 #18
0
 def test_askpass_no_tty(self):
     output = StringIO()
     console = ConsoleOutput(output)
     self.assertIsNone(console.askpass("test: "))
コード例 #19
0
ファイル: test_console.py プロジェクト: yuviDX/streamlink
 def test_msg_json_error(self, mock_exit):
     output = StringIO()
     console = ConsoleOutput(output, json=True)
     console.msg_json({"error": "bad"})
     self.assertEqual('''{\n  "error": "bad"\n}\n''', output.getvalue())
     mock_exit.assert_called_with(1)
コード例 #20
0
ファイル: test_console.py プロジェクト: yuviDX/streamlink
 def test_askpass(self, isatty, getpass):
     isatty.return_value = True
     getpass.return_value = "hello"
     self.assertEqual("hello", ConsoleOutput.askpass("test: "))
コード例 #21
0
ファイル: test_console.py プロジェクト: yuviDX/streamlink
 def test_exit(self, mock_exit):
     output = StringIO()
     console = ConsoleOutput(output)
     console.exit("error")
     self.assertEqual("error: error\n", output.getvalue())
     mock_exit.assert_called_with(1)
コード例 #22
0
 def test_ask_no_tty(self, mock_input: Mock):
     output = StringIO()
     console = ConsoleOutput(output)
     self.assertIsNone(console.ask("test: "))
     self.assertEqual("", output.getvalue())
     mock_input.assert_not_called()
コード例 #23
0
ファイル: test_console.py プロジェクト: yuviDX/streamlink
 def test_ask(self, isatty, input, stderr):
     input.return_value = "hello"
     isatty.return_value = True
     self.assertEqual("hello", ConsoleOutput.ask("test: "))
     stderr.write.assert_called_with("test: ")
コード例 #24
0
 def test_msg_json_object(self):
     output = StringIO()
     console = ConsoleOutput(output, json=True)
     console.msg_json(Mock(__json__=Mock(return_value={"test": 1})))
     self.assertEqual('{\n  "test": 1\n}\n', output.getvalue())
コード例 #25
0
ファイル: test_console.py プロジェクト: yuviDX/streamlink
 def test_ask_input_exception(self, isatty, input, stderr):
     isatty.return_value = True
     input.side_effect = ValueError
     self.assertEqual("", ConsoleOutput.ask("test: "))
     stderr.write.assert_called_with("test: ")
コード例 #26
0
 def test_set_level(self):
     session = Mock()
     console = ConsoleOutput(Mock(), session)
     console.set_level("debug")
     session.set_loglevel.assert_called_with("debug")
コード例 #27
0
ファイル: test_console.py プロジェクト: yuviDX/streamlink
 def test_askpass_no_tty(self, isatty):
     isatty.return_value = False
     self.assertEqual("", ConsoleOutput.askpass("test: "))
コード例 #28
0
ファイル: test_console.py プロジェクト: mp107/streamlink
 def test_msg_format(self):
     output = StringIO()
     console = ConsoleOutput(output)
     console.msg("foo")
     self.assertEqual("foo\n", output.getvalue())