appsignal 2.0.3 → 2.0.4

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.
@@ -3,11 +3,8 @@ require "appsignal/cli"
3
3
  describe Appsignal::CLI::NotifyOfDeploy do
4
4
  include CLIHelpers
5
5
 
6
- let(:out_stream) { StringIO.new }
7
- let(:output) { out_stream.string }
8
- around do |example|
9
- capture_stdout(out_stream) { example.run }
10
- end
6
+ let(:out_stream) { std_stream }
7
+ let(:output) { out_stream.read }
11
8
 
12
9
  define :include_deploy_notification do
13
10
  match do |log|
@@ -35,7 +32,9 @@ describe Appsignal::CLI::NotifyOfDeploy do
35
32
  end
36
33
 
37
34
  def run
38
- run_cli("notify_of_deploy", options)
35
+ capture_stdout(out_stream) do
36
+ run_cli("notify_of_deploy", options)
37
+ end
39
38
  end
40
39
 
41
40
  context "without config" do
@@ -1,52 +1,46 @@
1
1
  require 'appsignal/cli'
2
2
 
3
3
  describe Appsignal::CLI do
4
- let(:out_stream) { StringIO.new }
4
+ let(:out_stream) { std_stream }
5
+ let(:output) { out_stream.read }
5
6
  let(:cli) { Appsignal::CLI }
6
- before do
7
- Dir.stub(:pwd => project_fixture_path)
8
- cli.options = {:environment => 'production'}
9
- end
10
- around do |example|
11
- capture_stdout(out_stream) { example.run }
12
- end
13
-
14
- describe "#config" do
15
- subject { cli.config }
16
-
17
- it { should be_instance_of(Appsignal::Config) }
18
- its(:valid?) { should be_true }
19
- end
7
+ before { Dir.stub(:pwd => project_fixture_path) }
20
8
 
21
9
  it "should print the help with no arguments, -h and --help" do
22
10
  [nil, '-h', '--help'].each do |arg|
23
- lambda {
24
- cli.run([arg].compact)
25
- }.should raise_error(SystemExit)
26
-
27
- out_stream.string.should include 'appsignal <command> [options]'
28
- out_stream.string.should include \
11
+ expect do
12
+ capture_stdout(out_stream) do
13
+ cli.run([arg].compact)
14
+ end
15
+ end.to raise_error(SystemExit)
16
+
17
+ expect(output).to include 'appsignal <command> [options]'
18
+ expect(output).to include \
29
19
  'Available commands: demo, diagnose, install, notify_of_deploy'
30
20
  end
31
21
  end
32
22
 
33
23
  it "should print the version with -v and --version" do
34
24
  ['-v', '--version'].each do |arg|
35
- lambda {
36
- cli.run([arg])
37
- }.should raise_error(SystemExit)
38
-
39
- out_stream.string.should include 'AppSignal'
40
- out_stream.string.should include '.'
25
+ expect do
26
+ capture_stdout(out_stream) do
27
+ cli.run([arg])
28
+ end
29
+ end.to raise_error(SystemExit)
30
+
31
+ expect(output).to include 'AppSignal'
32
+ expect(output).to include '.'
41
33
  end
42
34
  end
43
35
 
44
36
  it "should print a notice if a command does not exist" do
45
- lambda {
37
+ expect do
38
+ capture_stdout(out_stream) do
46
39
  cli.run(['nonsense'])
47
- }.should raise_error(SystemExit)
40
+ end
41
+ end.to raise_error(SystemExit)
48
42
 
49
- out_stream.string.should include "Command 'nonsense' does not exist, run "\
43
+ expect(output).to include "Command 'nonsense' does not exist, run "\
50
44
  "appsignal -h to see the help"
51
45
  end
52
46
 
@@ -59,18 +53,4 @@ describe Appsignal::CLI do
59
53
  ])
60
54
  end
61
55
  end
62
-
63
- describe "install" do
64
- it "should call Appsignal::Install.install" do
65
- Appsignal::CLI::Install.should_receive(:run).with(
66
- 'api-key',
67
- instance_of(Appsignal::Config)
68
- )
69
-
70
- cli.run([
71
- 'install',
72
- 'api-key'
73
- ])
74
- end
75
- end
76
56
  end
@@ -1,4 +1,34 @@
1
1
  describe Appsignal::Config do
2
+ describe "#initialize" do
3
+ subject { config.env }
4
+
5
+ describe "environment" do
6
+ context "when environment is nil" do
7
+ let(:config) { described_class.new("", "") }
8
+
9
+ it "sets an empty string" do
10
+ expect(subject).to eq("")
11
+ end
12
+ end
13
+
14
+ context "when environment is given" do
15
+ let(:config) { described_class.new("", "my_env") }
16
+
17
+ it "sets the environment" do
18
+ expect(subject).to eq("my_env")
19
+ end
20
+
21
+ context "with APPSIGNAL_APP_ENV environment variable" do
22
+ before { ENV["APPSIGNAL_APP_ENV"] = "my_env_env" }
23
+
24
+ it "uses the environment variable" do
25
+ expect(subject).to eq("my_env_env")
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+
2
32
  describe "config based on the system" do
3
33
  let(:config) { project_fixture_config(:none) }
4
34
 
@@ -407,12 +437,13 @@ describe Appsignal::Config do
407
437
  end
408
438
 
409
439
  describe "#log_file_path" do
410
- let(:stdout) { StringIO.new }
440
+ let(:out_stream) { std_stream }
441
+ let(:output) { out_stream.read }
411
442
  let(:config) { project_fixture_config('production', :log_path => log_path) }
412
- subject { config.log_file_path }
443
+ subject { capture_stdout(out_stream) { config.log_file_path } }
413
444
  around do |example|
414
445
  recognize_as_container(:none) do
415
- capture_stdout(stdout) { example.run }
446
+ example.run
416
447
  end
417
448
  end
418
449
 
@@ -427,7 +458,7 @@ describe Appsignal::Config do
427
458
 
428
459
  it "prints no warning" do
429
460
  subject
430
- expect(stdout.string).to be_empty
461
+ expect(output).to be_empty
431
462
  end
432
463
  end
433
464
 
@@ -445,7 +476,7 @@ describe Appsignal::Config do
445
476
 
446
477
  it "prints a warning" do
447
478
  subject
448
- expect(stdout.string).to include "appsignal: Unable to log to '#{log_path}'. "\
479
+ expect(output).to include "appsignal: Unable to log to '#{log_path}'. "\
449
480
  "Logging to '#{system_tmp_dir}' instead."
450
481
  end
451
482
  end
@@ -459,7 +490,7 @@ describe Appsignal::Config do
459
490
 
460
491
  it "prints a warning" do
461
492
  subject
462
- expect(stdout.string).to include "appsignal: Unable to log to '#{log_path}' "\
493
+ expect(output).to include "appsignal: Unable to log to '#{log_path}' "\
463
494
  "or the '#{system_tmp_dir}' fallback."
464
495
  end
465
496
  end
@@ -476,12 +507,12 @@ describe Appsignal::Config do
476
507
 
477
508
  context "when root_path is set" do
478
509
  it "returns returns the project log location" do
479
- expect(subject).to eq File.join(config.root_path, 'appsignal.log')
510
+ expect(subject).to eq File.join(config.root_path, 'log/appsignal.log')
480
511
  end
481
512
 
482
513
  it "prints no warning" do
483
514
  subject
484
- expect(stdout.string).to be_empty
515
+ expect(output).to be_empty
485
516
  end
486
517
  end
487
518
  end
@@ -11,7 +11,7 @@ describe Appsignal::Demo do
11
11
 
12
12
  context "without config" do
13
13
  it "returns false" do
14
- expect(subject).to be_false
14
+ expect(silence { subject }).to be_false
15
15
  end
16
16
  end
17
17
 
@@ -36,10 +36,12 @@ describe Appsignal::Demo do
36
36
  let(:config) { project_fixture_config("production") }
37
37
  before do
38
38
  Appsignal.config = config
39
- expect(Appsignal::Transaction).to receive(:create)
40
- .ordered
41
- .with(kind_of(String), Appsignal::Transaction::HTTP_REQUEST, kind_of(::Rack::Request))
42
- .and_return(error_transaction)
39
+ expect(Appsignal::Transaction).to receive(:new).with(
40
+ kind_of(String),
41
+ Appsignal::Transaction::HTTP_REQUEST,
42
+ kind_of(::Rack::Request),
43
+ kind_of(Hash)
44
+ ).and_return(error_transaction)
43
45
  end
44
46
  subject { described_class.send(:create_example_error_request) }
45
47
 
@@ -57,9 +59,12 @@ describe Appsignal::Demo do
57
59
  let(:config) { project_fixture_config("production") }
58
60
  before do
59
61
  Appsignal.config = config
60
- expect(Appsignal::Transaction).to receive(:create)
61
- .with(kind_of(String), Appsignal::Transaction::HTTP_REQUEST, kind_of(::Rack::Request))
62
- .and_return(performance_transaction)
62
+ expect(Appsignal::Transaction).to receive(:new).with(
63
+ kind_of(String),
64
+ Appsignal::Transaction::HTTP_REQUEST,
65
+ kind_of(::Rack::Request),
66
+ kind_of(Hash)
67
+ ).and_return(performance_transaction)
63
68
  end
64
69
  subject { described_class.send(:create_example_performance_request) }
65
70
 
@@ -44,6 +44,7 @@ describe Appsignal::Hooks do
44
44
  Appsignal::Hooks.load_hooks
45
45
  Appsignal::Hooks.load_hooks
46
46
  Appsignal::Hooks.hooks[:mock_present_hook].installed?.should be_true
47
+ Appsignal::Hooks.hooks.delete(:mock_present_hook)
47
48
  end
48
49
 
49
50
  it "should not install if depencies are not present" do
@@ -57,6 +58,7 @@ describe Appsignal::Hooks do
57
58
  Appsignal::Hooks.load_hooks
58
59
 
59
60
  Appsignal::Hooks.hooks[:mock_not_present_hook].installed?.should be_false
61
+ Appsignal::Hooks.hooks.delete(:mock_not_present_hook)
60
62
  end
61
63
 
62
64
  it "should not install if there is an error while installing" do
@@ -70,6 +72,7 @@ describe Appsignal::Hooks do
70
72
  Appsignal::Hooks.load_hooks
71
73
 
72
74
  Appsignal::Hooks.hooks[:mock_error_hook].installed?.should be_false
75
+ Appsignal::Hooks.hooks.delete(:mock_error_hook)
73
76
  end
74
77
  end
75
78
 
@@ -15,15 +15,18 @@ describe Object do
15
15
 
16
16
  context "when active" do
17
17
  let(:transaction) { http_request_transaction }
18
- before { Appsignal.config = project_fixture_config }
18
+ before do
19
+ expect(Appsignal::Transaction).to receive(:current).at_least(:once).and_return(transaction)
20
+ Appsignal.config = project_fixture_config
21
+ end
19
22
  after { Appsignal.config = nil }
20
23
 
21
24
  context "with anonymous class" do
22
25
  it "instruments the method and calls it" do
23
26
  expect(Appsignal.active?).to be_true
24
- transaction.should_receive(:start_event)
25
- transaction.should_receive(:finish_event).with \
26
- "foo.AnonymousClass.other", nil, nil, 0
27
+ expect(transaction).to receive(:start_event)
28
+ expect(transaction).to receive(:finish_event).with \
29
+ "foo.AnonymousClass.other", nil, nil, Appsignal::EventFormatter::DEFAULT
27
30
  expect(instance.foo).to eq(1)
28
31
  end
29
32
  end
@@ -42,9 +45,9 @@ describe Object do
42
45
 
43
46
  it "instruments the method and calls it" do
44
47
  expect(Appsignal.active?).to be_true
45
- transaction.should_receive(:start_event)
46
- transaction.should_receive(:finish_event).with \
47
- "foo.NamedClass.other", nil, nil, 0
48
+ expect(transaction).to receive(:start_event)
49
+ expect(transaction).to receive(:finish_event).with \
50
+ "foo.NamedClass.other", nil, nil, Appsignal::EventFormatter::DEFAULT
48
51
  expect(instance.foo).to eq(1)
49
52
  end
50
53
  end
@@ -67,9 +70,10 @@ describe Object do
67
70
 
68
71
  it "instruments the method and calls it" do
69
72
  expect(Appsignal.active?).to be_true
70
- transaction.should_receive(:start_event)
71
- transaction.should_receive(:finish_event).with \
72
- "bar.NamedClass.NestedModule.MyModule.other", nil, nil, 0
73
+ expect(transaction).to receive(:start_event)
74
+ expect(transaction).to receive(:finish_event).with \
75
+ "bar.NamedClass.NestedModule.MyModule.other", nil, nil,
76
+ Appsignal::EventFormatter::DEFAULT
73
77
  expect(instance.bar).to eq(2)
74
78
  end
75
79
  end
@@ -86,9 +90,9 @@ describe Object do
86
90
 
87
91
  it "instruments with custom name" do
88
92
  expect(Appsignal.active?).to be_true
89
- transaction.should_receive(:start_event)
90
- transaction.should_receive(:finish_event).with \
91
- "my_method.group", nil, nil, 0
93
+ expect(transaction).to receive(:start_event)
94
+ expect(transaction).to receive(:finish_event).with \
95
+ "my_method.group", nil, nil, Appsignal::EventFormatter::DEFAULT
92
96
  expect(instance.foo).to eq(1)
93
97
  end
94
98
  end
@@ -132,15 +136,19 @@ describe Object do
132
136
 
133
137
  context "when active" do
134
138
  let(:transaction) { http_request_transaction }
135
- before { Appsignal.config = project_fixture_config }
139
+ before do
140
+ expect(Appsignal::Transaction).to receive(:current).at_least(:once)
141
+ .and_return(transaction)
142
+ Appsignal.config = project_fixture_config
143
+ end
136
144
  after { Appsignal.config = nil }
137
145
 
138
146
  context "with anonymous class" do
139
147
  it "instruments the method and calls it" do
140
148
  expect(Appsignal.active?).to be_true
141
- transaction.should_receive(:start_event)
142
- transaction.should_receive(:finish_event).with \
143
- "bar.class_method.AnonymousClass.other", nil, nil, 0
149
+ expect(transaction).to receive(:start_event)
150
+ expect(transaction).to receive(:finish_event).with \
151
+ "bar.class_method.AnonymousClass.other", nil, nil, Appsignal::EventFormatter::DEFAULT
144
152
  expect(klass.bar).to eq(2)
145
153
  end
146
154
  end
@@ -159,9 +167,9 @@ describe Object do
159
167
 
160
168
  it "instruments the method and calls it" do
161
169
  expect(Appsignal.active?).to be_true
162
- transaction.should_receive(:start_event)
163
- transaction.should_receive(:finish_event).with \
164
- "bar.class_method.NamedClass.other", nil, nil, 0
170
+ expect(transaction).to receive(:start_event)
171
+ expect(transaction).to receive(:finish_event).with \
172
+ "bar.class_method.NamedClass.other", nil, nil, Appsignal::EventFormatter::DEFAULT
165
173
  expect(klass.bar).to eq(2)
166
174
  end
167
175
 
@@ -183,9 +191,10 @@ describe Object do
183
191
 
184
192
  it "instruments the method and calls it" do
185
193
  expect(Appsignal.active?).to be_true
186
- transaction.should_receive(:start_event)
187
- transaction.should_receive(:finish_event).with \
188
- "bar.class_method.NamedClass.NestedModule.MyModule.other", nil, nil, 0
194
+ expect(transaction).to receive(:start_event)
195
+ expect(transaction).to receive(:finish_event).with \
196
+ "bar.class_method.NamedClass.NestedModule.MyModule.other", nil, nil,
197
+ Appsignal::EventFormatter::DEFAULT
189
198
  expect(klass.bar).to eq(2)
190
199
  end
191
200
  end
@@ -203,9 +212,9 @@ describe Object do
203
212
 
204
213
  it "instruments with custom name" do
205
214
  expect(Appsignal.active?).to be_true
206
- transaction.should_receive(:start_event)
207
- transaction.should_receive(:finish_event).with \
208
- "my_method.group", nil, nil, 0
215
+ expect(transaction).to receive(:start_event)
216
+ expect(transaction).to receive(:finish_event).with \
217
+ "my_method.group", nil, nil, Appsignal::EventFormatter::DEFAULT
209
218
  expect(klass.bar).to eq(2)
210
219
  end
211
220
  end
@@ -11,24 +11,23 @@ describe Appsignal::Marker do
11
11
  config
12
12
  )
13
13
  end
14
- let(:out_stream) { StringIO.new }
15
- around do |example|
16
- capture_stdout(out_stream) { example.run }
17
- end
14
+ let(:out_stream) { std_stream }
15
+ let(:output) { out_stream.read }
18
16
 
19
17
  describe "#transmit" do
20
18
  def stub_marker_request
21
19
  stub_api_request config, "markers", marker.marker_data
22
20
  end
23
21
 
22
+ def run
23
+ capture_stdout(out_stream) { marker.transmit }
24
+ end
25
+
24
26
  context "when request is valid" do
25
- before do
26
- stub_marker_request.to_return(:status => 200)
27
- marker.transmit
28
- end
27
+ before { stub_marker_request.to_return(:status => 200) }
29
28
 
30
29
  it "outputs success" do
31
- output = out_stream.string
30
+ run
32
31
  expect(output).to include \
33
32
  'Notifying AppSignal of deploy with: revision: 503ce0923ed177a3ce000005, user: batman',
34
33
  'AppSignal has been notified of this deploy!'
@@ -36,13 +35,10 @@ describe Appsignal::Marker do
36
35
  end
37
36
 
38
37
  context "when request is invalid" do
39
- before do
40
- stub_marker_request.to_return(:status => 500)
41
- marker.transmit
42
- end
38
+ before { stub_marker_request.to_return(:status => 500) }
43
39
 
44
40
  it "outputs failure" do
45
- output = out_stream.string
41
+ run
46
42
  expect(output).to include \
47
43
  'Notifying AppSignal of deploy with: revision: 503ce0923ed177a3ce000005, user: batman',
48
44
  "Something went wrong while trying to notify AppSignal: 500 at "\