File: cache_spec.rb

package info (click to toggle)
r10k 5.0.0-2
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 2,228 kB
  • sloc: ruby: 18,180; makefile: 10; sh: 1
file content (66 lines) | stat: -rw-r--r-- 1,547 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
require 'spec_helper'
require 'r10k/git/cache'

describe R10K::Git::Cache do

  describe 'the default cache_root' do
    it 'is in the right location in linux', unless: R10K::Util::Platform.windows?  do
      expect(described_class.defaults[:cache_root]).to match(/\.r10k\/git/)
    end

    it 'is in the right location for windows', if: R10K::Util::Platform.windows? do
      expect(described_class.defaults[:cache_root]).to match(/[^.]r10k\/git/)
    end
  end

  let(:subclass) do
    Class.new(described_class) do
      def self.bare_repository
        Class.new { def initialize(*args) end }
      end
    end
  end

  let(:remote) { 'https://some/git/remote' }
  subject { subclass.new(remote) }

  describe "updating the cache" do
    it "only updates the cache once" do
      expect(subject).to receive(:sync!).exactly(1).times
      subject.sync
      subject.sync
    end
  end

  describe "methods on the repository" do
    def expect_delegation(method)
      expect(subject.repo).to receive(method)
      subject.send(method)
    end

    it "delegates #git_dir" do
      expect_delegation(:git_dir)
    end

    it "delegates #objects_dir" do
      expect_delegation(:objects_dir)
    end

    it "delegates #branches" do
      expect_delegation(:branches)
    end

    it "delegates #tags" do
      expect_delegation(:tags)
    end

    it "delegates #exist?" do
      expect_delegation(:exist?)
    end

    it "aliases #cached? to #exist?" do
      expect(subject.repo).to receive(:exist?)
      subject.cached?
    end
  end
end