appsignal 2.9.17 → 2.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop_todo.yml +0 -6
- data/CHANGELOG.md +24 -0
- data/Rakefile +16 -2
- data/ext/agent.yml +19 -19
- data/lib/appsignal/cli.rb +9 -2
- data/lib/appsignal/cli/diagnose.rb +20 -19
- data/lib/appsignal/cli/helpers.rb +22 -10
- data/lib/appsignal/cli/install.rb +2 -1
- data/lib/appsignal/config.rb +23 -9
- data/lib/appsignal/event_formatter.rb +4 -4
- data/lib/appsignal/minutely.rb +4 -4
- data/lib/appsignal/rack/js_exception_catcher.rb +6 -0
- data/lib/appsignal/transaction.rb +1 -1
- data/lib/appsignal/version.rb +1 -1
- data/spec/lib/appsignal/cli/diagnose_spec.rb +54 -11
- data/spec/lib/appsignal/cli/helpers_spec.rb +11 -3
- data/spec/lib/appsignal/cli/install_spec.rb +30 -1
- data/spec/lib/appsignal/config_spec.rb +78 -7
- data/spec/lib/appsignal/hooks/action_cable_spec.rb +1 -5
- data/spec/lib/appsignal/hooks/rake_spec.rb +41 -39
- data/spec/lib/appsignal/hooks/sidekiq_spec.rb +2 -15
- data/spec/lib/appsignal/integrations/object_spec.rb +2 -2
- data/spec/lib/appsignal/integrations/que_spec.rb +26 -39
- data/spec/lib/appsignal/integrations/resque_active_job_spec.rb +108 -46
- data/spec/lib/appsignal/integrations/resque_spec.rb +40 -39
- data/spec/lib/appsignal/minutely_spec.rb +3 -3
- data/spec/lib/appsignal/rack/js_exception_catcher_spec.rb +19 -5
- data/spec/lib/appsignal/transaction_spec.rb +4 -12
- data/spec/lib/appsignal_spec.rb +7 -8
- data/spec/spec_helper.rb +11 -11
- data/spec/support/fixtures/projects/broken/config/appsignal.yml +1 -0
- data/spec/support/helpers/cli_helpers.rb +15 -1
- data/spec/support/helpers/transaction_helpers.rb +53 -0
- data/spec/support/matchers/be_completed.rb +5 -0
- data/spec/support/matchers/have_colorized_text.rb +28 -0
- data/spec/support/testing.rb +113 -0
- metadata +10 -2
@@ -189,7 +189,7 @@ describe Appsignal::Minutely do
|
|
189
189
|
expect(Appsignal::Minutely).to have_received(:initial_wait_time).once
|
190
190
|
expect do
|
191
191
|
# Fetch old thread
|
192
|
-
thread = Appsignal::Minutely.
|
192
|
+
thread = Appsignal::Minutely.instance_variable_get(:@thread)
|
193
193
|
Appsignal::Minutely.start
|
194
194
|
thread && thread.join # Wait for old thread to exit
|
195
195
|
end.to_not(change { alive_thread_counter.call })
|
@@ -203,7 +203,7 @@ describe Appsignal::Minutely do
|
|
203
203
|
|
204
204
|
it "stops the minutely thread" do
|
205
205
|
Appsignal::Minutely.start
|
206
|
-
thread = Appsignal::Minutely.
|
206
|
+
thread = Appsignal::Minutely.instance_variable_get(:@thread)
|
207
207
|
expect(%w[sleep run]).to include(thread.status)
|
208
208
|
Appsignal::Minutely.stop
|
209
209
|
thread.join
|
@@ -213,7 +213,7 @@ describe Appsignal::Minutely do
|
|
213
213
|
it "clears the probe instances array" do
|
214
214
|
Appsignal::Minutely.probes.register :my_probe, lambda {}
|
215
215
|
Appsignal::Minutely.start
|
216
|
-
thread = Appsignal::Minutely.
|
216
|
+
thread = Appsignal::Minutely.instance_variable_get(:@thread)
|
217
217
|
wait_for("probes initialized") do
|
218
218
|
!Appsignal::Minutely.send(:probe_instances).empty?
|
219
219
|
end
|
@@ -3,19 +3,33 @@ describe Appsignal::Rack::JSExceptionCatcher do
|
|
3
3
|
let(:options) { nil }
|
4
4
|
let(:config_options) { { :enable_frontend_error_catching => true } }
|
5
5
|
let(:config) { project_fixture_config("production", config_options) }
|
6
|
+
let(:deprecation_message) do
|
7
|
+
"The Appsignal::Rack::JSExceptionCatcher is deprecated. " \
|
8
|
+
"Please use the official AppSignal JavaScript integration instead. " \
|
9
|
+
"https://docs.appsignal.com/front-end/"
|
10
|
+
end
|
6
11
|
before { Appsignal.config = config }
|
7
12
|
|
8
13
|
describe "#initialize" do
|
9
14
|
it "logs to the logger" do
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
15
|
+
stdout = std_stream
|
16
|
+
stderr = std_stream
|
17
|
+
log = capture_logs do
|
18
|
+
capture_std_streams(stdout, stderr) do
|
19
|
+
Appsignal::Rack::JSExceptionCatcher.new(app, options)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
expect(log).to contains_log(:warn, deprecation_message)
|
23
|
+
expect(log).to contains_log(:debug, "Initializing Appsignal::Rack::JSExceptionCatcher")
|
24
|
+
expect(stdout.read).to include "appsignal WARNING: #{deprecation_message}"
|
25
|
+
expect(stderr.read).to_not include("appsignal:")
|
14
26
|
end
|
15
27
|
end
|
16
28
|
|
17
29
|
describe "#call" do
|
18
|
-
let(:catcher)
|
30
|
+
let(:catcher) do
|
31
|
+
silence { Appsignal::Rack::JSExceptionCatcher.new(app, options) }
|
32
|
+
end
|
19
33
|
after { catcher.call(env) }
|
20
34
|
|
21
35
|
context "when path is not frontend_error_catching_path" do
|
@@ -64,7 +64,7 @@ describe Appsignal::Transaction do
|
|
64
64
|
|
65
65
|
it "logs a debug message" do
|
66
66
|
create_transaction("2")
|
67
|
-
expect(log_contents(log)).to contains_log :
|
67
|
+
expect(log_contents(log)).to contains_log :warn,
|
68
68
|
"Trying to start new transaction with id '2', but a " \
|
69
69
|
"transaction with id '#{transaction_id}' is already " \
|
70
70
|
"running. Using transaction '#{transaction_id}'."
|
@@ -154,13 +154,8 @@ describe Appsignal::Transaction do
|
|
154
154
|
describe "#complete" do
|
155
155
|
context "when transaction is being sampled" do
|
156
156
|
it "samples data" do
|
157
|
-
expect(transaction.ext).to receive(:finish).and_return(true)
|
158
|
-
# Stub call to extension, because that would remove the transaction
|
159
|
-
# from the extension.
|
160
|
-
expect(transaction.ext).to receive(:complete)
|
161
|
-
|
162
157
|
transaction.set_tags(:foo => "bar")
|
163
|
-
transaction.complete
|
158
|
+
keep_transactions { transaction.complete }
|
164
159
|
expect(transaction.to_h["sample_data"]).to include(
|
165
160
|
"tags" => { "foo" => "bar" }
|
166
161
|
)
|
@@ -169,11 +164,8 @@ describe Appsignal::Transaction do
|
|
169
164
|
|
170
165
|
context "when transaction is not being sampled" do
|
171
166
|
it "does not sample data" do
|
172
|
-
|
173
|
-
expect(transaction.
|
174
|
-
expect(transaction.ext).to receive(:complete).and_call_original
|
175
|
-
|
176
|
-
transaction.complete
|
167
|
+
keep_transactions(:sample => false) { transaction.complete }
|
168
|
+
expect(transaction.to_h["sample_data"]).to be_empty
|
177
169
|
end
|
178
170
|
end
|
179
171
|
|
data/spec/lib/appsignal_spec.rb
CHANGED
@@ -30,7 +30,7 @@ describe Appsignal do
|
|
30
30
|
context "with no config set beforehand" do
|
31
31
|
it "should do nothing when config is not set and there is no valid config in the env" do
|
32
32
|
expect(Appsignal.logger).to receive(:error).with(
|
33
|
-
"Push
|
33
|
+
"Push API key not set after loading config"
|
34
34
|
).once
|
35
35
|
expect(Appsignal.logger).to receive(:error).with(
|
36
36
|
"Not starting, no valid config for this environment"
|
@@ -701,13 +701,12 @@ describe Appsignal do
|
|
701
701
|
context "when given a block" do
|
702
702
|
it "yields the transaction and allows additional metadata to be set" do
|
703
703
|
captured_transaction = nil
|
704
|
-
|
705
|
-
|
706
|
-
|
707
|
-
|
708
|
-
|
709
|
-
|
710
|
-
expect(transaction).to receive(:complete)
|
704
|
+
keep_transactions do
|
705
|
+
Appsignal.send_error(StandardError.new("my_error")) do |transaction|
|
706
|
+
captured_transaction = transaction
|
707
|
+
transaction.set_action("my_action")
|
708
|
+
transaction.set_namespace("my_namespace")
|
709
|
+
end
|
711
710
|
end
|
712
711
|
expect(captured_transaction.to_h).to include(
|
713
712
|
"namespace" => "my_namespace",
|
data/spec/spec_helper.rb
CHANGED
@@ -31,16 +31,9 @@ if DependencyHelper.rails_present?
|
|
31
31
|
end
|
32
32
|
end
|
33
33
|
require "appsignal"
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
remove_method :testing?
|
38
|
-
|
39
|
-
def testing?
|
40
|
-
true
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
34
|
+
# Include patches of AppSignal modules and classes to make test helpers
|
35
|
+
# available.
|
36
|
+
require File.join(DirectoryHelper.support_dir, "testing.rb")
|
44
37
|
|
45
38
|
puts "Running specs in #{RUBY_VERSION} on #{RUBY_PLATFORM}\n\n"
|
46
39
|
|
@@ -72,6 +65,12 @@ RSpec.configure do |config|
|
|
72
65
|
|
73
66
|
config.example_status_persistence_file_path = "spec/examples.txt"
|
74
67
|
config.fail_if_no_examples = true
|
68
|
+
config.mock_with :rspec do |mocks|
|
69
|
+
mocks.syntax = :expect
|
70
|
+
end
|
71
|
+
config.expect_with :rspec do |expectations|
|
72
|
+
expectations.syntax = :expect
|
73
|
+
end
|
75
74
|
|
76
75
|
def spec_system_tmp_dir
|
77
76
|
File.join(tmp_dir, "system-tmp")
|
@@ -114,7 +113,8 @@ RSpec.configure do |config|
|
|
114
113
|
end
|
115
114
|
|
116
115
|
config.after do
|
117
|
-
|
116
|
+
Appsignal::Testing.clear!
|
117
|
+
clear_current_transaction!
|
118
118
|
stop_minutely_probes
|
119
119
|
end
|
120
120
|
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= NotExistingConstant.not_existing_method %>
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require "appsignal/cli/helpers"
|
2
|
+
|
1
3
|
module CLIHelpers
|
2
4
|
def cli
|
3
5
|
Appsignal::CLI
|
@@ -10,7 +12,7 @@ module CLIHelpers
|
|
10
12
|
def format_cli_arguments_and_options(command, options = {})
|
11
13
|
[*command].tap do |o|
|
12
14
|
options.each do |key, value|
|
13
|
-
o << "--#{key}=#{value}"
|
15
|
+
o << (value.nil? ? "--#{key}" : "--#{key}=#{value}")
|
14
16
|
end
|
15
17
|
end
|
16
18
|
end
|
@@ -23,4 +25,16 @@ module CLIHelpers
|
|
23
25
|
# Prepare the input by rewinding the pointer in the StringIO
|
24
26
|
$stdin.rewind
|
25
27
|
end
|
28
|
+
|
29
|
+
def colorize(*args)
|
30
|
+
ColorizeHelper.colorize(*args)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
module ColorizeHelper
|
35
|
+
extend Appsignal::CLI::Helpers
|
36
|
+
|
37
|
+
def self.colorize(*_args)
|
38
|
+
super
|
39
|
+
end
|
26
40
|
end
|
@@ -29,9 +29,62 @@ module TransactionHelpers
|
|
29
29
|
)
|
30
30
|
end
|
31
31
|
|
32
|
+
# Returns the all {Appsignal::Transaction} objects created during this test
|
33
|
+
# run so far.
|
34
|
+
#
|
35
|
+
# @return [Array<Appsignal::Transaction>]
|
36
|
+
def created_transactions
|
37
|
+
Appsignal::Testing.transactions
|
38
|
+
end
|
39
|
+
|
40
|
+
# Returns the last created {Appsignal::Transaction}.
|
41
|
+
#
|
42
|
+
# @return [Appsignal::Transaction]
|
43
|
+
def last_transaction
|
44
|
+
created_transactions.last
|
45
|
+
end
|
46
|
+
|
32
47
|
# Use when {Appsignal::Transaction.clear_current_transaction!} is stubbed to
|
33
48
|
# clear the current transaction on the current thread.
|
34
49
|
def clear_current_transaction!
|
35
50
|
Thread.current[:appsignal_transaction] = nil
|
36
51
|
end
|
52
|
+
|
53
|
+
# Track the AppSignal transaction JSON when a transaction gets completed
|
54
|
+
# ({Appsignal::Transaction.complete}).
|
55
|
+
#
|
56
|
+
# It will also add sample data to the transaction when it gets completed.
|
57
|
+
# This can be disabled by setting the `sample` option to `false`.
|
58
|
+
#
|
59
|
+
# It will be tracked for every transaction that is started inside the
|
60
|
+
# `keep_transactions` block.
|
61
|
+
#
|
62
|
+
# @example Keep a transaction while also adding sample data
|
63
|
+
# keep_transactions do
|
64
|
+
# transaction = Appsignal::Transaction.new(...)
|
65
|
+
# transaction.complete
|
66
|
+
# transaction.to_h # => Hash with transaction data before it was completed
|
67
|
+
# end
|
68
|
+
#
|
69
|
+
# @example Keep a transaction without adding sample data
|
70
|
+
# keep_transactions :sample => false do
|
71
|
+
# transaction = Appsignal::Transaction.new(...)
|
72
|
+
# transaction.complete
|
73
|
+
# transaction.to_h
|
74
|
+
# # => Hash with transaction data before it was completed with an empty
|
75
|
+
# # Hash for the `sample_data` key.
|
76
|
+
# end
|
77
|
+
#
|
78
|
+
# @yield block to perform while the transactions are tracked.
|
79
|
+
# @param options [Hash]
|
80
|
+
# @option options [Boolean] :sample Whether or not to sample transactions.
|
81
|
+
# @return [Object] returns the block return value.
|
82
|
+
def keep_transactions(options = {})
|
83
|
+
Appsignal::Testing.keep_transactions = true
|
84
|
+
Appsignal::Testing.sample_transactions = options.fetch(:sample, true)
|
85
|
+
yield
|
86
|
+
ensure
|
87
|
+
Appsignal::Testing.keep_transactions = nil
|
88
|
+
Appsignal::Testing.sample_transactions = nil
|
89
|
+
end
|
37
90
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
RSpec::Matchers.define :have_colorized_text do |color, text|
|
2
|
+
match do |actual|
|
3
|
+
color_codes = Appsignal::CLI::Helpers::COLOR_CODES
|
4
|
+
reset_color_code = color_codes.fetch(:default)
|
5
|
+
color_code = color_codes.fetch(color)
|
6
|
+
|
7
|
+
@expected = "\e[#{color_code}m#{text}\e[#{reset_color_code}m"
|
8
|
+
expect(actual).to include(@expected)
|
9
|
+
end
|
10
|
+
|
11
|
+
diffable
|
12
|
+
attr_reader :expected
|
13
|
+
end
|
14
|
+
|
15
|
+
COLOR_TAG_MATCHER_REGEX = /\e\[(\d+)m/
|
16
|
+
RSpec::Matchers.define :have_color_markers do
|
17
|
+
match do |actual|
|
18
|
+
actual =~ COLOR_TAG_MATCHER_REGEX
|
19
|
+
end
|
20
|
+
|
21
|
+
failure_message do
|
22
|
+
"expected that output contains color markers: /\\e[\\d+m/"
|
23
|
+
end
|
24
|
+
|
25
|
+
failure_message_when_negated do
|
26
|
+
"expected that output does not contain color markers: /\\e[\\d+m/"
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,113 @@
|
|
1
|
+
module Appsignal
|
2
|
+
class << self
|
3
|
+
remove_method :testing?
|
4
|
+
|
5
|
+
# @api private
|
6
|
+
def testing?
|
7
|
+
true
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
# @api private
|
12
|
+
module Testing
|
13
|
+
class << self
|
14
|
+
def transactions
|
15
|
+
@transactions ||= []
|
16
|
+
end
|
17
|
+
|
18
|
+
def clear!
|
19
|
+
transactions.clear
|
20
|
+
end
|
21
|
+
|
22
|
+
attr_writer :keep_transactions
|
23
|
+
# @see TransactionHelpers#keep_transactions
|
24
|
+
def keep_transactions?
|
25
|
+
defined?(@keep_transactions) ? @keep_transactions : nil
|
26
|
+
end
|
27
|
+
|
28
|
+
attr_writer :sample_transactions
|
29
|
+
# @see TransactionHelpers#keep_transactions
|
30
|
+
def sample_transactions?
|
31
|
+
sample = defined?(@sample_transactions) ? @sample_transactions : nil
|
32
|
+
if sample.nil?
|
33
|
+
keep_transactions?
|
34
|
+
else
|
35
|
+
@sample_transactions
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
class Transaction
|
42
|
+
class << self
|
43
|
+
alias original_new new
|
44
|
+
|
45
|
+
# Override the {Appsignal::Transaction.new} method so we can track which
|
46
|
+
# transactions are created on the {Appsignal::Testing.transactions} list.
|
47
|
+
#
|
48
|
+
# @see TransactionHelpers#last_transaction
|
49
|
+
def new(*args)
|
50
|
+
transaction = original_new(*args)
|
51
|
+
Appsignal::Testing.transactions << transaction
|
52
|
+
transaction
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
class Extension
|
58
|
+
class Transaction
|
59
|
+
alias original_finish finish
|
60
|
+
|
61
|
+
# Override default {Extension::Transaction#finish} behavior to always
|
62
|
+
# return true, which tells the transaction to add its sample data (unless
|
63
|
+
# used in combination with {TransactionHelpers#keep_transactions}
|
64
|
+
# `:sample => false`). This allows us to use
|
65
|
+
# {Appsignal::Transaction#to_h} without relying on the extension sampling
|
66
|
+
# behavior.
|
67
|
+
#
|
68
|
+
# @see TransactionHelpers#keep_transactions
|
69
|
+
def finish(*args)
|
70
|
+
return_value = original_finish(*args)
|
71
|
+
return_value = true if Appsignal::Testing.sample_transactions?
|
72
|
+
return_value
|
73
|
+
end
|
74
|
+
|
75
|
+
alias original_complete complete
|
76
|
+
|
77
|
+
# Override default {Extension::Transaction#complete} behavior to
|
78
|
+
# store the transaction JSON before the transaction is completed
|
79
|
+
# and it's no longer possible to request the transaction JSON.
|
80
|
+
#
|
81
|
+
# @see TransactionHelpers#keep_transactions
|
82
|
+
# @see #_completed?
|
83
|
+
def complete
|
84
|
+
@completed = true # see {#_completed?} method
|
85
|
+
@transaction_json = to_json if Appsignal::Testing.keep_transactions?
|
86
|
+
original_complete
|
87
|
+
end
|
88
|
+
|
89
|
+
# Returns true when the Transaction was completed.
|
90
|
+
# {Appsignal::Extension::Transaction.complete} was called.
|
91
|
+
#
|
92
|
+
# @return [Boolean] returns if the transaction was completed.
|
93
|
+
def _completed?
|
94
|
+
@completed || false
|
95
|
+
end
|
96
|
+
|
97
|
+
alias original_to_json to_json
|
98
|
+
|
99
|
+
# Override default {Extension::Transaction#to_json} behavior to
|
100
|
+
# return the stored the transaction JSON when the transaction was
|
101
|
+
# completed.
|
102
|
+
#
|
103
|
+
# @see TransactionHelpers#keep_transactions
|
104
|
+
def to_json
|
105
|
+
if defined? @transaction_json
|
106
|
+
@transaction_json
|
107
|
+
else
|
108
|
+
original_to_json
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: appsignal
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Beekman
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2019-11-
|
13
|
+
date: 2019-11-27 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rack
|
@@ -332,6 +332,7 @@ files:
|
|
332
332
|
- spec/lib/puma/appsignal_spec.rb
|
333
333
|
- spec/spec_helper.rb
|
334
334
|
- spec/support/fixtures/generated_config.yml
|
335
|
+
- spec/support/fixtures/projects/broken/config/appsignal.yml
|
335
336
|
- spec/support/fixtures/projects/valid/config/application.rb
|
336
337
|
- spec/support/fixtures/projects/valid/config/appsignal.yml
|
337
338
|
- spec/support/fixtures/projects/valid/config/environments/development.rb
|
@@ -353,7 +354,9 @@ files:
|
|
353
354
|
- spec/support/helpers/time_helpers.rb
|
354
355
|
- spec/support/helpers/transaction_helpers.rb
|
355
356
|
- spec/support/helpers/wait_for_helper.rb
|
357
|
+
- spec/support/matchers/be_completed.rb
|
356
358
|
- spec/support/matchers/contains_log.rb
|
359
|
+
- spec/support/matchers/have_colorized_text.rb
|
357
360
|
- spec/support/mocks/fake_gc_profiler.rb
|
358
361
|
- spec/support/mocks/mock_extension.rb
|
359
362
|
- spec/support/mocks/mock_probe.rb
|
@@ -361,6 +364,7 @@ files:
|
|
361
364
|
- spec/support/shared_examples/instrument.rb
|
362
365
|
- spec/support/stubs/delayed_job.rb
|
363
366
|
- spec/support/stubs/sidekiq/api.rb
|
367
|
+
- spec/support/testing.rb
|
364
368
|
- support/bundler_wrapper
|
365
369
|
- support/install_deps
|
366
370
|
homepage: https://github.com/appsignal/appsignal-ruby
|
@@ -466,6 +470,7 @@ test_files:
|
|
466
470
|
- spec/lib/puma/appsignal_spec.rb
|
467
471
|
- spec/spec_helper.rb
|
468
472
|
- spec/support/fixtures/generated_config.yml
|
473
|
+
- spec/support/fixtures/projects/broken/config/appsignal.yml
|
469
474
|
- spec/support/fixtures/projects/valid/config/application.rb
|
470
475
|
- spec/support/fixtures/projects/valid/config/appsignal.yml
|
471
476
|
- spec/support/fixtures/projects/valid/config/environments/development.rb
|
@@ -487,7 +492,9 @@ test_files:
|
|
487
492
|
- spec/support/helpers/time_helpers.rb
|
488
493
|
- spec/support/helpers/transaction_helpers.rb
|
489
494
|
- spec/support/helpers/wait_for_helper.rb
|
495
|
+
- spec/support/matchers/be_completed.rb
|
490
496
|
- spec/support/matchers/contains_log.rb
|
497
|
+
- spec/support/matchers/have_colorized_text.rb
|
491
498
|
- spec/support/mocks/fake_gc_profiler.rb
|
492
499
|
- spec/support/mocks/mock_extension.rb
|
493
500
|
- spec/support/mocks/mock_probe.rb
|
@@ -495,3 +502,4 @@ test_files:
|
|
495
502
|
- spec/support/shared_examples/instrument.rb
|
496
503
|
- spec/support/stubs/delayed_job.rb
|
497
504
|
- spec/support/stubs/sidekiq/api.rb
|
505
|
+
- spec/support/testing.rb
|