aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/test/cask/scopes_spec.rb
blob: d1c03b9b0c222f3d3d79833321d5cc47d6e976ee (plain)
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
describe Hbc::Scopes, :cask do
  describe "installed" do
    it "returns a list installed Casks by loading Casks for all the dirs that exist in the caskroom" do
      allow(Hbc::CaskLoader).to receive(:load) { |token| "loaded-#{token}" }

      Hbc.caskroom.join("cask-bar").mkpath
      Hbc.caskroom.join("cask-foo").mkpath

      installed_casks = Hbc.installed

      expect(Hbc::CaskLoader).to have_received(:load).with("cask-bar")
      expect(Hbc::CaskLoader).to have_received(:load).with("cask-foo")
      expect(installed_casks).to eq(
        %w[
          loaded-cask-bar
          loaded-cask-foo
        ],
      )
    end

    it "optimizes performance by resolving to a fully qualified path before calling Hbc::CaskLoader.load" do
      fake_tapped_cask_dir = Pathname.new(Dir.mktmpdir).join("Casks")
      absolute_path_to_cask = fake_tapped_cask_dir.join("some-cask.rb")

      allow(Hbc::CaskLoader).to receive(:load)
      allow(Hbc).to receive(:all_tapped_cask_dirs) { [fake_tapped_cask_dir] }

      Hbc.caskroom.join("some-cask").mkdir
      fake_tapped_cask_dir.mkdir
      FileUtils.touch(absolute_path_to_cask)

      Hbc.installed

      expect(Hbc::CaskLoader).to have_received(:load).with(absolute_path_to_cask)
    end
  end
end