3 require File.dirname(__FILE__) + '/../test_helper'
5 class TestTreeOps < Test::Unit::TestCase
15 g = Git.clone(@wbare, 'test')
18 g.branch('testbranch1').in_branch('tb commit 1') do
19 new_file('test-file1', 'blahblahblah2')
24 g.branch('testbranch2').in_branch('tb commit 2') do
25 new_file('test-file2', 'blahblahblah3')
30 g.branch('testbranch3').in_branch('tb commit 3') do
31 new_file('test-file3', 'blahblahblah4')
36 # test some read-trees
37 tr = g.with_temp_index do
38 g.read_tree('testbranch1')
39 g.read_tree('testbranch2', :prefix => 'b2/')
40 g.read_tree('testbranch3', :prefix => 'b2/b3/')
42 assert(index['b2/test-file2'])
43 assert(index['b2/b3/test-file3'])
47 assert_equal('2423ef1b38b3a140bbebf625ba024189c872e08b', tr)
49 # only prefixed read-trees
50 tr = g.with_temp_index do
51 g.add # add whats in our working tree
52 g.read_tree('testbranch1', :prefix => 'b1/')
53 g.read_tree('testbranch3', :prefix => 'b2/b3/')
55 assert(index['example.txt'])
56 assert(index['b1/test-file1'])
57 assert(!index['b2/test-file2'])
58 assert(index['b2/b3/test-file3'])
62 assert_equal('aa7349e1cdaf4b85cc6a6a0cf4f9b3f24879fa42', tr)
64 # new working directory too
66 g.with_temp_working do
67 tr = g.with_temp_index do
68 assert_raises Git::GitExecuteError do
69 g.add # add whats in our working tree - should be nothing
71 g.read_tree('testbranch1', :prefix => 'b1/')
72 g.read_tree('testbranch3', :prefix => 'b1/b3/')
74 assert(!index['example.txt'])
75 assert(index['b1/test-file1'])
76 assert(!index['b2/test-file2'])
77 assert(index['b1/b3/test-file3'])
80 assert_equal('b40f7a9072cdec637725700668f8fdebe39e6d38', tr)
83 c = g.commit_tree(tr, :parents => 'HEAD')
85 assert_equal('b40f7a9072cdec637725700668f8fdebe39e6d38', c.gtree.sha)
87 tmp = Tempfile.new('tesxt')
90 tr2 = g.with_index(tmppath) do
91 g.read_tree('testbranch1', :prefix => 'b1/')
92 g.read_tree('testbranch3', :prefix => 'b3/')
94 assert(!index['b2/test-file2'])
95 assert(index['b3/test-file3'])
100 assert_equal('b40f7a9072cdec637725700668f8fdebe39e6d38', c.gtree.sha)