File: test_issues.py

package info (click to toggle)
eyed3 0.9.7-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,380 kB
  • sloc: python: 13,282; makefile: 411; sh: 69
file content (77 lines) | stat: -rw-r--r-- 2,959 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
from pathlib import Path
import pytest
import eyed3
from eyed3.id3 import Tag, ID3_V2_3, ID3_V2_4
from . import DATA_D


@pytest.mark.skipif(not Path(DATA_D).exists(), reason="test requires data files")
def testIssue76(audiofile):
    """
    Writing lyrics deletes TSOP tag (ARTISTSORT)
    https://github.com/nicfit/eyeD3/issues/76
    """
    tag = audiofile.initTag(ID3_V2_4)
    tag.setTextFrame("TPE1", "Confederacy of Ruined Lives")
    tag.setTextFrame("TPE2", "Take as needed for pain")
    tag.setTextFrame("TSOP", "In the name of suffering")
    tag.setTextFrame("TSO2", "Dope sick")
    tag.save()

    audiofile = eyed3.load(audiofile.path)
    tag = audiofile.tag
    assert (set(tag.frame_set.keys()) ==
            set([b"TPE1", b"TPE2", b"TSOP", b"TSO2"]))
    assert tag.getTextFrame("TSO2") == "Dope sick"
    assert tag.getTextFrame("TSOP") == "In the name of suffering"
    assert tag.getTextFrame("TPE2") == "Take as needed for pain"
    assert tag.getTextFrame("TPE1") == "Confederacy of Ruined Lives"

    audiofile.tag.lyrics.set("some lyrics")
    audiofile = eyed3.load(audiofile.path)
    tag = audiofile.tag
    assert (set(tag.frame_set.keys()) ==
            set([b"TPE1", b"TPE2", b"TSOP", b"TSO2"]))
    assert tag.getTextFrame("TSO2") == "Dope sick"
    assert tag.getTextFrame("TSOP") == "In the name of suffering"
    assert tag.getTextFrame("TPE2") == "Take as needed for pain"
    assert tag.getTextFrame("TPE1") == "Confederacy of Ruined Lives"

    # Convert to v2.3 and verify conversions
    tag.save(version=ID3_V2_3)
    audiofile = eyed3.load(audiofile.path)
    tag = audiofile.tag
    assert (set(tag.frame_set.keys()) ==
            set([b"TPE1", b"TPE2", b"XSOP", b"TSO2"]))
    assert tag.getTextFrame("TSO2") == "Dope sick"
    assert tag.getTextFrame("TPE2") == "Take as needed for pain"
    assert tag.getTextFrame("TPE1") == "Confederacy of Ruined Lives"
    assert tag.frame_set[b"XSOP"][0].text == "In the name of suffering"

    # Convert to v2.4 and verify conversions
    tag.save(version=ID3_V2_4)
    audiofile = eyed3.load(audiofile.path)
    tag = audiofile.tag
    assert (set(tag.frame_set.keys()) ==
            set([b"TPE1", b"TPE2", b"TSOP", b"TSO2"]))
    assert tag.getTextFrame("TSO2") == "Dope sick"
    assert tag.getTextFrame("TPE2") == "Take as needed for pain"
    assert tag.getTextFrame("TPE1") == "Confederacy of Ruined Lives"
    assert tag.getTextFrame("TSOP") == "In the name of suffering"


def test_issue382_genres(audiofile):
    """Tags always written in v2.3 format, always including ID.
    https://github.com/nicfit/eyeD3/issues/382
    """
    tag = Tag()
    tag.genre = "Dubstep"
    assert tag.genre.id == 189
    assert tag.genre.name == "Dubstep"

    audiofile.tag = tag
    tag.save()

    new_audiofile = eyed3.load(audiofile.path)
    # Prior versions would be `(189)Dubstep`, now no index.
    assert new_audiofile.tag.frame_set[b"TCON"][0].text == "Dubstep"