Пример #1
0
    def test_filename_from_fspath(self):
        class FilePath(object):
            def __init__(self, filename):
                self.filename = filename

            def __fspath__(self):
                return self.filename

        @loadfile(method=False, writable=True)
        def file_func(filething):
            fileobj = filething.fileobj
            assert fileobj.read(3) == b"foo"
            fileobj.seek(0, 2)
            fileobj.write(b"bar")

        filename = get_temp_empty()
        try:
            with open(filename, "wb") as h:
                h.write(b"foo")
            file_func(FilePath(filename))
            with open(filename, "rb") as h:
                assert h.read() == b"foobar"
        finally:
            os.unlink(filename)

        with pytest.raises(TypeError, match=r'.*__fspath__.*'):
            file_func(FilePath(42))
Пример #2
0
    def test_filename_from_fspath(self):

        class FilePath(object):
            def __init__(self, filename):
                self.filename = filename

            def __fspath__(self):
                return self.filename

        @loadfile(method=False, writable=True)
        def file_func(filething):
            fileobj = filething.fileobj
            assert fileobj.read(3) == b"foo"
            fileobj.seek(0, 2)
            fileobj.write(b"bar")

        filename = get_temp_empty()
        try:
            with open(filename, "wb") as h:
                h.write(b"foo")
            file_func(FilePath(filename))
            with open(filename, "rb") as h:
                assert h.read() == b"foobar"
        finally:
            os.unlink(filename)

        with pytest.raises(TypeError, match=r'.*__fspath__.*'):
            file_func(FilePath(42))
Пример #3
0
    def test_handle_readwrite_notsup(self):

        @loadfile(method=False, writable=True)
        def file_func(filething):
            fileobj = filething.fileobj
            assert fileobj.read(3) == b"foo"
            fileobj.seek(0, 2)
            fileobj.write(b"bar")

        # first a normal test
        filename = get_temp_empty()
        try:
            with open(filename, "wb") as h:
                h.write(b"foo")
            file_func(filename)
            with open(filename, "rb") as h:
                assert h.read() == b"foobar"
        finally:
            os.unlink(filename)

        # now we mock open to return raise EOPNOTSUPP in case of mixed mode.
        # things should still work since we edit the file in memory
        raised = []
        old_open = open

        def mock_open(name, mode, *args):
            if "+" in mode:
                raised.append(True)
                raise IOError(errno.EOPNOTSUPP, "nope")
            return old_open(name, mode, *args)

        builtins.open = mock_open
        try:
            filename = get_temp_empty()
            try:
                with open(filename, "wb") as h:
                    h.write(b"foo")
                file_func(filename)
                with open(filename, "rb") as h:
                    assert h.read() == b"foobar"
            finally:
                os.unlink(filename)
        finally:
            builtins.open = old_open

        assert raised
Пример #4
0
    def setUp(self):
        self.sample_new = get_temp_copy(SAMPLE)
        self.broken_new = get_temp_copy(BROKEN)

        tag = mutagen.apev2.APEv2()
        self.values = {
            "artist": "Joe Wreschnig\0unittest",
            "album": "Mutagen tests",
            "title": "Not really a song"
        }
        for k, v in self.values.items():
            tag[k] = v
        tag.save(self.sample_new)
        self.just_tag = get_temp_empty()
        tag.save(self.just_tag)
        self.tag_at_start = get_temp_empty()
        tag.save(self.tag_at_start)
        with open(self.tag_at_start, "ab") as fileobj:
            fileobj.write(b"tag garbage" * 1000)

        self.tag = mutagen.apev2.APEv2(self.sample_new)
Пример #5
0
    def test_PIC_in_23(self):
        filename = get_temp_empty(".mp3")

        try:
            with open(filename, "wb") as h:
                # contains a bad upgraded frame, 2.3 structure with 2.2 name.
                # PIC was upgraded to APIC, but mime was not
                h.write(b"ID3\x03\x00\x00\x00\x00\x08\x00PIC\x00\x00\x00"
                        b"\x00\x0b\x00\x00\x00JPG\x00\x03foo\x00\x42"
                        b"\x00" * 100)
            id3 = ID3(filename)
            self.assertEqual(id3.version, (2, 3, 0))
            self.assertTrue(id3.getall("APIC"))
            frame = id3.getall("APIC")[0]
            self.assertEqual(frame.mime, "image/jpeg")
            self.assertEqual(frame.data, b"\x42")
            self.assertEqual(frame.type, 3)
            self.assertEqual(frame.desc, "foo")
        finally:
            os.remove(filename)
Пример #6
0
    def test_PIC_in_23(self):
        filename = get_temp_empty(".mp3")

        try:
            with open(filename, "wb") as h:
                # contains a bad upgraded frame, 2.3 structure with 2.2 name.
                # PIC was upgraded to APIC, but mime was not
                h.write(b"ID3\x03\x00\x00\x00\x00\x08\x00PIC\x00\x00\x00"
                        b"\x00\x0b\x00\x00\x00JPG\x00\x03foo\x00\x42"
                        b"\x00" * 100)
            id3 = ID3(filename)
            self.assertEqual(id3.version, (2, 3, 0))
            self.assertTrue(id3.getall("APIC"))
            frame = id3.getall("APIC")[0]
            self.assertEqual(frame.mime, "image/jpeg")
            self.assertEqual(frame.data, b"\x42")
            self.assertEqual(frame.type, 3)
            self.assertEqual(frame.desc, "foo")
        finally:
            os.remove(filename)
Пример #7
0
 def get_named_file(self, content):
     filename = get_temp_empty()
     h = open(filename, "wb+")
     h.write(content)
     h.seek(0)
     return h
Пример #8
0
 def get_named_file(self, content):
     filename = get_temp_empty()
     h = open(filename, "wb+")
     h.write(content)
     h.seek(0)
     return h