appmap 0.35.0 → 0.37.2
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/.dockerignore +1 -1
- data/.gitignore +2 -1
- data/.rubocop.yml +10 -0
- data/CHANGELOG.md +22 -0
- data/README.md +11 -8
- data/Rakefile +3 -2
- data/appmap.gemspec +2 -1
- data/appmap.yml +1 -7
- data/lib/appmap.rb +2 -2
- data/lib/appmap/class_map.rb +20 -6
- data/lib/appmap/config.rb +53 -23
- data/lib/appmap/event.rb +21 -6
- data/lib/appmap/hook.rb +1 -1
- data/lib/appmap/rails/request_handler.rb +8 -1
- data/lib/appmap/railtie.rb +1 -1
- data/lib/appmap/rspec.rb +1 -1
- data/lib/appmap/version.rb +2 -2
- data/spec/abstract_controller4_base_spec.rb +27 -28
- data/spec/abstract_controller_base_spec.rb +43 -39
- data/spec/class_map_spec.rb +36 -0
- data/spec/fixtures/hook/exception_method.rb +44 -0
- data/spec/fixtures/hook/instance_method.rb +4 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/.dockerignore +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/.gitignore +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/.rspec +0 -0
- data/{.ruby-version → spec/fixtures/rails5_users_app/.ruby-version} +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/Dockerfile +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/Dockerfile.pg +0 -0
- data/spec/fixtures/rails5_users_app/Gemfile +51 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/Rakefile +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/app/controllers/api/users_controller.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/app/controllers/application_controller.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/app/controllers/concerns/.keep +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/app/controllers/health_controller.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/app/controllers/users_controller.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/app/models/activerecord/user.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/app/models/concerns/.keep +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/app/models/sequel/user.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/app/views/layouts/application.html.haml +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/app/views/users/index.html.haml +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/appmap.yml +1 -1
- data/spec/fixtures/{rails_users_app → rails5_users_app}/bin/appmap +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/bin/byebug +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/bin/gli +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/bin/htmldiff +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/bin/ldiff +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/bin/nokogiri +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/bin/rackup +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/bin/rails +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/bin/rake +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/bin/rspec +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/bin/ruby-parse +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/bin/ruby-rewrite +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/bin/sequel +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/bin/setup +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/bin/sprockets +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/bin/thor +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/bin/update +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/config.ru +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/config/application.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/config/boot.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/config/credentials.yml.enc +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/config/database.yml +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/config/environment.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/config/environments/development.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/config/environments/production.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/config/environments/test.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/config/initializers/application_controller_renderer.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/config/initializers/backtrace_silencers.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/config/initializers/cors.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/config/initializers/filter_parameter_logging.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/config/initializers/inflections.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/config/initializers/mime_types.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/config/initializers/record_button.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/config/initializers/wrap_parameters.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/config/locales/en.yml +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/config/routes.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/create_app +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/db/migrate/20190728211408_create_users.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/db/schema.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/docker-compose.yml +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/features/api_users.feature +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/features/support/env.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/features/support/hooks.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/features/support/steps.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/lib/tasks/.keep +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/log/.keep +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/public/robots.txt +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/spec/controllers/users_controller_api_spec.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/spec/models/user_spec.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/spec/rails_helper.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/spec/spec_helper.rb +0 -0
- data/spec/fixtures/{rails_users_app → rails5_users_app}/users_app/.gitignore +0 -0
- data/spec/fixtures/rails6_users_app/.dockerignore +1 -0
- data/spec/fixtures/rails6_users_app/.gitignore +39 -0
- data/spec/fixtures/rails6_users_app/.rspec +1 -0
- data/spec/fixtures/{rails_users_app → rails6_users_app}/.ruby-version +0 -0
- data/spec/fixtures/rails6_users_app/Dockerfile +29 -0
- data/spec/fixtures/rails6_users_app/Dockerfile.pg +3 -0
- data/spec/fixtures/{rails_users_app → rails6_users_app}/Gemfile +0 -0
- data/spec/fixtures/rails6_users_app/Rakefile +6 -0
- data/spec/fixtures/rails6_users_app/app/controllers/api/users_controller.rb +27 -0
- data/spec/fixtures/rails6_users_app/app/controllers/application_controller.rb +2 -0
- data/spec/fixtures/rails6_users_app/app/controllers/concerns/.keep +0 -0
- data/spec/fixtures/rails6_users_app/app/controllers/health_controller.rb +5 -0
- data/spec/fixtures/rails6_users_app/app/controllers/users_controller.rb +5 -0
- data/spec/fixtures/rails6_users_app/app/models/activerecord/user.rb +18 -0
- data/spec/fixtures/rails6_users_app/app/models/concerns/.keep +0 -0
- data/spec/fixtures/rails6_users_app/app/models/sequel/user.rb +25 -0
- data/spec/fixtures/rails6_users_app/app/views/layouts/application.html.haml +7 -0
- data/spec/fixtures/rails6_users_app/app/views/users/index.html.haml +7 -0
- data/spec/fixtures/rails6_users_app/appmap.yml +3 -0
- data/spec/fixtures/rails6_users_app/bin/appmap +29 -0
- data/spec/fixtures/rails6_users_app/bin/byebug +29 -0
- data/spec/fixtures/rails6_users_app/bin/gli +29 -0
- data/spec/fixtures/rails6_users_app/bin/htmldiff +29 -0
- data/spec/fixtures/rails6_users_app/bin/ldiff +29 -0
- data/spec/fixtures/rails6_users_app/bin/nokogiri +29 -0
- data/spec/fixtures/rails6_users_app/bin/rackup +29 -0
- data/spec/fixtures/rails6_users_app/bin/rails +4 -0
- data/spec/fixtures/rails6_users_app/bin/rake +29 -0
- data/spec/fixtures/rails6_users_app/bin/rspec +29 -0
- data/spec/fixtures/rails6_users_app/bin/ruby-parse +29 -0
- data/spec/fixtures/rails6_users_app/bin/ruby-rewrite +29 -0
- data/spec/fixtures/rails6_users_app/bin/sequel +29 -0
- data/spec/fixtures/rails6_users_app/bin/setup +25 -0
- data/spec/fixtures/rails6_users_app/bin/sprockets +29 -0
- data/spec/fixtures/rails6_users_app/bin/thor +29 -0
- data/spec/fixtures/rails6_users_app/bin/update +25 -0
- data/spec/fixtures/rails6_users_app/config.ru +5 -0
- data/spec/fixtures/rails6_users_app/config/application.rb +51 -0
- data/spec/fixtures/rails6_users_app/config/boot.rb +3 -0
- data/spec/fixtures/rails6_users_app/config/credentials.yml.enc +1 -0
- data/spec/fixtures/rails6_users_app/config/database.yml +18 -0
- data/spec/fixtures/rails6_users_app/config/environment.rb +5 -0
- data/spec/fixtures/rails6_users_app/config/environments/development.rb +40 -0
- data/spec/fixtures/rails6_users_app/config/environments/production.rb +68 -0
- data/spec/fixtures/rails6_users_app/config/environments/test.rb +36 -0
- data/spec/fixtures/rails6_users_app/config/initializers/application_controller_renderer.rb +8 -0
- data/spec/fixtures/rails6_users_app/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/fixtures/rails6_users_app/config/initializers/cors.rb +16 -0
- data/spec/fixtures/rails6_users_app/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/fixtures/rails6_users_app/config/initializers/inflections.rb +16 -0
- data/spec/fixtures/rails6_users_app/config/initializers/mime_types.rb +4 -0
- data/spec/fixtures/rails6_users_app/config/initializers/record_button.rb +3 -0
- data/spec/fixtures/rails6_users_app/config/initializers/wrap_parameters.rb +9 -0
- data/spec/fixtures/rails6_users_app/config/locales/en.yml +33 -0
- data/spec/fixtures/rails6_users_app/config/routes.rb +11 -0
- data/spec/fixtures/rails6_users_app/create_app +27 -0
- data/spec/fixtures/rails6_users_app/db/migrate/20190728211408_create_users.rb +9 -0
- data/spec/fixtures/rails6_users_app/db/schema.rb +23 -0
- data/spec/fixtures/rails6_users_app/docker-compose.yml +28 -0
- data/spec/fixtures/rails6_users_app/features/api_users.feature +13 -0
- data/spec/fixtures/rails6_users_app/features/support/env.rb +4 -0
- data/spec/fixtures/rails6_users_app/features/support/hooks.rb +11 -0
- data/spec/fixtures/rails6_users_app/features/support/steps.rb +18 -0
- data/spec/fixtures/rails6_users_app/lib/tasks/.keep +0 -0
- data/spec/fixtures/rails6_users_app/log/.keep +0 -0
- data/spec/fixtures/rails6_users_app/public/robots.txt +1 -0
- data/spec/fixtures/rails6_users_app/spec/controllers/users_controller_api_spec.rb +29 -0
- data/spec/fixtures/rails6_users_app/spec/models/user_spec.rb +39 -0
- data/spec/fixtures/rails6_users_app/spec/rails_helper.rb +66 -0
- data/spec/fixtures/rails6_users_app/spec/spec_helper.rb +96 -0
- data/spec/fixtures/rails6_users_app/users_app/.gitignore +20 -0
- data/spec/hook_spec.rb +196 -11
- data/spec/rails_spec_helper.rb +5 -5
- data/spec/railtie_spec.rb +31 -32
- data/spec/record_sql_rails4_pg_spec.rb +47 -48
- data/spec/record_sql_rails_pg_spec.rb +62 -63
- data/spec/remote_recording_spec.rb +90 -89
- data/spec/rspec_feature_metadata_spec.rb +17 -18
- data/test/cli_test.rb +0 -10
- data/test/expectations/openssl_test_key_sign1.json +55 -0
- data/test/expectations/openssl_test_key_sign2.json +58 -0
- data/test/fixtures/gem_test/Gemfile +6 -0
- data/test/fixtures/gem_test/appmap.yml +3 -0
- data/test/fixtures/gem_test/test/to_param_test.rb +14 -0
- data/test/gem_test.rb +34 -0
- data/test/minitest_test.rb +2 -2
- data/test/openssl_test.rb +10 -165
- metadata +171 -80
|
@@ -14,7 +14,14 @@ module AppMap
|
|
|
14
14
|
|
|
15
15
|
@request_method = request.request_method
|
|
16
16
|
@path_info = request.path_info.split('?')[0]
|
|
17
|
-
|
|
17
|
+
# ActionDispatch::Http::ParameterFilter is deprecated
|
|
18
|
+
parameter_filter_cls = \
|
|
19
|
+
if defined?(ActiveSupport::ParameterFilter)
|
|
20
|
+
ActiveSupport::ParameterFilter
|
|
21
|
+
else
|
|
22
|
+
ActionDispatch::Http::ParameterFilter
|
|
23
|
+
end
|
|
24
|
+
@params = parameter_filter_cls.new(::Rails.application.config.filter_parameters).filter(request.params)
|
|
18
25
|
end
|
|
19
26
|
|
|
20
27
|
def to_h
|
data/lib/appmap/railtie.rb
CHANGED
data/lib/appmap/rspec.rb
CHANGED
|
@@ -148,7 +148,7 @@ module AppMap
|
|
|
148
148
|
|
|
149
149
|
AppMap::RSpec.add_event_methods @trace.event_methods
|
|
150
150
|
|
|
151
|
-
class_map = AppMap.class_map(@trace.event_methods)
|
|
151
|
+
class_map = AppMap.class_map(@trace.event_methods, include_source: false)
|
|
152
152
|
|
|
153
153
|
description = []
|
|
154
154
|
scope = ScopeExample.new(example)
|
data/lib/appmap/version.rb
CHANGED
|
@@ -1,52 +1,50 @@
|
|
|
1
1
|
require 'rails_spec_helper'
|
|
2
2
|
|
|
3
3
|
describe 'AbstractControllerBase' do
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
cmd = "docker-compose run --rm -e APPMAP=true -v #{File.absolute_path tmpdir}:/app/tmp app ./bin/rspec spec/controllers/users_controller_api_spec.rb:8"
|
|
11
|
-
run_cmd cmd, chdir: @fixture_dir
|
|
4
|
+
include_context 'Rails app pg database', 'spec/fixtures/rails4_users_app' do
|
|
5
|
+
around(:each) do |example|
|
|
6
|
+
FileUtils.rm_rf tmpdir
|
|
7
|
+
FileUtils.mkdir_p tmpdir
|
|
8
|
+
cmd = "docker-compose run --rm -e APPMAP=true -v #{File.absolute_path tmpdir}:/app/tmp app ./bin/rspec spec/controllers/users_controller_api_spec.rb:8"
|
|
9
|
+
run_cmd cmd, chdir: fixture_dir
|
|
12
10
|
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
example.run
|
|
12
|
+
end
|
|
15
13
|
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
let(:tmpdir) { 'tmp/spec/AbstractControllerBase' }
|
|
15
|
+
let(:appmap_json) { File.join(tmpdir, 'appmap/rspec/Api_UsersController_POST_api_users_with_required_parameters_creates_a_user.appmap.json') }
|
|
18
16
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
17
|
+
describe 'testing with rspec' do
|
|
18
|
+
it 'Message fields are recorded in the appmap' do
|
|
19
|
+
expect(File).to exist(appmap_json)
|
|
20
|
+
appmap = JSON.parse(File.read(appmap_json)).to_yaml
|
|
23
21
|
|
|
24
|
-
|
|
22
|
+
expect(appmap).to include(<<-MESSAGE.strip)
|
|
25
23
|
message:
|
|
26
24
|
- name: login
|
|
27
25
|
class: String
|
|
28
26
|
value: alice
|
|
29
27
|
object_id:
|
|
30
|
-
|
|
28
|
+
MESSAGE
|
|
31
29
|
|
|
32
|
-
|
|
30
|
+
expect(appmap).to include(<<-MESSAGE.strip)
|
|
33
31
|
- name: password
|
|
34
32
|
class: String
|
|
35
33
|
value: "[FILTERED]"
|
|
36
34
|
object_id:
|
|
37
|
-
|
|
35
|
+
MESSAGE
|
|
38
36
|
|
|
39
|
-
|
|
37
|
+
expect(appmap).to include(<<-SERVER_REQUEST.strip)
|
|
40
38
|
http_server_request:
|
|
41
39
|
request_method: POST
|
|
42
40
|
path_info: "/api/users"
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
41
|
+
SERVER_REQUEST
|
|
42
|
+
end
|
|
43
|
+
it 'Properly captures method parameters in the appmap' do
|
|
44
|
+
expect(File).to exist(appmap_json)
|
|
45
|
+
appmap = JSON.parse(File.read(appmap_json)).to_yaml
|
|
48
46
|
|
|
49
|
-
|
|
47
|
+
expect(appmap).to match(<<-CREATE_CALL.strip)
|
|
50
48
|
event: call
|
|
51
49
|
thread_id: .*
|
|
52
50
|
defined_class: Api::UsersController
|
|
@@ -61,7 +59,8 @@ describe 'AbstractControllerBase' do
|
|
|
61
59
|
value: '{"login"=>"alice"}'
|
|
62
60
|
kind: req
|
|
63
61
|
receiver:
|
|
64
|
-
|
|
62
|
+
CREATE_CALL
|
|
63
|
+
end
|
|
65
64
|
end
|
|
66
65
|
end
|
|
67
66
|
end
|
|
@@ -1,63 +1,62 @@
|
|
|
1
1
|
require 'rails_spec_helper'
|
|
2
2
|
|
|
3
3
|
describe 'AbstractControllerBase' do
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
shared_examples 'rails version' do |rails_major_version|
|
|
5
|
+
include_context 'Rails app pg database', "spec/fixtures/rails#{rails_major_version}_users_app" do
|
|
6
|
+
around(:each) do |example|
|
|
7
|
+
FileUtils.rm_rf tmpdir
|
|
8
|
+
FileUtils.mkdir_p tmpdir
|
|
9
|
+
cmd = "docker-compose run --rm -e APPMAP=true -v #{File.absolute_path tmpdir}:/app/tmp app ./bin/rspec spec/controllers/users_controller_api_spec.rb:8"
|
|
10
|
+
run_cmd cmd, chdir: fixture_dir
|
|
6
11
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
FileUtils.mkdir_p tmpdir
|
|
10
|
-
cmd = "docker-compose run --rm -e APPMAP=true -v #{File.absolute_path tmpdir}:/app/tmp app ./bin/rspec spec/controllers/users_controller_api_spec.rb:8"
|
|
11
|
-
run_cmd cmd, chdir: @fixture_dir
|
|
12
|
+
example.run
|
|
13
|
+
end
|
|
12
14
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
let(:tmpdir) { 'tmp/spec/AbstractControllerBase' }
|
|
17
|
-
let(:appmap_json) { File.join(tmpdir, 'appmap/rspec/Api_UsersController_POST_api_users_with_required_parameters_creates_a_user.appmap.json') }
|
|
15
|
+
let(:tmpdir) { 'tmp/spec/AbstractControllerBase' }
|
|
16
|
+
let(:appmap_json) { File.join(tmpdir, 'appmap/rspec/Api_UsersController_POST_api_users_with_required_parameters_creates_a_user.appmap.json') }
|
|
18
17
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
18
|
+
describe 'testing with rspec' do
|
|
19
|
+
it 'inventory file is printed' do
|
|
20
|
+
expect(File).to exist(File.join(tmpdir, 'appmap/rspec/Inventory.appmap.json'))
|
|
21
|
+
end
|
|
23
22
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
it 'message fields are recorded in the appmap' do
|
|
24
|
+
expect(File).to exist(appmap_json)
|
|
25
|
+
appmap = JSON.parse(File.read(appmap_json)).to_yaml
|
|
27
26
|
|
|
28
|
-
|
|
27
|
+
expect(appmap).to include(<<-MESSAGE.strip)
|
|
29
28
|
message:
|
|
30
29
|
- name: login
|
|
31
30
|
class: String
|
|
32
31
|
value: alice
|
|
33
32
|
object_id:
|
|
34
|
-
|
|
33
|
+
MESSAGE
|
|
35
34
|
|
|
36
|
-
|
|
35
|
+
expect(appmap).to include(<<-MESSAGE.strip)
|
|
37
36
|
- name: password
|
|
38
37
|
class: String
|
|
39
38
|
value: "[FILTERED]"
|
|
40
39
|
object_id:
|
|
41
|
-
|
|
40
|
+
MESSAGE
|
|
42
41
|
|
|
43
|
-
|
|
42
|
+
expect(appmap).to include(<<-SERVER_REQUEST.strip)
|
|
44
43
|
http_server_request:
|
|
45
44
|
request_method: POST
|
|
46
45
|
path_info: "/api/users"
|
|
47
|
-
|
|
46
|
+
SERVER_REQUEST
|
|
48
47
|
|
|
49
|
-
|
|
48
|
+
expect(appmap).to include(<<-SERVER_RESPONSE.strip)
|
|
50
49
|
http_server_response:
|
|
51
50
|
status: 201
|
|
52
51
|
mime_type: application/json; charset=utf-8
|
|
53
|
-
|
|
54
|
-
|
|
52
|
+
SERVER_RESPONSE
|
|
53
|
+
end
|
|
55
54
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
55
|
+
it 'properly captures method parameters in the appmap' do
|
|
56
|
+
expect(File).to exist(appmap_json)
|
|
57
|
+
appmap = JSON.parse(File.read(appmap_json)).to_yaml
|
|
59
58
|
|
|
60
|
-
|
|
59
|
+
expect(appmap).to match(<<-CREATE_CALL.strip)
|
|
61
60
|
event: call
|
|
62
61
|
thread_id: .*
|
|
63
62
|
defined_class: Api::UsersController
|
|
@@ -72,14 +71,19 @@ describe 'AbstractControllerBase' do
|
|
|
72
71
|
value: '{"login"=>"alice"}'
|
|
73
72
|
kind: req
|
|
74
73
|
receiver:
|
|
75
|
-
|
|
76
|
-
|
|
74
|
+
CREATE_CALL
|
|
75
|
+
end
|
|
77
76
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
77
|
+
it 'returns a minimal event' do
|
|
78
|
+
expect(File).to exist(appmap_json)
|
|
79
|
+
appmap = JSON.parse(File.read(appmap_json))
|
|
80
|
+
event = appmap['events'].find { |event| event['event'] == 'return' && event['return_value'] }
|
|
81
|
+
expect(event.keys).to eq(%w[id event thread_id parent_id elapsed return_value])
|
|
82
|
+
end
|
|
83
|
+
end
|
|
83
84
|
end
|
|
84
85
|
end
|
|
86
|
+
|
|
87
|
+
it_behaves_like 'rails version', '5'
|
|
88
|
+
it_behaves_like 'rails version', '6'
|
|
85
89
|
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe 'AppMap::ClassMap' do
|
|
6
|
+
describe '.build_from_methods' do
|
|
7
|
+
it 'includes source code if available' do
|
|
8
|
+
map = AppMap.class_map([scoped_method(method(:test_method))])
|
|
9
|
+
function = dig_map(map, 5)[0]
|
|
10
|
+
expect(function[:source]).to include 'test method body'
|
|
11
|
+
expect(function[:comment]).to include 'test method comment'
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it 'can omit source code even if available' do
|
|
15
|
+
map = AppMap.class_map([scoped_method((method :test_method))], include_source: false)
|
|
16
|
+
function = dig_map(map, 5)[0]
|
|
17
|
+
expect(function).to_not include(:source)
|
|
18
|
+
expect(function).to_not include(:comment)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# test method comment
|
|
22
|
+
def test_method
|
|
23
|
+
'test method body'
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def scoped_method(method)
|
|
27
|
+
AppMap::Trace::ScopedMethod.new AppMap::Config::Package.new, method.receiver.class.name, method, false
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def dig_map(map, depth)
|
|
31
|
+
return map if depth == 0
|
|
32
|
+
|
|
33
|
+
dig_map map[0][:children], depth - 1
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -9,3 +9,47 @@ class ExceptionMethod
|
|
|
9
9
|
raise 'Exception occurred in raise_exception'
|
|
10
10
|
end
|
|
11
11
|
end
|
|
12
|
+
|
|
13
|
+
# subclass from BasicObject so we don't get #to_s. Requires some
|
|
14
|
+
# hackery to implement the other methods normally provided by Object.
|
|
15
|
+
class NoToSMethod < BasicObject
|
|
16
|
+
def is_a?(*args)
|
|
17
|
+
return false
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def class
|
|
21
|
+
return ::Class
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def respond_to?(*args)
|
|
25
|
+
return false
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def inspect
|
|
29
|
+
"NoToSMethod"
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def say_hello
|
|
33
|
+
"hello"
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
class InspectRaises < NoToSMethod
|
|
38
|
+
def inspect
|
|
39
|
+
::Kernel.raise "#to_s missing, #inspect raises"
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def say_hello
|
|
43
|
+
"hello"
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
class ToSRaises
|
|
48
|
+
def to_s
|
|
49
|
+
raise "#to_s raises"
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def say_hello
|
|
53
|
+
"hello"
|
|
54
|
+
end
|
|
55
|
+
end
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
source 'https://rubygems.org'
|
|
2
|
+
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
|
|
3
|
+
|
|
4
|
+
gem 'rails', '~> 6'
|
|
5
|
+
|
|
6
|
+
gem 'haml-rails'
|
|
7
|
+
|
|
8
|
+
gem 'activerecord', require: false
|
|
9
|
+
gem 'pg'
|
|
10
|
+
gem 'sequel', '= 5.20.0', require: false
|
|
11
|
+
gem 'sequel-rails', require: false
|
|
12
|
+
gem 'sequel_secure_password', require: false
|
|
13
|
+
|
|
14
|
+
appmap_path = \
|
|
15
|
+
# Support debugging inside the container with volume-mounted source
|
|
16
|
+
if File.directory?('/src/appmap-ruby')
|
|
17
|
+
'/src/appmap-ruby'
|
|
18
|
+
elsif File.exist?('../../../appmap.gemspec')
|
|
19
|
+
'../../..'
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
if appmap_path
|
|
23
|
+
# Set the branch parameter, so that 'bundle config local.appmap' will work
|
|
24
|
+
appmap_branch = Dir.chdir appmap_path do
|
|
25
|
+
`git rev-parse --abbrev-ref HEAD`.strip
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
appmap_options = \
|
|
30
|
+
if appmap_path && appmap_branch
|
|
31
|
+
{ git: appmap_path, branch: appmap_branch }
|
|
32
|
+
elsif appmap_path
|
|
33
|
+
{ path: appmap_path }
|
|
34
|
+
else
|
|
35
|
+
{}
|
|
36
|
+
end.merge(require: %w[appmap appmap/railtie])
|
|
37
|
+
|
|
38
|
+
gem 'appmap', appmap_options
|
|
39
|
+
|
|
40
|
+
group :development, :test do
|
|
41
|
+
gem 'cucumber-rails', require: false
|
|
42
|
+
gem 'rspec-rails'
|
|
43
|
+
# Required for Sequel, since without ActiveRecord, the Rails transactional fixture support
|
|
44
|
+
# isn't activated.
|
|
45
|
+
gem 'database_cleaner'
|
|
46
|
+
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
|
|
47
|
+
gem 'pry-byebug'
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
group :development do
|
|
51
|
+
end
|
|
File without changes
|
data/spec/fixtures/{rails_users_app → rails5_users_app}/app/controllers/api/users_controller.rb
RENAMED
|
File without changes
|
data/spec/fixtures/{rails_users_app → rails5_users_app}/app/controllers/application_controller.rb
RENAMED
|
File without changes
|
|
File without changes
|
data/spec/fixtures/{rails_users_app → rails5_users_app}/app/controllers/health_controller.rb
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
data/spec/fixtures/{rails_users_app → rails5_users_app}/app/views/layouts/application.html.haml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|