summaryrefslogtreecommitdiff
path: root/tests/test_GitVfs.py
diff options
context:
space:
mode:
authorGuido Günther <agx@sigxcpu.org>2013-04-08 10:20:23 +0200
committerGuido Günther <agx@sigxcpu.org>2013-04-13 14:26:24 +0200
commit8fd5ec31272984a7fcff628c50b4c22d7e4107ec (patch)
tree412e290a6fcd4000a3671b8e22e3014d67aaa22d /tests/test_GitVfs.py
parent6eb2ddcdd4909621e89d5b0c1360eb68bc73f901 (diff)
Add minimal vfs interface
so we can access blobs in git as file like objects
Diffstat (limited to 'tests/test_GitVfs.py')
-rw-r--r--tests/test_GitVfs.py55
1 files changed, 55 insertions, 0 deletions
diff --git a/tests/test_GitVfs.py b/tests/test_GitVfs.py
new file mode 100644
index 0000000..c4e2694
--- /dev/null
+++ b/tests/test_GitVfs.py
@@ -0,0 +1,55 @@
+# vim: set fileencoding=utf-8 :
+
+"""
+Test L{gbp.git.GitVfs}
+"""
+
+import os
+import gbp.log
+
+from . import context
+
+gbp.log.setup(color=False, verbose=True)
+
+def test_read():
+ repo_dir = context.new_tmpdir(__name__)
+ """
+ Create a repository
+
+ Methods tested:
+ - L{gbp.git.GitVfs.open}
+ - L{gbp.git._File.readline}
+ - L{gbp.git._File.readlines}
+ - L{gbp.git._File.read}
+ - L{gbp.git._File.close}
+
+ >>> import os, gbp.git.vfs
+ >>> repo = gbp.git.GitRepository.create(str(repo_dir))
+ >>> f = file(os.path.join(repo.path, 'foo.txt'), 'w')
+ >>> content = 'al pha\\na\\nb\\nc'
+ >>> f.write('al pha\\na\\nb\\nc')
+ >>> f.close()
+ >>> repo.add_files(repo.path, force=True)
+ >>> repo.commit_all(msg="foo")
+ >>> vfs = gbp.git.vfs.GitVfs(repo, 'HEAD')
+ >>> gf = vfs.open('foo.txt')
+ >>> gf.readline()
+ 'al pha\\n'
+ >>> gf.readline()
+ 'a\\n'
+ >>> gf.readlines()
+ ['b\\n', 'c']
+ >>> gf.readlines()
+ []
+ >>> gf.readline()
+ ''
+ >>> gf.readline()
+ ''
+ >>> gbp.git.vfs.GitVfs(repo, 'HEAD').open('foo.txt').read() == content
+ True
+ >>> gf = vfs.open('doesnotexist')
+ Traceback (most recent call last):
+ ...
+ IOError: can't get HEAD:doesnotexist: fatal: Path 'doesnotexist' does not exist in 'HEAD'
+ >>> context.teardown()
+ """