Browse Source

Fix failing test-cases on windows.

Koen Martens 8 years ago
parent
commit
a9531cf413

+ 1 - 1
dulwich/refs.py

@@ -686,7 +686,7 @@ class DiskRefsContainer(RefsContainer):
 
 def _split_ref_line(line):
     """Split a single ref line into a tuple of SHA1 and name."""
-    fields = line.rstrip(b'\n').split(b' ')
+    fields = line.rstrip(b'\n\r').split(b' ')
     if len(fields) != 2:
         raise PackedRefsException("invalid ref line %r" % line)
     sha, name = fields

+ 12 - 2
dulwich/tests/compat/test_repository.py

@@ -26,6 +26,8 @@ from itertools import chain
 import os
 import tempfile
 
+import sys
+
 from dulwich.objects import (
     hex_to_sha,
     )
@@ -179,13 +181,21 @@ class WorkingTreeTestCase(ObjectStoreTestCase):
         worktrees = self._parse_worktree_list(output)
         self.assertEqual(len(worktrees), self._number_of_working_tree)
         self.assertEqual(worktrees[0][1], '(bare)')
-        self.assertEqual(worktrees[0][0], self._mainworktree_repo.path)
+        if sys.platform == 'win32':
+            # on windows, paths are case insensitive, and native git reports paths with '/' as seperator
+            self.assertEqual(os.path.normpath(worktrees[0][0]).lower(), self._mainworktree_repo.path.lower())
+        else:
+            self.assertEqual(worktrees[0][0], self._mainworktree_repo.path)
 
         output = run_git_or_fail(['worktree', 'list'], cwd=self._mainworktree_repo.path)
         worktrees = self._parse_worktree_list(output)
         self.assertEqual(len(worktrees), self._number_of_working_tree)
         self.assertEqual(worktrees[0][1], '(bare)')
-        self.assertEqual(worktrees[0][0], self._mainworktree_repo.path)
+        if sys.platform == 'win32':
+            # on windows, paths are case insensitive, and native git reports paths with '/' as seperator
+            self.assertEqual(os.path.normpath(worktrees[0][0]).lower(), self._mainworktree_repo.path.lower())
+        else:
+            self.assertEqual(worktrees[0][0], self._mainworktree_repo.path)
 
 
 class InitNewWorkingDirectoryTestCase(WorkingTreeTestCase):

+ 3 - 2
dulwich/tests/test_refs.py

@@ -327,8 +327,9 @@ class DiskRefsContainerTests(RefsContainerTests, TestCase):
 
         # ensure HEAD was not modified
         f = open(os.path.join(self._refs.path, 'HEAD'), 'rb')
-        self.assertEqual(b'ref: refs/heads/master', next(iter(f)).rstrip(b'\n'))
+        v = next(iter(f)).rstrip(b'\n\r')
         f.close()
+        self.assertEqual(b'ref: refs/heads/master', v)
 
         # ensure the symbolic link was written through
         f = open(os.path.join(self._refs.path, 'refs', 'heads', 'master'), 'rb')
@@ -450,7 +451,7 @@ class DiskRefsContainerTests(RefsContainerTests, TestCase):
             encoded_ref = u'refs/tags/schön'.encode(sys.getfilesystemencoding())
         except UnicodeEncodeError:
             raise SkipTest("filesystem encoding doesn't support special character")
-        p = os.path.join(self._repo.path, 'refs', 'tags', 'schön')
+        p = os.path.join(self._repo.path, 'refs', 'tags', u'schön')
         with open(p, 'w') as f:
             f.write('00' * 20)
 

+ 6 - 1
dulwich/tests/test_server.py

@@ -25,6 +25,8 @@ import os
 import shutil
 import tempfile
 
+import sys
+
 from dulwich.errors import (
     GitProtocolError,
     NotGitRepository,
@@ -993,7 +995,10 @@ class FileSystemBackendTests(TestCase):
         self.path = tempfile.mkdtemp()
         self.addCleanup(shutil.rmtree, self.path)
         self.repo = Repo.init(self.path)
-        self.backend = FileSystemBackend()
+        if sys.platform == 'win32':
+            self.backend = FileSystemBackend(self.path[0] + ':' + os.sep)
+        else:
+            self.backend = FileSystemBackend()
 
     def test_nonexistant(self):
         self.assertRaises(NotGitRepository,