Explorar el Código

Fix GitImportProcessor.commit_handler.

Jelmer Vernooij hace 14 años
padre
commit
7767833764
Se han modificado 2 ficheros con 47 adiciones y 3 borrados
  1. 12 3
      dulwich/fastexport.py
  2. 35 0
      dulwich/tests/test_fastexport.py

+ 12 - 3
dulwich/fastexport.py

@@ -27,7 +27,6 @@ from dulwich.objects import (
     Blob,
     Commit,
     Tag,
-    parse_timezone,
     )
 from fastimport import (
     commands,
@@ -132,8 +131,18 @@ class GitImportProcessor(processor.ImportProcessor):
     def commit_handler(self, cmd):
         """Process a CommitCommand."""
         commit = Commit()
-        commit.author = cmd.author
-        commit.committer = cmd.committer
+        if cmd.author is not None:
+            author = cmd.author
+        else:
+            author = cmd.committer
+        (author_name, author_email, author_timestamp, author_timezone) = author
+        (committer_name, committer_email, commit_timestamp, commit_timezone) = cmd.committer
+        commit.author = "%s <%s>" % (author_name, author_email)
+        commit.author_timezone = author_timezone
+        commit.author_time = author_timestamp
+        commit.committer = "%s <%s>" % (committer_name, committer_email)
+        commit.commit_timezone = commit_timezone
+        commit.commit_time = commit_timestamp
         commit.message = cmd.message
         commit.parents = []
         contents = {}

+ 35 - 0
dulwich/tests/test_fastexport.py

@@ -28,6 +28,9 @@ from dulwich.objects import (
     Commit,
     Tree,
     )
+from dulwich.repo import (
+    MemoryRepo,
+    )
 from dulwich.tests import (
     TestCase,
     TestSkipped,
@@ -35,6 +38,7 @@ from dulwich.tests import (
 
 
 class GitFastExporterTests(TestCase):
+    """Tests for the GitFastExporter tests."""
 
     def setUp(self):
         super(GitFastExporterTests, self).setUp()
@@ -78,3 +82,34 @@ data 3
 msg
 M 644 1 foo
 """, self.stream.getvalue())
+
+
+class GitImportProcessorTests(TestCase):
+    """Tests for the GitImportProcessor tests."""
+
+    def setUp(self):
+        super(GitImportProcessorTests, self).setUp()
+        self.repo = MemoryRepo()
+        try:
+            from dulwich.fastexport import GitImportProcessor
+        except ImportError:
+            raise TestSkipped("python-fastimport not available")
+        self.processor = GitImportProcessor(self.repo)
+
+    def test_commit_handler(self):
+        from fastimport import commands
+        cmd = commands.CommitCommand("refs/heads/foo", "mrkr",
+            ("Jelmer", "jelmer@samba.org", 432432432.0, 3600),
+            ("Jelmer", "jelmer@samba.org", 432432432.0, 3600),
+            "FOO", None, [], [])
+        self.processor.commit_handler(cmd)
+        commit = self.repo[self.processor.last_commit]
+        self.assertEquals("Jelmer <jelmer@samba.org>", commit.author)
+        self.assertEquals("Jelmer <jelmer@samba.org>", commit.committer)
+        self.assertEquals("FOO", commit.message)
+        self.assertEquals([], commit.parents)
+        self.assertEquals(432432432.0, commit.commit_time)
+        self.assertEquals(432432432.0, commit.author_time)
+        self.assertEquals(3600, commit.commit_timezone)
+        self.assertEquals(3600, commit.author_timezone)
+        self.assertEquals(commit, self.repo["refs/heads/foo"])