Add some basic tests for fastexport.
authorJelmer Vernooij <jelmer@samba.org>
Thu, 15 Apr 2010 14:55:47 +0000 (16:55 +0200)
committerDave Borowitz <dborowitz@google.com>
Fri, 16 Apr 2010 18:56:53 +0000 (11:56 -0700)
dulwich/fastexport.py
dulwich/tests/__init__.py
dulwich/tests/test_fastexport.py [new file with mode: 0644]

index 168b047c70a887dcac0ab377b7b412bf68a3f4cd..c05ea4d65cc2b73e7d6a4dfc81aad556ca73b830 100644 (file)
@@ -25,6 +25,7 @@ from dulwich.objects import format_timezone
 import stat
 
 class FastExporter(object):
+    """Generate a fast-export output stream for Git objects."""
 
     def __init__(self, outf, store):
         self.outf = outf
@@ -34,7 +35,8 @@ class FastExporter(object):
     def export_blob(self, blob, i):
         self.outf.write("blob\nmark :%s\n" % i)
         self.outf.write("data %s\n" % blob.raw_length())
-        self.outf.write(blob.as_raw_string())
+        for chunk in blob.as_raw_chunks():
+            self.outf.write(chunk)
         self.outf.write("\n")
 
     def export_commit(self, commit, branchname):
index 4dadce411ed16725bd0e541ec67d19513a712d19..59ee066b72ed58d035e66ef610ab6d5f760144d7 100644 (file)
@@ -29,6 +29,7 @@ from nose import SkipTest as TestSkipped
 def test_suite():
     names = [
         'client',
+        'fastexport',
         'file',
         'index',
         'lru_cache',
diff --git a/dulwich/tests/test_fastexport.py b/dulwich/tests/test_fastexport.py
new file mode 100644 (file)
index 0000000..6962f33
--- /dev/null
@@ -0,0 +1,42 @@
+# test_fastexport.py -- Fast export/import functionality
+# Copyright (C) 2010 Jelmer Vernooij <jelmer@samba.org>
+# 
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2
+# of the License or (at your option) any later version of 
+# the License.
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+# MA  02110-1301, USA.
+
+from cStringIO import StringIO
+
+from dulwich.fastexport import FastExporter
+from dulwich.object_store import MemoryObjectStore
+from dulwich.objects import Blob
+
+from unittest import TestCase
+
+
+class FastExporterTests(TestCase):
+
+    def setUp(self):
+        super(FastExporterTests, self).setUp()
+        self.store = MemoryObjectStore()
+        self.stream = StringIO()
+        self.fastexporter = FastExporter(self.stream, self.store)
+
+    def test_export_blob(self):
+        b = Blob()
+        b.data = "fooBAR"
+        self.fastexporter.export_blob(b, 0)
+        self.assertEquals('blob\nmark :0\ndata 6\nfooBAR\n',
+            self.stream.getvalue())