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
- .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
165 166 167 |
# File 'lib/appmap/rspec.rb', line 165 def add_event_methods(event_methods) @event_methods += event_methods end |
.begin_spec(example) ⇒ Object
150 151 152 |
# File 'lib/appmap/rspec.rb', line 150 def begin_spec(example) @recordings_by_example[example.object_id] = Recording.new(example) end |
.config ⇒ Object
161 162 163 |
# File 'lib/appmap/rspec.rb', line 161 def config @config or raise "AppMap is not configured" end |
.enabled? ⇒ Boolean
202 203 204 |
# File 'lib/appmap/rspec.rb', line 202 def enabled? ENV['APPMAP'] == 'true' end |
.end_spec(example, exception:) ⇒ Object
154 155 156 157 158 159 |
# File 'lib/appmap/rspec.rb', line 154 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 |
.init ⇒ Object
144 145 146 147 148 |
# File 'lib/appmap/rspec.rb', line 144 def init warn 'Configuring AppMap recorder for RSpec' 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
206 207 208 |
# File 'lib/appmap/rspec.rb', line 206 def run init end |
.save(name:, class_map:, source_location:, test_status:, exception:, events:) ⇒ Object
169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 |
# File 'lib/appmap/rspec.rb', line 169 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: 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 |