Пример #1
0
    def test_create_output_record(self, mock_check_file_output: Mock,
                                  args: Mock):
        formatter = Formatter({"author": lambda: "foo"})
        mock_check_file_output.side_effect = lambda path, force: FileOutput(
            path)
        args.output = None
        args.stdout = None
        args.record = "foo"
        args.record_and_pipe = None
        args.force = False
        args.fs_safe_rules = None
        args.title = None
        args.url = "URL"
        args.player = "mpv"
        args.player_args = ""
        args.player_fifo = None
        args.player_http = None

        output = create_output(formatter)
        assert type(output) is PlayerOutput
        assert output.title == "URL"
        assert type(output.record) is FileOutput
        assert output.record.filename == Path("foo")
        assert output.record.fd is None
        assert output.record.record is None

        args.title = "{author} - {title}"
        output = create_output(formatter)
        assert type(output) is PlayerOutput
        assert output.title == "foo - bar"
        assert type(output.record) is FileOutput
        assert output.record.filename == Path("foo")
        assert output.record.fd is None
        assert output.record.record is None
Пример #2
0
    def test_create_output_record(self, args: Mock):
        formatter = Formatter({
            "author": lambda: "foo"
        })
        args.output = None
        args.stdout = None
        args.record = "foo"
        args.record_and_pipe = None
        args.fs_safe_rules = None
        args.title = None
        args.url = "URL"
        args.player = "mpv"
        args.player_args = ""
        args.player_fifo = None
        args.player_http = None

        output = create_output(formatter)
        self.assertIsInstance(output, PlayerOutput)
        self.assertEqual(output.title, "URL")
        self.assertIsInstance(output.record, FileOutput)
        self.assertEqual(output.record.filename, "foo")
        self.assertEqual(output.record.fd, None)
        self.assertEqual(output.record.record, None)

        args.title = "{author} - {title}"
        output = create_output(formatter)
        self.assertIsInstance(output, PlayerOutput)
        self.assertEqual(output.title, "foo - bar")
        self.assertIsInstance(output.record, FileOutput)
        self.assertEqual(output.record.filename, "foo")
        self.assertEqual(output.record.fd, None)
        self.assertEqual(output.record.record, None)
Пример #3
0
    def test_create_output_record(self, mock_check_file_output: Mock,
                                  args: Mock):
        formatter = Formatter({"author": lambda: "foo"})
        mock_check_file_output.side_effect = lambda path, force: FileOutput(
            path)
        args.output = None
        args.stdout = None
        args.record = "foo"
        args.record_and_pipe = None
        args.force = False
        args.fs_safe_rules = None
        args.title = None
        args.url = "URL"
        args.player = "mpv"
        args.player_args = ""
        args.player_fifo = None
        args.player_http = None

        output = create_output(formatter)
        self.assertIsInstance(output, PlayerOutput)
        self.assertEqual(output.title, "URL")
        self.assertIsInstance(output.record, FileOutput)
        self.assertEqual(output.record.filename, Path("foo"))
        self.assertIsNone(output.record.fd)
        self.assertIsNone(output.record.record)

        args.title = "{author} - {title}"
        output = create_output(formatter)
        self.assertIsInstance(output, PlayerOutput)
        self.assertEqual(output.title, "foo - bar")
        self.assertIsInstance(output.record, FileOutput)
        self.assertEqual(output.record.filename, Path("foo"))
        self.assertIsNone(output.record.fd)
        self.assertIsNone(output.record.record)
Пример #4
0
 def test_create_output_record_and_other_file_output(self, console: Mock, args: Mock):
     formatter = Formatter({})
     args.output = None
     args.stdout = True
     args.record_and_pipe = True
     create_output(formatter)
     console.exit.assert_called_with("Cannot use record options with other file output options.")
Пример #5
0
 def test_create_output_record_and_other_file_output(self):
     streamlink_cli.main.console = console = Mock()
     streamlink_cli.main.args = args = Mock()
     console.exit = Mock()
     args.output = None
     args.stdout = True
     args.record_and_pipe = True
     create_output(FakePlugin)
     console.exit.assert_called_with("Cannot use record options with other file output options.")
Пример #6
0
 def test_create_output_no_default_player(self, console: Mock, args: Mock):
     formatter = Formatter({})
     args.output = None
     args.stdout = False
     args.record_and_pipe = False
     args.player = None
     console.exit.side_effect = SystemExit
     with self.assertRaises(SystemExit):
         create_output(formatter)
     self.assertRegex(
         console.exit.call_args_list[0][0][0],
         r"^The default player \(\w+\) does not seem to be installed\.")
Пример #7
0
    def test_create_output_stdout(self, args: Mock):
        formatter = Formatter({})
        args.output = None
        args.stdout = True

        output = create_output(formatter)
        self.assertIsInstance(output, FileOutput)
        self.assertEqual(output.filename, None)
        self.assertEqual(output.fd, stdout)
        self.assertEqual(output.record, None)

        args.output = "-"
        args.stdout = False
        output = create_output(formatter)
        self.assertIsInstance(output, FileOutput)
        self.assertEqual(output.filename, None)
        self.assertEqual(output.fd, stdout)
        self.assertEqual(output.record, None)
Пример #8
0
    def test_create_output_no_file_output_options(self, args: Mock):
        formatter = Formatter({"author": lambda: "foo"})
        args.output = None
        args.stdout = None
        args.record = None
        args.record_and_pipe = None
        args.title = None
        args.url = "URL"
        args.player = "mpv"
        args.player_args = ""

        output = create_output(formatter)
        self.assertIsInstance(output, PlayerOutput)
        self.assertEqual(output.title, "URL")

        args.title = "{author} - {title}"
        output = create_output(formatter)
        self.assertIsInstance(output, PlayerOutput)
        self.assertEqual(output.title, "foo - bar")
Пример #9
0
 def test_create_output_no_file_output_options(self):
     streamlink_cli.main.console = Mock()
     streamlink_cli.main.args = args = Mock()
     args.output = None
     args.stdout = None
     args.record = None
     args.record_and_pipe = None
     args.title = None
     args.player = "mpv"
     self.assertIsInstance(create_output(FakePlugin), PlayerOutput)
Пример #10
0
 def test_create_output_file_output(self):
     tmpfile = tempfile.NamedTemporaryFile()
     try:
         streamlink_cli.main.args = args = Mock()
         streamlink_cli.main.console = Mock()
         args.output = tmpfile.name
         self.assertTrue(os.path.exists(tmpfile.name))
         self.assertIsInstance(create_output(FakePlugin), FileOutput)
     finally:
         tmpfile.close()
Пример #11
0
    def test_create_output_stdout(self, args: Mock):
        formatter = Formatter({})
        args.output = None
        args.stdout = True
        args.record = None
        args.record_and_pipe = None

        output = create_output(formatter)
        assert type(output) is FileOutput
        assert output.filename is None
        assert output.fd is stdout
        assert output.record is None

        args.output = "-"
        args.stdout = False
        output = create_output(formatter)
        assert type(output) is FileOutput
        assert output.filename is None
        assert output.fd is stdout
        assert output.record is None
Пример #12
0
    def test_create_output_stdout(self, args: Mock):
        formatter = Formatter({})
        args.output = None
        args.stdout = True
        args.record = None
        args.record_and_pipe = None

        output = create_output(formatter)
        self.assertIsInstance(output, FileOutput)
        self.assertIsNone(output.filename)
        self.assertIs(output.fd, stdout)
        self.assertIsNone(output.record)

        args.output = "-"
        args.stdout = False
        output = create_output(formatter)
        self.assertIsInstance(output, FileOutput)
        self.assertIsNone(output.filename)
        self.assertIs(output.fd, stdout)
        self.assertIsNone(output.record)
Пример #13
0
 def test_create_output_no_default_player(self, console):
     # type: (Mock, Mock)
     streamlink_cli.main.args = args = Mock()
     console.exit = Mock()
     formatter = Formatter({})
     args.output = None
     args.stdout = False
     args.record_and_pipe = False
     args.player = None
     console.exit.side_effect = SystemExit
     with self.assertRaises(SystemExit):
         create_output(formatter)
     if is_py2:
         self.assertRegexpMatches(
             console.exit.call_args_list[0][0][0],
             r"^The default player \(\w+\) does not seem to be installed\.")
     else:
         self.assertRegex(
             console.exit.call_args_list[0][0][0],
             r"^The default player \(\w+\) does not seem to be installed\.")
Пример #14
0
 def test_create_output_record_and_pipe(self):
     tmpfile = tempfile.NamedTemporaryFile()
     try:
         streamlink_cli.main.console = Mock()
         streamlink_cli.main.args = args = Mock()
         args.output = None
         args.stdout = None
         args.record_and_pipe = tmpfile.name
         self.assertIsInstance(create_output(FakePlugin), FileOutput)
     finally:
         tmpfile.close()
Пример #15
0
    def test_create_output_no_file_output_options(self, args: Mock):
        formatter = Formatter({"author": lambda: "foo"})
        args.output = None
        args.stdout = None
        args.record = None
        args.record_and_pipe = None
        args.player_fifo = False
        args.title = None
        args.url = "URL"
        args.player = "mpv"
        args.player_args = ""

        output = create_output(formatter)
        assert type(output) is PlayerOutput
        assert output.title == "URL"

        args.title = "{author} - {title}"
        output = create_output(formatter)
        assert type(output) is PlayerOutput
        assert output.title == "foo - bar"
Пример #16
0
    def test_create_output_file_output(self, args: Mock, mock_isfile):
        formatter = Formatter({})
        args.output = "foo"
        args.force = False
        args.fs_safe_rules = None
        mock_isfile.return_value = False

        output = create_output(formatter)
        self.assertIsInstance(output, FileOutput)
        self.assertEqual(output.filename, "foo")
        self.assertEqual(output.fd, None)
        self.assertEqual(output.record, None)
Пример #17
0
 def test_create_output_record(self):
     tmpfile = tempfile.NamedTemporaryFile()
     try:
         streamlink_cli.main.console = Mock()
         streamlink_cli.main.args = args = Mock()
         args.output = None
         args.stdout = None
         args.record = tmpfile.name
         args.record_and_pipe = None
         args.title = None
         args.player = "mpv"
         args.player_args = ""
         args.player_fifo = None
         self.assertIsInstance(create_output(FakePlugin), PlayerOutput)
     finally:
         tmpfile.close()
Пример #18
0
    def test_create_output_record_and_pipe(self, args: Mock, mock_isfile: Mock):
        formatter = Formatter({})
        args.output = None
        args.stdout = None
        args.record_and_pipe = "foo"
        args.fs_safe_rules = None
        mock_isfile.return_value = False

        output = create_output(formatter)
        self.assertIsInstance(output, FileOutput)
        self.assertEqual(output.filename, None)
        self.assertEqual(output.fd, stdout)
        self.assertIsInstance(output.record, FileOutput)
        self.assertEqual(output.record.filename, "foo")
        self.assertEqual(output.record.fd, None)
        self.assertEqual(output.record.record, None)
Пример #19
0
    def test_create_output_file_output(self, mock_check_file_output: Mock,
                                       args: Mock):
        formatter = Formatter({})
        mock_check_file_output.side_effect = lambda path, force: FileOutput(
            path)
        args.output = "foo"
        args.stdout = None
        args.record = None
        args.record_and_pipe = None
        args.force = False
        args.fs_safe_rules = None

        output = create_output(formatter)
        self.assertEqual(mock_check_file_output.call_args_list,
                         [call(Path("foo"), False)])
        self.assertIsInstance(output, FileOutput)
        self.assertEqual(output.filename, Path("foo"))
        self.assertIsNone(output.fd)
        self.assertIsNone(output.record)
Пример #20
0
    def test_create_output_file_output(self, mock_check_file_output: Mock,
                                       args: Mock):
        formatter = Formatter({})
        mock_check_file_output.side_effect = lambda path, force: FileOutput(
            path)
        args.output = "foo"
        args.stdout = None
        args.record = None
        args.record_and_pipe = None
        args.force = False
        args.fs_safe_rules = None

        output = create_output(formatter)
        assert mock_check_file_output.call_args_list == [
            call(Path("foo"), False)
        ]
        assert type(output) is FileOutput
        assert output.filename == Path("foo")
        assert output.fd is None
        assert output.record is None
Пример #21
0
    def test_create_output_record_and_pipe(self, mock_check_file_output, args):
        # type: (Mock, Mock)
        formatter = Formatter({})
        mock_check_file_output.side_effect = lambda path, force: FileOutput(
            path)
        args.output = None
        args.stdout = None
        args.record_and_pipe = "foo"
        args.force = False
        args.fs_safe_rules = None

        output = create_output(formatter)
        self.assertEqual(mock_check_file_output.call_args_list,
                         [call("foo", False)])
        self.assertIsInstance(output, FileOutput)
        self.assertIsNone(output.filename)
        self.assertIs(output.fd, stdout)
        self.assertIsInstance(output.record, FileOutput)
        self.assertEqual(output.record.filename, "foo")
        self.assertIsNone(output.record.fd)
        self.assertIsNone(output.record.record)
Пример #22
0
    def test_create_output_record_stdout(self, args: Mock):
        formatter = Formatter({"author": lambda: "foo"})
        args.output = None
        args.stdout = None
        args.record = "-"
        args.record_and_pipe = None
        args.force = False
        args.fs_safe_rules = None
        args.title = "{author} - {title}"
        args.url = "URL"
        args.player = "mpv"
        args.player_args = ""
        args.player_fifo = None
        args.player_http = None

        output = create_output(formatter)
        assert type(output) is PlayerOutput
        assert output.title == "foo - bar"
        assert type(output.record) is FileOutput
        assert output.record.filename is None
        assert output.record.fd is stdout
        assert output.record.record is None
Пример #23
0
 def test_create_output_stdout(self):
     streamlink_cli.main.console = Mock()
     streamlink_cli.main.args = args = Mock()
     args.output = None
     args.stdout = True
     self.assertIsInstance(create_output(FakePlugin), FileOutput)