本文整理汇总了Python中senf.fsnative函数的典型用法代码示例。如果您正苦于以下问题:Python fsnative函数的具体用法?Python fsnative怎么用?Python fsnative使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了fsnative函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: init_test_environ
def init_test_environ():
"""This needs to be called before any test can be run.
Before exiting the process call exit_test_environ() to clean up
any resources created.
"""
global _TEMP_DIR, _BUS_INFO, _VDISPLAY, _faulthandler_fobj
# create a user dir in /tmp and set env vars
_TEMP_DIR = tempfile.mkdtemp(prefix=fsnative(u"QL-TEST-"))
# needed for dbus/dconf
runtime_dir = tempfile.mkdtemp(prefix=fsnative(u"RUNTIME-"), dir=_TEMP_DIR)
os.chmod(runtime_dir, 0o700)
environ["XDG_RUNTIME_DIR"] = runtime_dir
# force the old cache dir so that GStreamer can re-use the GstRegistry
# cache file
environ["XDG_CACHE_HOME"] = xdg_get_cache_home()
# GStreamer will update the cache if the environment has changed
# (in Gst.init()). Since it takes 0.5s here and doesn't add much,
# disable it. If the registry cache is missing it will be created
# despite this setting.
environ["GST_REGISTRY_UPDATE"] = fsnative(u"no")
# set HOME and remove all XDG vars that default to it if not set
home_dir = tempfile.mkdtemp(prefix=fsnative(u"HOME-"), dir=_TEMP_DIR)
environ["HOME"] = home_dir
# set to new default
environ.pop("XDG_DATA_HOME", None)
if xvfbwrapper is not None:
_VDISPLAY = xvfbwrapper.Xvfb()
_VDISPLAY.start()
_BUS_INFO = None
if os.name != "nt" and "DBUS_SESSION_BUS_ADDRESS" in environ:
_BUS_INFO = dbus_launch_user()
environ.update(_BUS_INFO)
quodlibet.init(no_translations=True, no_excepthook=True)
quodlibet.app.name = "QL Tests"
# to get around pytest silencing
_faulthandler_fobj = os.fdopen(os.dup(sys.__stderr__.fileno()), "w")
faulthandler.enable(_faulthandler_fobj)
# try to make things the same in case a different locale is active.
# LANG for gettext, setlocale for number formatting etc.
# Note: setlocale has to be called after Gtk.init()
try:
if os.name != "nt":
environ["LANG"] = locale.setlocale(locale.LC_ALL, "en_US.UTF-8")
else:
environ["LANG"] = "en_US.utf8"
locale.setlocale(locale.LC_ALL, "english")
except locale.Error:
pass
示例2: test_types
def test_types(self):
from quodlibet.util.path import normalize_path
assert isinstance(normalize_path(fsnative(u"foo"), False), fsnative)
assert isinstance(normalize_path("foo", False), fsnative)
assert isinstance(normalize_path(fsnative(u"foo"), True), fsnative)
assert isinstance(normalize_path("foo", True), fsnative)
示例3: test_sanitize_py2_fixup
def test_sanitize_py2_fixup(self):
if PY3:
return
old = dict.__new__(AudioFile)
dict.__init__(old, {
b"foo": b"bar",
u"öäü": b"bla",
"~#num": u"1",
"~#num2": u"1.25",
"~#num3": u"bla",
"~filename": u"text",
"~mountpoint": b"bytes",
"~somethingdifferent": b"hello",
})
fixed = {
b"foo": u"bar",
u"öäü": u"bla",
"~#num": 1,
"~#num2": 1.25,
"~#num3": 0,
"~filename": fsnative(u"text"),
"~mountpoint": fsnative(u"bytes"),
"~somethingdifferent": u"hello",
}
data = dump_audio_files([old])
new = load_audio_files(data)
assert dict(new[0]) == fixed
for v1, v2 in zip(sorted(new[0].values()), sorted(fixed.values())):
assert type(v1) is type(v2)
示例4: test_disctrack
def test_disctrack(self):
pat = TagsFromPattern('<discnumber><tracknumber>. <title>')
self.assertEquals(pat.match_path(fsnative(u'101. T1.ogg')),
dict(discnumber='1', tracknumber='01', title='T1'))
self.assertEquals(pat.match_path(fsnative(u'1318. T18.ogg')),
dict(discnumber='13', tracknumber='18', title='T18'))
self.assertEquals(pat.match_path(fsnative(u'24. T4.ogg')),
dict(discnumber='2', tracknumber='4', title='T4'))
示例5: test_selection_set_songs
def test_selection_set_songs(self):
song = AudioFile()
song["~filename"] = fsnative(u"foo")
sel = MockSelData()
qltk.selection_set_songs(sel, [song])
assert sel.data == fsn2bytes(fsnative(u"foo"), "utf-8")
assert qltk.selection_get_filenames(sel) == [fsnative(u"foo")]
示例6: sanitize
def sanitize(self, filename=None):
"""Fill in metadata defaults. Find ~mountpoint, ~#mtime, ~#filesize
and ~#added. Check for null bytes in tags.
Does not raise.
"""
# Replace nulls with newlines, trimming zero-length segments
for key, val in listitems(self):
self[key] = val
if isinstance(val, string_types) and '\0' in val:
self[key] = '\n'.join(filter(lambda s: s, val.split('\0')))
# Remove unnecessary defaults
if key in NUMERIC_ZERO_DEFAULT and val == 0:
del self[key]
if filename:
self["~filename"] = filename
elif "~filename" not in self:
raise ValueError("Unknown filename!")
assert isinstance(self["~filename"], fsnative)
if self.is_file:
self["~filename"] = normalize_path(
self["~filename"], canonicalise=True)
# Find mount point (terminating at "/" if necessary)
head = self["~filename"]
while "~mountpoint" not in self:
head, tail = os.path.split(head)
# Prevent infinite loop without a fully-qualified filename
# (the unit tests use these).
head = head or fsnative(u"/")
if ismount(head):
self["~mountpoint"] = head
else:
self["~mountpoint"] = fsnative(u"/")
# Fill in necessary values.
self.setdefault("~#added", int(time.time()))
# For efficiency, do a single stat here. See Issue 504
try:
stat = os.stat(self['~filename'])
self["~#mtime"] = stat.st_mtime
self["~#filesize"] = stat.st_size
# Issue 342. This is a horrible approximation (due to headers) but
# on FLACs, the most common case, this should be close enough
if "~#bitrate" not in self:
try:
# kbps = bytes * 8 / seconds / 1000
self["~#bitrate"] = int(stat.st_size /
(self["~#length"] * (1000 / 8)))
except (KeyError, ZeroDivisionError):
pass
except OSError:
self["~#mtime"] = 0
示例7: test_sort_albums
def test_sort_albums(self):
# Make sure we have more than one album, one having a null date
f = AF({"~filename": fsnative(u"/1"), "album": "one"})
f2 = AF({"~filename": fsnative(u"/2"), "album": "one"})
f3 = AF({"~filename": fsnative(u"/3"), "album": "two", "date": "2009"})
f4 = AF({"~filename": fsnative(u"/4")})
albums, count = _sort_albums([f, f2, f3, f4])
self.failUnlessEqual(count, 1)
self.failUnlessEqual(len(albums), 2)
示例8: test_uri2fsn
def test_uri2fsn(self):
if os.name != "nt":
path = uri2fsn("file:///home/piman/cr%21azy")
self.assertTrue(isinstance(path, fsnative))
self.assertEqual(path, fsnative(u"/home/piman/cr!azy"))
else:
path = uri2fsn("file:///C:/foo")
self.assertTrue(isinstance(path, fsnative))
self.assertEqual(path, fsnative(u"C:\\foo"))
示例9: atomic_save
def atomic_save(filename, mode):
"""Try to replace the content of a file in the safest way possible.
A temporary file will be created in the same directory where the
replacement data can be written into.
After writing is done the data will be flushed to disk and the original
file replaced atomically.
In case of an error this raises IOError and OSError and the original file
will be untouched. In case the computer crashes or any other
non-recoverable error happens the temporary file will be left behind and
has to be deleted manually.
with atomic_save("config.cfg", "wb") as f:
f.write(data)
"""
assert isinstance(filename, fsnative)
dir_ = os.path.dirname(filename)
basename = os.path.basename(filename)
fileobj = tempfile.NamedTemporaryFile(
mode=mode, dir=dir_,
prefix=basename + fsnative(u"_"), suffix=fsnative(u".tmp"),
delete=False)
try:
yield fileobj
fileobj.flush()
fileno = fileobj.fileno()
if os.name != "nt" and hasattr(fcntl, "F_FULLFSYNC"):
# on OSX fsync doesn't sync all the way..
# https://lists.apple.com/archives/darwin-dev/2005/Feb/msg00072.html
# https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man2/fsync.2.html
fcntl.fcntl(fileno, fcntl.F_FULLFSYNC)
else:
# on linux fsync goes all the way by default
# http://linux.die.net/man/2/fsync
os.fsync(fileno)
fileobj.close()
if os.name == "nt":
_windows_rename(fileobj.name, filename)
else:
os.rename(fileobj.name, filename)
except:
try:
os.unlink(fileobj.name)
except OSError:
pass
raise
finally:
fileobj.close()
示例10: test_conv
def test_conv(self):
empty = fsnative(u"")
v = self.c.filter(empty, fsnative(u"foobar baz"))
self.failUnlessEqual(v, fsnative(u"foobar baz"))
self.failUnless(isinstance(v, fsnative))
v = self.c.filter(empty, fsnative(u"Foobar.BAZ"))
self.failUnlessEqual(v, fsnative(u"foobar.baz"))
self.failUnless(isinstance(v, fsnative))
示例11: test_roundtrip
def test_roundtrip(self):
if os.name == "nt":
paths = [u"C:\\öäü.txt"]
else:
paths = [u"/öäü.txt", u"/a/foo/bar", u"/a/b/foo/bar"]
for source in paths:
path = uri2fsn(fsn2uri(fsnative(source)))
self.assertTrue(isinstance(path, fsnative))
self.assertEqual(path, fsnative(source))
示例12: test_fsn2uri
def test_fsn2uri(self):
if os.name != "nt":
uri = fsn2uri(fsnative(u"/öäü.txt"))
self.assertEqual(uri, u"file:///%C3%B6%C3%A4%C3%BC.txt")
else:
uri = fsn2uri(fsnative(u"C:\\öäü.txt"))
self.assertEqual(
uri, "file:///C:/%C3%B6%C3%A4%C3%BC.txt")
self.assertEqual(
fsn2uri(u"C:\\SomeDir\xe4"), "file:///C:/SomeDir%C3%A4")
示例13: test_ends_with_dots_or_spaces
def test_ends_with_dots_or_spaces(self):
empty = fsnative(u"")
v = self.c.filter(empty, fsnative(u'foo. . '))
self.failUnlessEqual(v, fsnative(u"foo. ._"))
self.assertTrue(isinstance(v, fsnative))
if os.name == "nt":
self.failUnlessEqual(
self.c.filter(empty, u'foo. \\bar .'), u"foo._\\bar _")
else:
self.failUnlessEqual(
self.c.filter(empty, u'foo. /bar .'), "foo._/bar _")
示例14: set_scan_dirs
def set_scan_dirs(dirs):
"""Saves a list of fs paths which should be scanned
Args:
list
"""
assert all(isinstance(d, fsnative) for d in dirs)
if is_windows():
joined = fsnative(u":").join(dirs)
else:
joined = join_escape(dirs, fsnative(u":"))
config.setbytes("settings", "scan", fsn2bytes(joined, "utf-8"))
示例15: test_embedded_special_cover_words
def test_embedded_special_cover_words(self):
"""Tests that words incidentally containing embedded "special" words
album keywords (e.g. cover, disc, back) don't trigger
See Issue 818"""
song = AudioFile({
"~filename": fsnative(os.path.join(self.dir, u"asong.ogg")),
"album": "foobar",
"title": "Ode to Baz",
"artist": "Q-Man",
})
data = [('back.jpg', False),
('discovery.jpg', False),
("Pharell - frontin'.jpg", False),
('nickelback - Curb.jpg', False),
('foobar.jpg', True),
('folder.jpg', True), # Though this order is debatable
('Q-Man - foobar.jpg', True),
('Q-man - foobar (cover).jpg', True)]
for fn, should_find in data:
f = self.add_file(fn)
cover = self._find_cover(song)
if cover:
actual = os.path.abspath(cover.name)
assert path_equal(
actual, f, "\"%s\" should trump \"%s\"" % (f, actual))
else:
self.failIf(should_find, msg="Couldn't find %s for %s" %
(f, song("~filename")))