Module: AppMap::RSpec
- Defined in:
- lib/appmap/rspec.rb
Overview
Integration of AppMap with RSpec. When enabled with APPMAP=true, the AppMap tracer will be activated around each scenario which has the metadata key :appmap.
Defined Under Namespace
Classes: Recording, ScopeExample, ScopeExampleGroup
Constant Summary collapse
- APPMAP_OUTPUT_DIR =
'tmp/appmap/rspec'- LOG =
false
Class Method Summary collapse
- .add_event_methods(event_methods) ⇒ Object
- .begin_spec(example) ⇒ Object
- .config ⇒ Object
- .enabled? ⇒ Boolean
- .end_spec(example, exception:) ⇒ Object
- .first_recording? ⇒ Boolean
- .init ⇒ Object
- .metadata ⇒ Object
- .run ⇒ Object
- .save(name:, class_map:, source_location:, test_status:, exception:, events:) ⇒ Object
Class Method Details
.add_event_methods(event_methods) ⇒ Object
173 174 175 |
# File 'lib/appmap/rspec.rb', line 173 def add_event_methods(event_methods) @event_methods += event_methods end |
.begin_spec(example) ⇒ Object
155 156 157 158 159 160 |
# File 'lib/appmap/rspec.rb', line 155 def begin_spec(example) AppMap.info 'Configuring AppMap recorder for RSpec' if first_recording? @recording_count += 1 @recordings_by_example[example.object_id] = Recording.new(example) end |
.config ⇒ Object
169 170 171 |
# File 'lib/appmap/rspec.rb', line 169 def config @config or raise "AppMap is not configured" end |
.enabled? ⇒ Boolean
210 211 212 |
# File 'lib/appmap/rspec.rb', line 210 def enabled? ENV['APPMAP'] == 'true' end |
.end_spec(example, exception:) ⇒ Object
162 163 164 165 166 167 |
# File 'lib/appmap/rspec.rb', line 162 def end_spec(example, exception:) recording = @recordings_by_example.delete(example.object_id) return warn "No recording found for #{example}" unless recording recording.finish exception end |
.first_recording? ⇒ Boolean
151 152 153 |
# File 'lib/appmap/rspec.rb', line 151 def first_recording? @recording_count == 0 end |
.init ⇒ Object
147 148 149 |
# File 'lib/appmap/rspec.rb', line 147 def init FileUtils.mkdir_p APPMAP_OUTPUT_DIR end |
.metadata ⇒ Object
13 14 15 |
# File 'lib/appmap/rspec.rb', line 13 def self. AppMap. end |
.run ⇒ Object
214 215 216 |
# File 'lib/appmap/rspec.rb', line 214 def run init end |
.save(name:, class_map:, source_location:, test_status:, exception:, events:) ⇒ Object
177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 |
# File 'lib/appmap/rspec.rb', line 177 def save(name:, class_map:, source_location:, test_status:, exception:, events:) = AppMap::RSpec..tap do |m| m[:name] = name m[:source_location] = source_location m[:app] = AppMap.configuration.name m[:frameworks] ||= [] m[:frameworks] << { name: 'rspec', version: Gem.loaded_specs['rspec-core']&.version&.to_s } m[:recorder] = { name: 'rspec' } m[:test_status] = test_status if exception m[:exception] = { class: exception.class.name, message: AppMap::Event::MethodEvent.display_string(exception.to_s) } end end appmap = { version: AppMap::APPMAP_FORMAT_VERSION, metadata: , classMap: class_map, events: events }.compact fname = AppMap::Util.scenario_filename(name) AppMap::Util.write_appmap(File.join(APPMAP_OUTPUT_DIR, fname), JSON.generate(appmap)) end |