Преглед на файлове

Add function for validation ntfs path elements.

Jelmer Vernooij преди 10 години
родител
ревизия
2de065df43
променени са 2 файла, в които са добавени 30 реда и са изтрити 0 реда
  1. 9 0
      dulwich/index.py
  2. 21 0
      dulwich/tests/test_index.py

+ 9 - 0
dulwich/index.py

@@ -438,6 +438,15 @@ def validate_path_element_default(element):
     return element.lower() not in INVALID_DOTNAMES
 
 
+def validate_path_element_ntfs(element):
+    stripped = element.rstrip(". ").lower()
+    if stripped in INVALID_DOTNAMES:
+        return False
+    if stripped == "git~1":
+        return False
+    return True
+
+
 def validate_path(path, element_validator=validate_path_element_default):
     """Default path validator that just checks for .git/."""
     parts = path.split("/")

+ 21 - 0
dulwich/tests/test_index.py

@@ -35,6 +35,8 @@ from dulwich.index import (
     index_entry_from_stat,
     read_index,
     read_index_dict,
+    validate_path_element_default,
+    validate_path_element_ntfs,
     write_cache_time,
     write_index,
     write_index_dict,
@@ -413,3 +415,22 @@ class GetUnstagedChangesTests(TestCase):
         changes = get_unstaged_changes(repo.open_index(), repo_dir)
 
         self.assertEqual(list(changes), ['foo1'])
+
+
+class TestValidatePathElement(TestCase):
+
+    def test_default(self):
+        self.assertTrue(validate_path_element_default("bla"))
+        self.assertTrue(validate_path_element_default(".bla"))
+        self.assertFalse(validate_path_element_default(".git"))
+        self.assertFalse(validate_path_element_default(".giT"))
+        self.assertFalse(validate_path_element_default(".."))
+        self.assertTrue(validate_path_element_default("git~1"))
+
+    def test_ntfs(self):
+        self.assertTrue(validate_path_element_ntfs("bla"))
+        self.assertTrue(validate_path_element_ntfs(".bla"))
+        self.assertFalse(validate_path_element_ntfs(".git"))
+        self.assertFalse(validate_path_element_ntfs(".giT"))
+        self.assertFalse(validate_path_element_ntfs(".."))
+        self.assertFalse(validate_path_element_ntfs("git~1"))