spec/unit/berkshelf/git_spec.rb in berkshelf-1.4.6 vs spec/unit/berkshelf/git_spec.rb in berkshelf-2.0.0.beta

- old
+ new

@@ -1,300 +1,312 @@ require 'spec_helper' describe Berkshelf::Git do - describe "ClassMethods" do - subject { Berkshelf::Git } - let(:git) { Berkshelf::Git } + let(:git) { Berkshelf::Git } - describe "::find_git" do - it "should find git" do - subject.find_git.should_not be_nil - end + describe '.find_git' do + it 'finds git' do + expect(Berkshelf::Git.find_git).to_not be_nil + end - it "should raise if it can't find git" do - ENV.should_receive(:[]).with("PATH").and_return(String.new) + it 'raises an error if git cannot be not found' do + ENV.should_receive(:[]).with('PATH').and_return(String.new) - lambda { - subject.find_git - }.should raise_error(Berkshelf::GitNotFound) - end + expect { + Berkshelf::Git.find_git + }.to raise_error(Berkshelf::GitNotFound) end + end - describe "::clone" do - let(:target) { clone_target_for('nginx') } + describe '.clone' do + let(:target) { clone_target_for('nginx') } - it "clones the repository to the target path" do - origin_uri = git_origin_for("nginx") - subject.clone(origin_uri, target) + it 'clones the repository to the target path' do + origin_uri = git_origin_for('nginx') + Berkshelf::Git.clone(origin_uri, target) - expect(target).to exist - expect(target).to be_directory - end + expect(target).to exist + expect(target).to be_directory end + end - describe "::checkout" do - let(:repo_path) { clone_target_for('nginx') } - let(:repo) { - origin_uri = git_origin_for('nginx', tags: ['1.0.1', '1.0.2'], branches: ['topic', 'next_topic']) - git.clone(origin_uri, repo_path) - } + describe '.checkout' do + let(:repo_path) { clone_target_for('nginx') } + let(:repo) { + origin_uri = git_origin_for('nginx', tags: ['1.0.1', '1.0.2'], branches: ['topic', 'next_topic']) + git.clone(origin_uri, repo_path) + } - shared_examples "able to checkout git ref" do |test_ref| - it "checks out the specified ref of the given repository" do - git.checkout(repo, ref) + shared_examples 'able to checkout git ref' do |test_ref| + it 'checks out the specified ref of the given repository' do + git.checkout(repo, ref) - Dir.chdir repo_path do - test_ref ||= ref - %x[git rev-parse #{test_ref}].should == %x[git rev-parse HEAD] - end + Dir.chdir repo_path do + test_ref ||= ref + expect(%x[git rev-parse #{test_ref}]).to eq(%x[git rev-parse HEAD]) end end + end - context 'with sha commit id' do - let(:ref) { git_sha_for_ref('nginx', '1.0.1') } + context 'with sha commit id' do + let(:ref) { git_sha_for_ref('nginx', '1.0.1') } - it_behaves_like 'able to checkout git ref' - end + it_behaves_like 'able to checkout git ref' + end - context 'with tags' do - let(:ref) { "1.0.1" } + context 'with tags' do + let(:ref) { '1.0.1' } - it_behaves_like 'able to checkout git ref' + it_behaves_like 'able to checkout git ref' - context 'after checking out another tag' do - let(:other_tag) { '1.0.2' } - before do - git.checkout(repo, other_tag) - Dir.chdir repo_path do - run! "echo 'uncommitted change' >> content_file" - end + context 'after checking out another tag' do + let(:other_tag) { '1.0.2' } + before do + git.checkout(repo, other_tag) + Dir.chdir repo_path do + run! "echo 'uncommitted change' >> content_file" end - - it_behaves_like 'able to checkout git ref' end + + it_behaves_like 'able to checkout git ref' end + end - context 'with branches' do - let(:ref) { 'topic' } + context 'with branches' do + let(:ref) { 'topic' } - it_behaves_like 'able to checkout git ref', 'origin/topic' + it_behaves_like 'able to checkout git ref', 'origin/topic' - context 'after checking out another branch' do - let(:other_branch) { 'next_topic' } - before do - git.checkout(repo, other_branch) - Dir.chdir repo_path do - run! "echo 'uncommitted change' >> content_file" - end + context 'after checking out another branch' do + let(:other_branch) { 'next_topic' } + before do + git.checkout(repo, other_branch) + Dir.chdir repo_path do + run! "echo 'uncommitted change' >> content_file" end - - it_behaves_like 'able to checkout git ref', 'origin/topic' end + + it_behaves_like 'able to checkout git ref', 'origin/topic' end end + end - describe "::rev_parse" do - let(:repo_path) { clone_target_for('nginx') } - before(:each) do |example| - origin_uri = git_origin_for('nginx', tags: ['1.1.1']) - subject.clone(origin_uri, repo_path) - subject.checkout(repo_path, git_sha_for_ref('nginx', '1.1.1')) - end + describe '.rev_parse' do + let(:repo_path) { clone_target_for('nginx') } + before(:each) do |example| + origin_uri = git_origin_for('nginx', tags: ['1.1.1']) + Berkshelf::Git.clone(origin_uri, repo_path) + Berkshelf::Git.checkout(repo_path, git_sha_for_ref('nginx', '1.1.1')) + end - it "returns the ref for HEAD" do - expect(subject.rev_parse(repo_path)).to eql(git_sha_for_ref('nginx', '1.1.1')) - end + it 'returns the ref for HEAD' do + rev = Berkshelf::Git.rev_parse(repo_path) + ref = git_sha_for_ref('nginx', '1.1.1') + + expect(rev).to eql(ref) end + end - describe "::show_ref" do - let(:repo_path) { clone_target_for('nginx') } - let(:tags) { ['1.0.1'] } - let(:branches) { ['topic'] } - let!(:repo) { - origin_uri = git_origin_for('nginx', tags: tags, branches: branches) - git.clone(origin_uri, repo_path) - } + describe '.show_ref' do + let(:repo_path) { clone_target_for('nginx') } + let(:tags) { ['1.0.1'] } + let(:branches) { ['topic'] } + let!(:repo) { + origin_uri = git_origin_for('nginx', tags: tags, branches: branches) + git.clone(origin_uri, repo_path) + } - it 'returns the commit id for the given tag' do - git.show_ref(repo_path, '1.0.1').should == git_sha_for_ref('nginx', '1.0.1') - end + it 'returns the commit id for the given tag' do + show = git.show_ref(repo_path, '1.0.1') + ref = git_sha_for_ref('nginx', '1.0.1') - it 'returns the commit id for the given branch' do - git.show_ref(repo_path, 'topic').should == git_sha_for_ref('nginx', 'topic') - end + expect(show).to eq(ref) + end - context 'with an ambiguous ref' do - let(:tags) { ['topic'] } - let(:branches) { ['topic'] } + it 'returns the commit id for the given branch' do + show = git.show_ref(repo_path, 'topic') + ref = git_sha_for_ref('nginx', 'topic') + expect(show).to eq(ref) + end - it 'raises an error' do - expect {git.show_ref(repo_path, 'topic')}.to raise_error(Berkshelf::AmbiguousGitRef) - end + context 'with an ambiguous ref' do + let(:tags) { ['topic'] } + let(:branches) { ['topic'] } + + it 'raises an error' do + expect { + git.show_ref(repo_path, 'topic') + }.to raise_error(Berkshelf::AmbiguousGitRef) end end + end - describe '::revision_from_ref' do - let(:repo_path) { clone_target_for('nginx') } - let(:tags) { ['1.0.1'] } - let(:branches) { ['topic'] } - let!(:repo) { - origin_uri = git_origin_for('nginx', tags: tags, branches: branches) - git.clone(origin_uri, repo_path) - } + describe '.revision_from_ref' do + let(:repo_path) { clone_target_for('nginx') } + let(:tags) { ['1.0.1'] } + let(:branches) { ['topic'] } + let!(:repo) { + origin_uri = git_origin_for('nginx', tags: tags, branches: branches) + git.clone(origin_uri, repo_path) + } - context 'with sha commit id' do - let(:revision) { git_sha_for_ref('nginx', '1.0.1') } - it 'returns the passed revision' do - git.revision_from_ref(repo_path, revision).should == revision - end + context 'with sha commit id' do + let(:revision) { git_sha_for_ref('nginx', '1.0.1') } + it 'returns the passed revision' do + rev = git.revision_from_ref(repo_path, revision) + expect(rev).to eq(revision) end + end - context 'with tag' do - let(:revision) { git_sha_for_ref('nginx', '1.0.1') } - it 'returns the revision' do - git.revision_from_ref(repo_path, '1.0.1').should == revision - end + context 'with tag' do + let(:revision) { git_sha_for_ref('nginx', '1.0.1') } + it 'returns the revision' do + rev = git.revision_from_ref(repo_path, '1.0.1') + expect(rev).to eq(revision) end + end - context 'with branch' do - let(:revision) { git_sha_for_ref('nginx', 'topic') } - it 'returns the revision' do - git.revision_from_ref(repo_path, 'topic').should == revision - end + context 'with branch' do + let(:revision) { git_sha_for_ref('nginx', 'topic') } + it 'returns the revision' do + rev = git.revision_from_ref(repo_path, 'topic') + expect(rev).to eq(revision) end + end - context 'with an invalid ref' do - let(:ref) { 'foobar' } - it 'raises an error' do - expect { git.revision_from_ref(repo_path, ref) }.to raise_error(Berkshelf::InvalidGitRef) - end + context 'with an invalid ref' do + let(:ref) { 'foobar' } + it 'raises an error' do + expect { + git.revision_from_ref(repo_path, ref) + }.to raise_error(Berkshelf::InvalidGitRef) end end + end - let(:readonly_uri) { "git://github.com/reset/thor-foodcritic.git" } - let(:https_uri) { "https://github.com/reset/solve.git" } - let(:http_uri) { "http://github.com/reset/solve.git" } - let(:invalid_uri) { "/something/on/disk" } + let(:readonly_uri) { 'git://github.com/reset/thor-foodcritic.git' } + let(:https_uri) { 'https://github.com/reset/solve.git' } + let(:http_uri) { 'http://github.com/reset/solve.git' } + let(:invalid_uri) { '/something/on/disk' } - describe "::validate_uri" do - context "given a valid Git read-only URI" do - it "returns true" do - subject.validate_uri(readonly_uri).should be_true - end + describe '.validate_uri' do + context 'given a valid Git read-only URI' do + it 'returns true' do + expect(Berkshelf::Git.validate_uri(readonly_uri)).to be_true end + end - context "given a valid Git HTTPS URI" do - it "returns true" do - subject.validate_uri(https_uri).should be_true - end + context 'given a valid Git HTTPS URI' do + it 'returns true' do + expect(Berkshelf::Git.validate_uri(https_uri)).to be_true end + end - context "given a valid Github SSH URI" do - it "returns true" do - subject.validate_uri("git@github.com:reset/solve.git").should be_true - end + context 'given a valid Github SSH URI' do + it 'returns true' do + expect(Berkshelf::Git.validate_uri('git@github.com:reset/solve.git')).to be_true end + end - context "given a valid SSH URI without an 'organization'" do - it "returns true" do - subject.validate_uri("gituser@githost:solve.git").should be_true - end + context "given a valid SSH URI without an 'organization'" do + it 'returns true' do + expect(Berkshelf::Git.validate_uri('gituser@githost:solve.git')).to be_true end + end - context "given a valid git+ssh URI without an username" do - it "returns true" do - subject.validate_uri("git+ssh://host.com/repo").should be_true - end + context 'given a valid git+ssh URI without an username' do + it 'returns true' do + expect(Berkshelf::Git.validate_uri('git+ssh://host.com/repo')).to be_true end + end - context "given a valid git+ssh URI with an username" do - it "returns true" do - subject.validate_uri("git+ssh://user@host.com/repo").should be_true - end + context 'given a valid git+ssh URI with an username' do + it 'returns true' do + expect(Berkshelf::Git.validate_uri('git+ssh://user@host.com/repo')).to be_true end + end - context "given a valid URI with a dash in the hostname" do - it "returns true" do - subject.validate_uri("git://user@git-host.com/repo").should be_true - end + context 'given a valid URI with a dash in the hostname' do + it 'returns true' do + expect(Berkshelf::Git.validate_uri('git://user@git-host.com/repo')).to be_true end + end - context "given a valid URI with host being a subdomain" do - it "returns true" do - subject.validate_uri("git://user@git.host.com/repo").should be_true - end + context 'given a valid URI with host being a subdomain' do + it 'returns true' do + expect(Berkshelf::Git.validate_uri('git://user@git.host.com/repo')).to be_true end + end - context "given a valid git+ssh URI with home directory expansion" do - it "returns true" do - subject.validate_uri("git+ssh://user@host.com/~repo").should be_true - end + context 'given a valid git+ssh URI with home directory expansion' do + it 'returns true' do + expect(Berkshelf::Git.validate_uri('git+ssh://user@host.com/~repo')).to be_true end + end - context "given an invalid URI" do - it "returns false" do - subject.validate_uri(invalid_uri).should be_false - end + context 'given an invalid URI' do + it 'returns false' do + expect(Berkshelf::Git.validate_uri(invalid_uri)).to be_false end + end - context "given a HTTP URI" do - it "returns true" do - subject.validate_uri(http_uri).should be_true - end + context 'given a HTTP URI' do + it 'returns true' do + expect(Berkshelf::Git.validate_uri(http_uri)).to be_true end + end - context "given an integer" do - it "returns false" do - subject.validate_uri(123).should be_false - end + context 'given an integer' do + it 'returns false' do + expect(Berkshelf::Git.validate_uri(123)).to be_false end end + end - describe "::validate_uri!" do - context "given a valid Git read-only URI" do - it "returns true" do - subject.validate_uri!(readonly_uri).should be_true - end + describe '.validate_uri!' do + context 'given a valid Git read-only URI' do + it 'returns true' do + expect(Berkshelf::Git.validate_uri!(readonly_uri)).to be_true end + end - context "given a valid Git HTTPS URI" do - it "returns true" do - subject.validate_uri!(https_uri).should be_true - end + context 'given a valid Git HTTPS URI' do + it 'returns true' do + expect(Berkshelf::Git.validate_uri!(https_uri)).to be_true end + end - context "given a valid Git SSH URI" do - it "returns true" do - subject.validate_uri!("git@github.com:reset/solve.git").should be_true - end + context 'given a valid Git SSH URI' do + it 'returns true' do + expect(Berkshelf::Git.validate_uri!('git@github.com:reset/solve.git')).to be_true end + end - context "given a valid SSH URI without an 'organization'" do - it "returns true" do - subject.validate_uri("gituser@githost:solve.git").should be_true - end + context "given a valid SSH URI without an 'organization'" do + it 'returns true' do + expect(Berkshelf::Git.validate_uri('gituser@githost:solve.git')).to be_true end + end - context "given an invalid URI" do - it "raises InvalidGitURI" do - lambda { - subject.validate_uri!(invalid_uri) - }.should raise_error(Berkshelf::InvalidGitURI) - end + context 'given an invalid URI' do + it 'raises InvalidGitURI' do + expect { + Berkshelf::Git.validate_uri!(invalid_uri) + }.to raise_error(Berkshelf::InvalidGitURI) end + end - context "given a HTTP URI" do - it "raises InvalidGitURI" do - subject.validate_uri!(http_uri).should be_true - end + context 'given a HTTP URI' do + it 'raises InvalidGitURI' do + expect(Berkshelf::Git.validate_uri!(http_uri)).to be_true end + end - context "given an integer" do - it "raises InvalidGitURI" do - lambda { - subject.validate_uri!(123) - }.should raise_error(Berkshelf::InvalidGitURI) - end + context 'given an integer' do + it 'raises InvalidGitURI' do + expect { + Berkshelf::Git.validate_uri!(123) + }.to raise_error(Berkshelf::InvalidGitURI) end end end end