Ejemplo n.º 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
Ejemplo n.º 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)
Ejemplo n.º 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)
Ejemplo n.º 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.")
Ejemplo n.º 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.")
Ejemplo n.º 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\.")
Ejemplo n.º 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)
Ejemplo n.º 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")
Ejemplo n.º 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)
Ejemplo n.º 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()
Ejemplo n.º 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
Ejemplo n.º 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)
Ejemplo n.º 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\.")
Ejemplo n.º 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()
Ejemplo n.º 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"
Ejemplo n.º 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)
Ejemplo n.º 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()
Ejemplo n.º 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)
Ejemplo n.º 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)
Ejemplo n.º 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
Ejemplo n.º 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)
Ejemplo n.º 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
Ejemplo n.º 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)