spec/unit/git/working_dir_spec.rb in r10k-1.2.4 vs spec/unit/git/working_dir_spec.rb in r10k-1.3.0rc1

- old
+ new

@@ -1,121 +1,12 @@ require 'spec_helper' require 'r10k/git' describe R10K::Git::WorkingDir do - include_context "fail on execution" describe "initializing" do it "generates a new cache for the remote" do - wd = described_class.new('master', 'git://github.com/adrienthebo/r10k-fixture-repo', '/some/nonexistent/dir') + wd = described_class.new('master', 'git://github.com/adrienthebo/r10k-fixture-repo', '/tmp') wd.cache.should be_kind_of R10K::Git::Cache - end - - it "uses the provided ref as the dirname when no dirname is given" do - wd = described_class.new('master', 'git://github.com/adrienthebo/r10k-fixture-repo', '/some/nonexistent/dir') - expect(wd.dirname).to eq('master') - end - - it "uses an explicit dirname when given" do - wd = described_class.new('master', 'git://github.com/adrienthebo/r10k-fixture-repo', '/some/nonexistent/dir', 'mydir') - expect(wd.dirname).to eq('mydir') - end - end - - describe "synchronizing the working directory" do - subject { described_class.new('master', 'git://github.com/adrienthebo/r10k-fixture-repo', '/some/nonexistent/dir') } - it "clones the repository when the repository doesn't exist" do - expect(subject).to receive(:cloned?).and_return false - expect(subject).to receive(:clone) - subject.sync - end - - it "updates the repository when the repository already exists" do - expect(subject).to receive(:cloned?).and_return true - expect(subject).to receive(:update) - subject.sync - end - end - - describe "when cloning a new repository" do - subject { described_class.new('master', 'git://github.com/adrienthebo/r10k-fixture-repo', '/some/nonexistent/dir') } - - before do - allow(subject).to receive(:cloned?).and_return false - end - - it "updates the cache before cloning" do - expect(subject.cache).to receive(:sync) - allow(subject).to receive(:git) - allow(subject).to receive(:checkout) - subject.sync - end - - it "clones the repository and uses the cache git dir as an object reference" do - allow(subject.cache).to receive(:sync) - expect(subject).to receive(:git).with(['clone', '--reference', subject.cache.git_dir, - 'git://github.com/adrienthebo/r10k-fixture-repo', - '/some/nonexistent/dir/master']) - expect(subject).to receive(:git).with(['remote', 'add', 'cache', subject.cache.git_dir], - an_instance_of(Hash)) - - expect(subject).to receive(:git).with(['fetch', 'cache'], an_instance_of(Hash)) - allow(subject).to receive(:checkout) - subject.sync - end - - it 'checks out the specific ref after the clone' do - allow(subject.cache).to receive(:sync) - allow(subject).to receive(:git) - expect(subject).to receive(:checkout) - subject.sync - end - end - - describe "updating an existing repository" do - subject { described_class.new('master', 'git://github.com/adrienthebo/r10k-fixture-repo', '/some/nonexistent/dir') } - - before do - allow(subject).to receive(:cloned?).and_return true - end - - it "updates the remotes when they are out of sync" do - allow(subject).to receive(:ref_needs_fetch?).and_return false - allow(subject).to receive(:needs_checkout?).and_return false - - expect(subject).to receive(:update_remotes?).and_return true - expect(subject).to receive(:update_remotes) - - subject.sync - end - - it "updates the cache when the ref requires an update" do - allow(subject).to receive(:update_remotes?).and_return false - - expect(subject).to receive(:ref_needs_fetch?).and_return true - expect(subject).to receive(:fetch_from_cache) - expect(subject).to receive(:checkout).with(an_instance_of(R10K::Git::Ref)) - - subject.sync - end - - it "checks out the ref when the wrong commit is checked out" do - allow(subject).to receive(:update_remotes?).and_return false - allow(subject).to receive(:ref_needs_fetch?).and_return false - - expect(subject).to receive(:needs_checkout?).and_return true - expect(subject).to receive(:checkout).with(an_instance_of(R10K::Git::Ref)) - - subject.sync - end - - it "doesn't update the repo when everything is in sync" do - allow(subject).to receive(:update_remotes?).and_return false - allow(subject).to receive(:ref_needs_fetch?).and_return false - allow(subject).to receive(:needs_checkout?).and_return false - - expect(subject).to_not receive(:checkout) - - subject.sync end end end