summaryrefslogtreecommitdiffstats
path: root/tests/units/test_tree_ops.rb
diff options
context:
space:
mode:
Diffstat (limited to 'tests/units/test_tree_ops.rb')
-rw-r--r--tests/units/test_tree_ops.rb106
1 files changed, 106 insertions, 0 deletions
diff --git a/tests/units/test_tree_ops.rb b/tests/units/test_tree_ops.rb
new file mode 100644
index 0000000..7dba642
--- /dev/null
+++ b/tests/units/test_tree_ops.rb
@@ -0,0 +1,106 @@
+#!/usr/bin/env ruby
+
+require File.dirname(__FILE__) + '/../test_helper'
+
+class TestTreeOps < Test::Unit::TestCase
+
+ def setup
+ set_file_paths
+ @git = Git.open(@wdir)
+ end
+
+ def test_read_tree
+
+ in_temp_dir do
+ g = Git.clone(@wbare, 'test')
+
+ g.chdir do
+ g.branch('testbranch1').in_branch('tb commit 1') do
+ new_file('test-file1', 'blahblahblah2')
+ g.add
+ true
+ end
+
+ g.branch('testbranch2').in_branch('tb commit 2') do
+ new_file('test-file2', 'blahblahblah3')
+ g.add
+ true
+ end
+
+ g.branch('testbranch3').in_branch('tb commit 3') do
+ new_file('test-file3', 'blahblahblah4')
+ g.add
+ true
+ end
+
+ # test some read-trees
+ tr = g.with_temp_index do
+ g.read_tree('testbranch1')
+ g.read_tree('testbranch2', :prefix => 'b2/')
+ g.read_tree('testbranch3', :prefix => 'b2/b3/')
+ index = g.ls_files
+ assert(index['b2/test-file2'])
+ assert(index['b2/b3/test-file3'])
+ g.write_tree
+ end
+
+ assert_equal('2423ef1b38b3a140bbebf625ba024189c872e08b', tr)
+
+ # only prefixed read-trees
+ tr = g.with_temp_index do
+ g.add # add whats in our working tree
+ g.read_tree('testbranch1', :prefix => 'b1/')
+ g.read_tree('testbranch3', :prefix => 'b2/b3/')
+ index = g.ls_files
+ assert(index['example.txt'])
+ assert(index['b1/test-file1'])
+ assert(!index['b2/test-file2'])
+ assert(index['b2/b3/test-file3'])
+ g.write_tree
+ end
+
+ assert_equal('aa7349e1cdaf4b85cc6a6a0cf4f9b3f24879fa42', tr)
+
+ # new working directory too
+ tr = nil
+ g.with_temp_working do
+ tr = g.with_temp_index do
+ assert_raises Git::GitExecuteError do
+ g.add # add whats in our working tree - should be nothing
+ end
+ g.read_tree('testbranch1', :prefix => 'b1/')
+ g.read_tree('testbranch3', :prefix => 'b1/b3/')
+ index = g.ls_files
+ assert(!index['example.txt'])
+ assert(index['b1/test-file1'])
+ assert(!index['b2/test-file2'])
+ assert(index['b1/b3/test-file3'])
+ g.write_tree
+ end
+ assert_equal('b40f7a9072cdec637725700668f8fdebe39e6d38', tr)
+ end
+
+ c = g.commit_tree(tr, :parents => 'HEAD')
+ assert(c.commit?)
+ assert_equal('b40f7a9072cdec637725700668f8fdebe39e6d38', c.gtree.sha)
+
+ tmp = Tempfile.new('tesxt')
+ tmppath = tmp.path
+ tmp.unlink
+ tr2 = g.with_index(tmppath) do
+ g.read_tree('testbranch1', :prefix => 'b1/')
+ g.read_tree('testbranch3', :prefix => 'b3/')
+ index = g.ls_files
+ assert(!index['b2/test-file2'])
+ assert(index['b3/test-file3'])
+ g.commit('hi')
+ end
+
+ assert(c.commit?)
+ assert_equal('b40f7a9072cdec637725700668f8fdebe39e6d38', c.gtree.sha)
+
+ end
+ end
+ end
+
+end