spec/unit/action/deploy/module_spec.rb in r10k-3.1.1 vs spec/unit/action/deploy/module_spec.rb in r10k-3.2.0
- old
+ new
@@ -15,16 +15,112 @@
end
it "can accept a no-force option" do
described_class.new({:'no-force' => true}, [])
end
+
+ it 'can accept a generate-types option' do
+ described_class.new({ 'generate-types': true }, [])
+ end
+
+ it 'can accept a puppet-path option' do
+ described_class.new({ 'puppet-path': '/nonexistent' }, [])
+ end
end
describe "with no-force" do
subject { described_class.new({ config: "/some/nonexistent/path", :'no-force' => true}, [] )}
it "tries to preserve local modifications" do
expect(subject.force).to equal(false)
+ end
+ end
+
+ describe 'generate-types' do
+ let(:deployment) do
+ R10K::Deployment.new(
+ sources: {
+ control: {
+ type: :mock,
+ basedir: '/some/nonexistent/path/control',
+ environments: %w[first second]
+ }
+ }
+ )
+ end
+
+ before do
+ allow(R10K::Deployment).to receive(:new).and_return(deployment)
+ end
+
+ context 'with generate-types enabled' do
+ subject do
+ described_class.new(
+ {
+ config: '/some/nonexistent/path',
+ 'generate-types': true
+ },
+ %w[first]
+ )
+ end
+
+ before do
+ allow(subject).to receive(:visit_environment).and_wrap_original do |original, environment, &block|
+ expect(environment.puppetfile).to receive(:modules).and_return(
+ [R10K::Module::Local.new(environment.name, '/fakedir', [], environment)]
+ )
+ original.call(environment, &block)
+ end
+ end
+
+ it 'generate_types is true' do
+ expect(subject.instance_variable_get(:@generate_types)).to eq(true)
+ end
+
+ it 'only calls puppet generate types on environments with specified module' do
+ expect(subject).to receive(:visit_module).and_wrap_original do |original, mod, &block|
+ if mod.name == 'first'
+ expect(mod.environment).to receive(:generate_types!)
+ else
+ expect(mod.environment).not_to receive(:generate_types!)
+ end
+ original.call(mod, &block)
+ end.twice
+ subject.call
+ end
+ end
+
+ context 'with generate-types disabled' do
+ subject do
+ described_class.new(
+ {
+ config: '/some/nonexistent/path',
+ 'generate-types': false
+ },
+ %w[first]
+ )
+ end
+
+ it 'generate_types is false' do
+ expect(subject.instance_variable_get(:@generate_types)).to eq(false)
+ end
+
+ it 'does not call puppet generate types' do |it|
+ expect(subject).to receive(:visit_environment).and_wrap_original do |original, environment, &block|
+ expect(environment).not_to receive(:generate_types!)
+ original.call(environment, &block)
+ end.twice
+ subject.call
+ end
+ end
+ end
+
+ describe 'with puppet-path' do
+
+ subject { described_class.new({ config: '/some/nonexistent/path', 'puppet-path': '/nonexistent' }, []) }
+
+ it 'sets puppet_path' do
+ expect(subject.instance_variable_get(:@puppet_path)).to eq('/nonexistent')
end
end
end