anki/pylib/tests/test_media.py

81 lines
2.5 KiB
Python
Raw Normal View History

# coding: utf-8
import os
import tempfile
from .shared import getEmptyCol, testDir
# copying files to media folder
def test_add():
2014-06-03 10:38:47 +02:00
d = getEmptyCol()
dir = tempfile.mkdtemp(prefix="anki")
path = os.path.join(dir, "foo.jpg")
with open(path, "w") as f:
f.write("hello")
# new file, should preserve name
assert d.media.addFile(path) == "foo.jpg"
# adding the same file again should not create a duplicate
assert d.media.addFile(path) == "foo.jpg"
2020-01-28 12:45:26 +01:00
# but if it has a different sha1, it should
with open(path, "w") as f:
f.write("world")
2020-01-28 12:45:26 +01:00
assert d.media.addFile(path) == "foo-7c211433f02071597741e6ff5a8ea34789abbf43.jpg"
2019-12-25 05:18:34 +01:00
def test_strings():
2014-06-03 10:38:47 +02:00
d = getEmptyCol()
mf = d.media.filesInStr
mid = list(d.models.models.keys())[0]
assert mf(mid, "aoeu") == []
assert mf(mid, "aoeu<img src='foo.jpg'>ao") == ["foo.jpg"]
assert mf(mid, "aoeu<img src='foo.jpg' style='test'>ao") == ["foo.jpg"]
assert mf(mid, "aoeu<img src='foo.jpg'><img src=\"bar.jpg\">ao") == [
2019-12-25 05:18:34 +01:00
"foo.jpg",
"bar.jpg",
]
assert mf(mid, "aoeu<img src=foo.jpg style=bar>ao") == ["foo.jpg"]
assert mf(mid, "<img src=one><img src=two>") == ["one", "two"]
2019-12-25 05:18:34 +01:00
assert mf(mid, 'aoeu<img src="foo.jpg">ao') == ["foo.jpg"]
assert mf(mid, 'aoeu<img src="foo.jpg"><img class=yo src=fo>ao') == [
"foo.jpg",
"fo",
]
assert mf(mid, "aou[sound:foo.mp3]aou") == ["foo.mp3"]
sp = d.media.strip
assert sp("aoeu") == "aoeu"
assert sp("aoeu[sound:foo.mp3]aoeu") == "aoeuaoeu"
assert sp("a<img src=yo>oeu") == "aoeu"
es = d.media.escapeImages
assert es("aoeu") == "aoeu"
assert es("<img src='http://foo.com'>") == "<img src='http://foo.com'>"
assert es('<img src="foo bar.jpg">') == '<img src="foo%20bar.jpg">'
2019-12-25 05:18:34 +01:00
def test_deckIntegration():
2014-06-03 10:38:47 +02:00
d = getEmptyCol()
# create a media dir
d.media.dir()
# put a file into it
file = str(os.path.join(testDir, "support/fake.png"))
d.media.addFile(file)
# add a note which references it
f = d.newNote()
2019-12-25 05:18:34 +01:00
f["Front"] = "one"
f["Back"] = "<img src='fake.png'>"
d.addNote(f)
# and one which references a non-existent file
f = d.newNote()
2019-12-25 05:18:34 +01:00
f["Front"] = "one"
f["Back"] = "<img src='fake2.png'>"
d.addNote(f)
# and add another file which isn't used
with open(os.path.join(d.media.dir(), "foo.jpg"), "w") as f:
f.write("test")
# check media
2020-02-10 08:58:54 +01:00
d.close()
ret = d.media.check()
2020-02-10 08:58:54 +01:00
d.reopen()
assert ret.missing == ["fake2.png"]
assert ret.unused == ["foo.jpg"]