spec/integration/push_spec.rb in braid-1.0.22 vs spec/integration/push_spec.rb in braid-1.1.0

- old
+ new

@@ -108,18 +108,18 @@ @repository_dir = create_git_repo_from_fixture('shiny', :name => 'Some body', :email => 'somebody@example.com') @vendor_repository_dir = create_git_repo_from_fixture('skit1') @file_name = 'layouts/layout.liquid' in_dir(@repository_dir) do - run_command("#{BRAID_BIN} add #{@vendor_repository_dir} --path layouts") + run_command("#{BRAID_BIN} add #{@vendor_repository_dir} --path layouts skit-layouts") end in_dir(@vendor_repository_dir) do run_command('git config receive.denyCurrentBranch updateInstead') end - update_dir_from_fixture('shiny/skit1', 'skit1.1/layouts') + update_dir_from_fixture('shiny/skit-layouts', 'skit1.1/layouts') in_dir(@repository_dir) do run_command('git add *') run_command('git commit -m "Make some changes to vendored files"') end end @@ -128,21 +128,74 @@ it 'should push changes successfully' do braid_output = nil commit_message = 'Make some changes' in_dir(@repository_dir) do with_editor_message(commit_message) do - braid_output = run_command("#{BRAID_BIN} push skit1") + braid_output = run_command("#{BRAID_BIN} push skit-layouts") end end expect(braid_output).to match(/Braid: Cloning mirror with local changes./) expect(braid_output).to match(/Make some changes/) expect(braid_output).to match(/Braid: Pushing changes to remote branch master./) - assert_no_diff("#{FIXTURE_PATH}/skit1.1/#{@file_name}", "#{@repository_dir}/skit1/layout.liquid") + assert_no_diff("#{FIXTURE_PATH}/skit1.1/#{@file_name}", "#{@repository_dir}/skit-layouts/layout.liquid") assert_no_diff("#{FIXTURE_PATH}/skit1.1/#{@file_name}", "#{@vendor_repository_dir}/#{@file_name}") in_dir(@vendor_repository_dir) do run_command('git checkout master 2>&1') + + assert_commit_subject(commit_message) + assert_commit_author('Some body') + assert_commit_email('somebody@example.com') + end + end + end + end + + describe 'from a git repository braided into a single file' do + before do + @repository_dir = create_git_repo_from_fixture('shiny', :name => 'Some body', :email => 'somebody@example.com') + @vendor_repository_dir = create_git_repo_from_fixture('skit1') + @file_name = 'layouts/layout.liquid' + + in_dir(@repository_dir) do + run_command("#{BRAID_BIN} add #{@vendor_repository_dir} --path layouts/layout.liquid skit-layout.liquid") + end + + in_dir(@vendor_repository_dir) do + run_command('git config receive.denyCurrentBranch updateInstead') + end + + FileUtils.cp_r(File.join(FIXTURE_PATH, 'skit1.1x') + '/layouts/layout.liquid', "#{@repository_dir}/skit-layout.liquid", + {preserve: true}) + in_dir(@repository_dir) do + run_command('git add *') + run_command('git commit -m "Make some changes to vendored files"') + end + end + + context 'with remote updtodate' do + it 'should push changes successfully' do + braid_output = nil + commit_message = 'Make some changes' + in_dir(@repository_dir) do + with_editor_message(commit_message) do + braid_output = run_command("#{BRAID_BIN} push skit-layout.liquid") + end + end + expect(braid_output).to match(/Braid: Cloning mirror with local changes./) + expect(braid_output).to match(/Make some changes/) + expect(braid_output).to match(/Braid: Pushing changes to remote branch master./) + + assert_no_diff("#{FIXTURE_PATH}/skit1.1x/#{@file_name}", "#{@repository_dir}/skit-layout.liquid") + assert_no_diff("#{FIXTURE_PATH}/skit1.1x/#{@file_name}", "#{@vendor_repository_dir}/#{@file_name}") + + in_dir(@vendor_repository_dir) do + run_command('git checkout master 2>&1') + + if filemode_enabled + expect(File.stat(@file_name).mode & 0100).to eq(0100) + end assert_commit_subject(commit_message) assert_commit_author('Some body') assert_commit_email('somebody@example.com') end