Commit 8fa08bd1 authored by FichteFoll's avatar FichteFoll

Adjust tests to check for case-insensitivity

Some file systems are case-insensitive, thus making differently cased
package names non-unique.

Also made me aware of the issue fixed in
fc6448ff.

Partly addresses https://github.com/wbond/package_control/issues/1028.
parent fc6448ff
......@@ -125,6 +125,22 @@ def generate_test_methods(cls, stream):
return cls
# Very limited subclassing of dict class, which just suits our needs
class CaseInsensitiveDict(dict):
@classmethod
def _k(cls, key):
return key.lower() if isinstance(key, str_cls) else key
def __getitem__(self, key):
return super(CaseInsensitiveDict, self).__getitem__(self._k(key))
def __setitem__(self, key, value):
super(CaseInsensitiveDict, self).__setitem__(self._k(key), value)
def __contains__(self, key):
return super(CaseInsensitiveDict, self).__contains__(self._k(key))
def get_package_name(data):
"""Get "name" from a package with a workaround when it's not defined.
......@@ -147,9 +163,10 @@ class TestContainer(object):
@classmethod
def setUpClass(cls):
cls.package_names = dict()
cls.previous_package_names = dict()
cls.dependency_names = dict()
cls.package_names = CaseInsensitiveDict()
cls.dependency_names = CaseInsensitiveDict()
# tuple of (prev_name, include, name); prev_name for case sensitivity
cls.previous_package_names = CaseInsensitiveDict()
rel_b_reg = r'''^ (https:// github\.com/ [^/]+/ [^/]+
|https:// bitbucket\.org/ [^/]+/ [^/]+
......@@ -216,11 +233,17 @@ class TestContainer(object):
self.fail("Package names must be unique: %s, previously "
"occured in %s"
% (pname, self.package_names[pname]))
elif pname in self.previous_package_names:
elif (
pname in self.previous_package_names
# check casing
and pname == self.previous_package_names[pname][0]
):
print(pname, self.previous_package_names[pname][0])
self.fail("Package names can not occur as a name and as a "
"previous_name: %s, previously occured as "
"previous_name in %s"
% (pname, self.previous_package_names[pname]))
"previous_name in %s: %s"
% (pname, self.previous_package_names[pname][1],
self.previous_package_names[pname][2]))
else:
self.package_names[pname] = include
repo_package_names.append(pname)
......@@ -291,7 +314,7 @@ class TestContainer(object):
% (prev_name, self.package_names[prev_name]))
else:
self.previous_package_names[prev_name] = (
"%s: %s" % (include, name) # include package hint
(prev_name, include, name)
)
# Test for invalid characters (on file systems)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment