Supports python 3.4
This commit is contained in:
parent
a70033e167
commit
57f7d212ff
3 changed files with 76 additions and 1 deletions
|
@ -1,6 +1,7 @@
|
||||||
language: python
|
language: python
|
||||||
sudo: false
|
sudo: false
|
||||||
python:
|
python:
|
||||||
|
- "3.4"
|
||||||
- "3.5"
|
- "3.5"
|
||||||
|
|
||||||
install:
|
install:
|
||||||
|
|
57
larigira/tests/test_commonpath.py
Normal file
57
larigira/tests/test_commonpath.py
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
from larigira.unused import old_commonpath
|
||||||
|
|
||||||
|
|
||||||
|
def test_same():
|
||||||
|
assert old_commonpath(['/foo/bar', '/foo/bar/']) == '/foo/bar'
|
||||||
|
|
||||||
|
|
||||||
|
def test_prefix():
|
||||||
|
assert old_commonpath(['/foo/bar', '/foo/zap/']) == '/foo'
|
||||||
|
assert old_commonpath(['/foo/bar/', '/foo/zap/']) == '/foo'
|
||||||
|
assert old_commonpath(['/foo/bar/', '/foo/zap']) == '/foo'
|
||||||
|
assert old_commonpath(['/foo/bar', '/foo/zap']) == '/foo'
|
||||||
|
|
||||||
|
|
||||||
|
try:
|
||||||
|
from os.path import commonpath
|
||||||
|
except ImportError:
|
||||||
|
pass # TODO: log the fact and clarify
|
||||||
|
else:
|
||||||
|
# these tests are only available on python >= 3.5. That's fine though, as
|
||||||
|
# our CI will perform validation of those cases to see if they match python
|
||||||
|
# behavior
|
||||||
|
@pytest.fixture(params=['a', 'a/', 'a/b', 'a/b/', 'a/b/c', ])
|
||||||
|
def relpath(request):
|
||||||
|
return request.param
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def abspath(relpath):
|
||||||
|
return '/' + relpath
|
||||||
|
|
||||||
|
@pytest.fixture(params=['', '/'])
|
||||||
|
def slashed_abspath(abspath, request):
|
||||||
|
return '%s%s' % (abspath, request.param)
|
||||||
|
slashed_abspath_b = slashed_abspath
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def abspath_couple(slashed_abspath, slashed_abspath_b):
|
||||||
|
return (slashed_abspath, slashed_abspath_b)
|
||||||
|
|
||||||
|
def test_abspath_match(abspath_couple):
|
||||||
|
assert commonpath(abspath_couple) == old_commonpath(abspath_couple)
|
||||||
|
|
||||||
|
@pytest.fixture(params=['', '/'])
|
||||||
|
def slashed_relpath(relpath, request):
|
||||||
|
s = '%s%s' % (relpath, request.param)
|
||||||
|
if s:
|
||||||
|
return s
|
||||||
|
slashed_relpath_b = slashed_relpath
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def relpath_couple(slashed_relpath, slashed_relpath_b):
|
||||||
|
return (slashed_relpath, slashed_relpath_b)
|
||||||
|
|
||||||
|
def test_relpath_match(relpath_couple):
|
||||||
|
assert commonpath(relpath_couple) == old_commonpath(relpath_couple)
|
|
@ -5,11 +5,28 @@ This component will look for files to be removed. There are some assumptions:
|
||||||
* MPD URIs are parsed, and only file:/// is supported
|
* MPD URIs are parsed, and only file:/// is supported
|
||||||
'''
|
'''
|
||||||
import os
|
import os
|
||||||
from os.path import commonpath, normpath
|
from os.path import normpath
|
||||||
import logging
|
import logging
|
||||||
import mpd
|
import mpd
|
||||||
|
|
||||||
|
|
||||||
|
def old_commonpath(directories):
|
||||||
|
if any(p for p in directories if p.startswith('/')) and \
|
||||||
|
any(p for p in directories if not p.startswith('/')):
|
||||||
|
raise ValueError("Can't mix absolute and relative paths")
|
||||||
|
norm_paths = [normpath(p) + os.path.sep for p in directories]
|
||||||
|
ret = os.path.dirname(os.path.commonprefix(norm_paths))
|
||||||
|
if len(ret) > 0 and ret == '/' * len(ret):
|
||||||
|
return '/'
|
||||||
|
return ret
|
||||||
|
|
||||||
|
|
||||||
|
try:
|
||||||
|
from os.path import commonpath
|
||||||
|
except ImportError:
|
||||||
|
commonpath = old_commonpath
|
||||||
|
|
||||||
|
|
||||||
class UnusedCleaner:
|
class UnusedCleaner:
|
||||||
def __init__(self, conf):
|
def __init__(self, conf):
|
||||||
self.conf = conf
|
self.conf = conf
|
||||||
|
|
Loading…
Reference in a new issue