Module: BoltSpec::BoltContext

Included in:
Plans
Defined in:
lib/bolt_spec/bolt_context.rb

Instance Method Summary collapse

Instance Method Details

#allow_out_messageObject Also known as: allow_any_out_message

Does this belong here?



174
175
176
# File 'lib/bolt_spec/bolt_context.rb', line 174

def allow_out_message
  executor.stub_out_message.add_stub
end

#configObject

Override in your tests



139
140
141
142
143
144
145
# File 'lib/bolt_spec/bolt_context.rb', line 139

def config
  @config ||= begin
                conf = Bolt::Config.new(Bolt::Project.new('.'), {})
                conf.modulepath = [modulepath].flatten
                conf
              end
end

#executorObject



125
126
127
# File 'lib/bolt_spec/bolt_context.rb', line 125

def executor
  @executor ||= BoltSpec::Plans::MockExecutor.new(modulepath)
end

#expect_out_messageObject



179
180
181
# File 'lib/bolt_spec/bolt_context.rb', line 179

def expect_out_message
  allow_out_message.expect_call
end

#in_bolt_context(&block) ⇒ Object



97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# File 'lib/bolt_spec/bolt_context.rb', line 97

def in_bolt_context(&block)
  setup
  old_modpath = RSpec.configuration.module_path
  old_tasks = Puppet[:tasks]

  # Set the things
  Puppet[:tasks] = true
  RSpec.configuration.module_path = [modulepath, Bolt::PAL::BOLTLIB_PATH].join(File::PATH_SEPARATOR)
  opts = {
    bolt_executor: executor,
    bolt_inventory: inventory,
    bolt_pdb_client: nil,
    apply_executor: nil
  }
  Puppet.override(opts, &block)

  # Unset the things
  RSpec.configuration.module_path = old_modpath
  Puppet[:tasks] = old_tasks
end

#inventoryObject



134
135
136
# File 'lib/bolt_spec/bolt_context.rb', line 134

def inventory
  @inventory ||= Bolt::Inventory.create_version(inventory_data, config.transport, config.transports, plugins)
end

#inventory_dataObject

Override in your tests



130
131
132
# File 'lib/bolt_spec/bolt_context.rb', line 130

def inventory_data
  {}
end

#modulepathObject

Override in your tests if needed



119
120
121
122
123
# File 'lib/bolt_spec/bolt_context.rb', line 119

def modulepath
  [RSpec.configuration.module_path]
rescue NoMethodError
  raise "RSpec.configuration.module_path not defined set up rspec puppet or define modulepath for this test"
end

#palObject



151
152
153
# File 'lib/bolt_spec/bolt_context.rb', line 151

def pal
  @pal ||= Bolt::PAL.new(config.modulepath, config.hiera_config, config.project.resource_types)
end

#pluginsObject



147
148
149
# File 'lib/bolt_spec/bolt_context.rb', line 147

def plugins
  @plugins ||= Bolt::Plugin.setup(config, pal)
end

#setupObject



89
90
91
92
93
94
95
# File 'lib/bolt_spec/bolt_context.rb', line 89

def setup
  unless @loaded
    # This is slow so don't do it until we have to
    Bolt::PAL.load_puppet
    @loaded = true
  end
end