blob: ae02e08bea5e5cab9c990ffc77c64a999db201ca (
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
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
# frozen_string_literal: true
RSpec.describe Bundler::Plugin::API::Source do
let(:uri) { "uri://to/test" }
let(:type) { "spec_type" }
subject(:source) do
klass = Class.new
klass.send :include, Bundler::Plugin::API::Source
klass.new("uri" => uri, "type" => type)
end
describe "attributes" do
it "allows access to uri" do
expect(source.uri).to eq("uri://to/test")
end
it "allows access to name" do
expect(source.name).to eq("spec_type at uri://to/test")
end
end
context "post_install" do
let(:installer) { double(:installer) }
before do
allow(Bundler::Source::Path::Installer).to receive(:new) { installer }
end
it "calls Path::Installer's post_install" do
expect(installer).to receive(:post_install).once
source.post_install(double(:spec))
end
end
context "install_path" do
let(:uri) { "uri://to/a/repository-name" }
let(:hash) { Digest(:SHA1).hexdigest(uri) }
let(:install_path) { Pathname.new "/bundler/install/path" }
before do
allow(Bundler).to receive(:install_path) { install_path }
end
it "returns basename with uri_hash" do
expected = Pathname.new "#{install_path}/repository-name-#{hash[0..11]}"
expect(source.install_path).to eq(expected)
end
end
context "to_lock" do
it "returns the string with remote and type" do
expected = <<~L
PLUGIN SOURCE
remote: #{uri}
type: #{type}
specs:
L
expect(source.to_lock).to eq(expected)
end
context "with additional options to lock" do
before do
allow(source).to receive(:options_to_lock) { { "first" => "option" } }
end
it "includes them" do
expected = <<~L
PLUGIN SOURCE
remote: #{uri}
type: #{type}
first: option
specs:
L
expect(source.to_lock).to eq(expected)
end
end
end
describe "to_s" do
it "returns the string with type and uri" do
expect(source.to_s).to eq("plugin source for spec_type with uri uri://to/test")
end
end
end
|