appmap 0.34.5 → 0.37.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.
@@ -56,12 +56,10 @@ class CLITest < Minitest::Test
56
56
  Class frequency:
57
57
  ----------------
58
58
  1 Main
59
- 1 IO
60
59
 
61
60
  Method frequency:
62
61
  ----------------
63
62
  1 Main.say_hello
64
- 1 IO#write
65
63
  OUTPUT
66
64
  end
67
65
 
@@ -82,20 +80,12 @@ class CLITest < Minitest::Test
82
80
  {
83
81
  "name": "Main",
84
82
  "count": 1
85
- },
86
- {
87
- "name": "IO",
88
- "count": 1
89
83
  }
90
84
  ],
91
85
  "method_frequency": [
92
86
  {
93
87
  "name": "Main.say_hello",
94
88
  "count": 1
95
- },
96
- {
97
- "name": "IO#write",
98
- "count": 1
99
89
  }
100
90
  ]
101
91
  }
@@ -0,0 +1,55 @@
1
+ [
2
+ {
3
+ "name": "lib",
4
+ "type": "package",
5
+ "children": [
6
+ {
7
+ "name": "Example",
8
+ "type": "class",
9
+ "children": [
10
+ {
11
+ "name": "sign",
12
+ "type": "function",
13
+ "location": "lib/openssl_key_sign.rb:10",
14
+ "static": true,
15
+ "source": " def Example.sign\n key = OpenSSL::PKey::RSA.new 2048\n\n document = 'the document'\n\n digest = OpenSSL::Digest::SHA256.new\n key.sign digest, document\n end\n"
16
+ }
17
+ ]
18
+ }
19
+ ]
20
+ },
21
+ {
22
+ "name": "openssl",
23
+ "type": "package",
24
+ "children": [
25
+ {
26
+ "name": "OpenSSL",
27
+ "type": "class",
28
+ "children": [
29
+ {
30
+ "name": "PKey",
31
+ "type": "class",
32
+ "children": [
33
+ {
34
+ "name": "PKey",
35
+ "type": "class",
36
+ "children": [
37
+ {
38
+ "name": "sign",
39
+ "type": "function",
40
+ "location": "OpenSSL::PKey::PKey#sign",
41
+ "static": false,
42
+ "labels": [
43
+ "security",
44
+ "crypto"
45
+ ]
46
+ }
47
+ ]
48
+ }
49
+ ]
50
+ }
51
+ ]
52
+ }
53
+ ]
54
+ }
55
+ ]
@@ -0,0 +1,58 @@
1
+ [
2
+ {
3
+ "id": 1,
4
+ "event": "call",
5
+ "defined_class": "Example",
6
+ "method_id": "sign",
7
+ "path": "lib/openssl_key_sign.rb",
8
+ "lineno": 10,
9
+ "static": true,
10
+ "parameters": [
11
+
12
+ ],
13
+ "receiver": {
14
+ "class": "Module"
15
+ }
16
+ },
17
+ {
18
+ "id": 2,
19
+ "event": "call",
20
+ "defined_class": "OpenSSL::PKey::PKey",
21
+ "method_id": "sign",
22
+ "path": "OpenSSL::PKey::PKey#sign",
23
+ "static": false,
24
+ "parameters": [
25
+ {
26
+ "name": "arg",
27
+ "class": "OpenSSL::Digest::SHA256",
28
+ "value": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
29
+ "kind": "req"
30
+ },
31
+ {
32
+ "name": "arg",
33
+ "class": "String",
34
+ "value": "the document",
35
+ "kind": "req"
36
+ }
37
+ ],
38
+ "receiver": {
39
+ "class": "OpenSSL::PKey::RSA"
40
+ }
41
+ },
42
+ {
43
+ "id": 3,
44
+ "event": "return",
45
+ "parent_id": 2,
46
+ "return_value": {
47
+ "class": "String"
48
+ }
49
+ },
50
+ {
51
+ "id": 4,
52
+ "event": "return",
53
+ "parent_id": 1,
54
+ "return_value": {
55
+ "class": "String"
56
+ }
57
+ }
58
+ ]
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'appmap', git: 'applandinc/appmap-ruby', branch: `git rev-parse --abbrev-ref HEAD`.strip
4
+ gem 'activesupport'
5
+ gem 'byebug'
6
+ gem 'minitest'
@@ -0,0 +1,3 @@
1
+ name: gem_test
2
+ packages:
3
+ - gem: activesupport
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'appmap/minitest'
5
+ require 'minitest/autorun'
6
+ require 'active_support'
7
+ require 'active_support/core_ext'
8
+
9
+ class ToParamTest < ::Minitest::Test
10
+ def test_to_param
11
+ # record use of a core extension
12
+ assert_equal 'my+id', 'my+id'.to_param
13
+ end
14
+ end
@@ -0,0 +1,34 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'test_helper'
5
+ require 'English'
6
+
7
+ class MinitestTest < Minitest::Test
8
+ def perform_gem_test(test_name)
9
+ Bundler.with_clean_env do
10
+ Dir.chdir 'test/fixtures/gem_test' do
11
+ FileUtils.rm_rf 'tmp'
12
+ system 'bundle config --local local.appmap ../../..'
13
+ system 'bundle'
14
+ system({ 'APPMAP' => 'true' }, %(bundle exec ruby -Ilib -Itest test/#{test_name}_test.rb))
15
+
16
+ yield
17
+ end
18
+ end
19
+ end
20
+
21
+ def test_record_gem
22
+ perform_gem_test 'to_param' do
23
+ appmap_file = 'tmp/appmap/minitest/To_param_to_param.appmap.json'
24
+ appmap = JSON.parse(File.read(appmap_file))
25
+ events = appmap['events']
26
+ assert_equal 2, events.size
27
+ assert_equal 'call', events.first['event']
28
+ assert_equal 'to_param', events.first['method_id']
29
+ assert_equal "#{Gem.loaded_specs['activesupport'].gem_dir}/lib/active_support/core_ext/object/to_query.rb", events.first['path']
30
+ assert_equal 'return', events.second['event']
31
+ assert_equal 1, events.second['parent_id']
32
+ end
33
+ end
34
+ end
@@ -5,7 +5,7 @@ require 'test_helper'
5
5
  require 'English'
6
6
 
7
7
  class MinitestTest < Minitest::Test
8
- def perform_test(test_name)
8
+ def perform_minitest_test(test_name)
9
9
  Bundler.with_clean_env do
10
10
  Dir.chdir 'test/fixtures/minitest_recorder' do
11
11
  FileUtils.rm_rf 'tmp'
@@ -19,7 +19,7 @@ class MinitestTest < Minitest::Test
19
19
  end
20
20
 
21
21
  def test_hello
22
- perform_test 'hello' do
22
+ perform_minitest_test 'hello' do
23
23
  appmap_file = 'tmp/appmap/minitest/Hello_hello.appmap.json'
24
24
 
25
25
  assert File.file?(appmap_file), 'appmap output file does not exist'
@@ -11,13 +11,17 @@ class OpenSSLTest < Minitest::Test
11
11
  FileUtils.rm_rf 'tmp'
12
12
  system 'bundle config --local local.appmap ../../..'
13
13
  system 'bundle'
14
- system({ 'APPMAP' => 'true', 'DEBUG' => 'true' }, %(bundle exec ruby lib/openssl_#{test_name}.rb))
14
+ system({ 'APPMAP' => 'true' }, %(bundle exec ruby lib/openssl_#{test_name}.rb))
15
15
 
16
16
  yield
17
17
  end
18
18
  end
19
19
  end
20
20
 
21
+ def expectation(name)
22
+ File.read File.join __dir__, 'expectations', name
23
+ end
24
+
21
25
  def test_key_sign
22
26
  perform_test 'key_sign' do
23
27
  appmap_file = 'appmap.json'
@@ -26,83 +30,7 @@ class OpenSSLTest < Minitest::Test
26
30
  appmap = JSON.parse(File.read(appmap_file))
27
31
  assert_equal AppMap::APPMAP_FORMAT_VERSION, appmap['version']
28
32
  assert_equal [ { 'recorder' => 'lib/openssl_key_sign.rb' } ], appmap['metadata']
29
- assert_equal JSON.parse(<<~JSON), appmap['classMap']
30
- [
31
- {
32
- "name": "lib",
33
- "type": "package",
34
- "children": [
35
- {
36
- "name": "Example",
37
- "type": "class",
38
- "children": [
39
- {
40
- "name": "sign",
41
- "type": "function",
42
- "location": "lib/openssl_key_sign.rb:10",
43
- "static": true
44
- }
45
- ]
46
- }
47
- ]
48
- },
49
- {
50
- "name": "openssl",
51
- "type": "package",
52
- "children": [
53
- {
54
- "name": "OpenSSL",
55
- "type": "class",
56
- "children": [
57
- {
58
- "name": "PKey",
59
- "type": "class",
60
- "children": [
61
- {
62
- "name": "PKey",
63
- "type": "class",
64
- "children": [
65
- {
66
- "name": "sign",
67
- "type": "function",
68
- "location": "OpenSSL::PKey::PKey#sign",
69
- "static": false,
70
- "labels": [
71
- "security",
72
- "crypto"
73
- ]
74
- }
75
- ]
76
- }
77
- ]
78
- }
79
- ]
80
- }
81
- ]
82
- },
83
- {
84
- "name": "io",
85
- "type": "package",
86
- "children": [
87
- {
88
- "name": "IO",
89
- "type": "class",
90
- "children": [
91
- {
92
- "name": "write",
93
- "type": "function",
94
- "location": "IO#write",
95
- "static": false,
96
- "labels": [
97
- "io"
98
- ]
99
- }
100
- ]
101
- }
102
- ]
103
- }
104
- ]
105
- JSON
33
+ assert_equal JSON.parse(expectation('openssl_test_key_sign1.json')), appmap['classMap']
106
34
  sanitized_events = appmap['events'].map(&:deep_symbolize_keys).map(&AppMap::Util.method(:sanitize_event)).map do |event|
107
35
  delete_value = ->(obj) { (obj || {}).delete(:value) }
108
36
  delete_value.call(event[:receiver])
@@ -110,93 +38,10 @@ class OpenSSLTest < Minitest::Test
110
38
  event
111
39
  end
112
40
 
113
- diff = Diffy::Diff.new(<<~JSON.strip, JSON.pretty_generate(sanitized_events).strip)
114
- [
115
- {
116
- "id": 1,
117
- "event": "call",
118
- "defined_class": "Example",
119
- "method_id": "sign",
120
- "path": "lib/openssl_key_sign.rb",
121
- "lineno": 10,
122
- "static": true,
123
- "parameters": [
124
-
125
- ],
126
- "receiver": {
127
- "class": "Module"
128
- }
129
- },
130
- {
131
- "id": 2,
132
- "event": "call",
133
- "defined_class": "OpenSSL::PKey::PKey",
134
- "method_id": "sign",
135
- "path": "OpenSSL::PKey::PKey#sign",
136
- "static": false,
137
- "parameters": [
138
- {
139
- "name": "arg",
140
- "class": "OpenSSL::Digest::SHA256",
141
- "value": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
142
- "kind": "req"
143
- },
144
- {
145
- "name": "arg",
146
- "class": "String",
147
- "value": "the document",
148
- "kind": "req"
149
- }
150
- ],
151
- "receiver": {
152
- "class": "OpenSSL::PKey::RSA"
153
- }
154
- },
155
- {
156
- "id": 3,
157
- "event": "return",
158
- "parent_id": 2,
159
- "return_value": {
160
- "class": "String"
161
- }
162
- },
163
- {
164
- "id": 4,
165
- "event": "return",
166
- "parent_id": 1,
167
- "return_value": {
168
- "class": "String"
169
- }
170
- },
171
- {
172
- "id": 5,
173
- "event": "call",
174
- "defined_class": "IO",
175
- "method_id": "write",
176
- "path": "IO#write",
177
- "static": false,
178
- "parameters": [
179
- {
180
- "name": "arg",
181
- "class": "String",
182
- "value": "Computed signature",
183
- "kind": "rest"
184
- }
185
- ],
186
- "receiver": {
187
- "class": "IO"
188
- }
189
- },
190
- {
191
- "id": 6,
192
- "event": "return",
193
- "parent_id": 5,
194
- "return_value": {
195
- "class": "Integer"
196
- }
197
- }
198
- ]
199
- JSON
41
+ diff = Diffy::Diff.new(
42
+ expectation('openssl_test_key_sign2.json').strip,
43
+ JSON.pretty_generate(sanitized_events).strip
44
+ )
200
45
  assert_equal '', diff.to_s
201
46
  end
202
47
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appmap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.34.5
4
+ version: 0.37.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Gilpin
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-09-23 00:00:00.000000000 Z
11
+ date: 2020-11-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: method_source
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: parser
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -84,14 +98,14 @@ dependencies:
84
98
  name: bundler
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
- - - "~>"
101
+ - - ">="
88
102
  - !ruby/object:Gem::Version
89
103
  version: '1.16'
90
104
  type: :development
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
- - - "~>"
108
+ - - ">="
95
109
  - !ruby/object:Gem::Version
96
110
  version: '1.16'
97
111
  - !ruby/object:Gem::Dependency
@@ -290,7 +304,7 @@ dependencies:
290
304
  - - ">="
291
305
  - !ruby/object:Gem::Version
292
306
  version: '0'
293
- description:
307
+ description:
294
308
  email:
295
309
  - kgilpin@gmail.com
296
310
  executables:
@@ -303,7 +317,6 @@ files:
303
317
  - ".gitignore"
304
318
  - ".rbenv-gemsets"
305
319
  - ".rubocop.yml"
306
- - ".ruby-version"
307
320
  - ".travis.yml"
308
321
  - CHANGELOG.md
309
322
  - Dockerfile.appmap
@@ -338,7 +351,7 @@ files:
338
351
  - lib/appmap/middleware/remote_recording.rb
339
352
  - lib/appmap/minitest.rb
340
353
  - lib/appmap/open.rb
341
- - lib/appmap/rails/action_handler.rb
354
+ - lib/appmap/rails/request_handler.rb
342
355
  - lib/appmap/rails/sql_handler.rb
343
356
  - lib/appmap/railtie.rb
344
357
  - lib/appmap/record.rb
@@ -367,6 +380,7 @@ files:
367
380
  - package.json
368
381
  - spec/abstract_controller4_base_spec.rb
369
382
  - spec/abstract_controller_base_spec.rb
383
+ - spec/class_map_spec.rb
370
384
  - spec/config_spec.rb
371
385
  - spec/fixtures/hook/attr_accessor.rb
372
386
  - spec/fixtures/hook/compare.rb
@@ -529,6 +543,8 @@ files:
529
543
  - spec/util_spec.rb
530
544
  - test/cli_test.rb
531
545
  - test/cucumber_test.rb
546
+ - test/expectations/openssl_test_key_sign1.json
547
+ - test/expectations/openssl_test_key_sign2.json
532
548
  - test/fixtures/cli_record_test/appmap.yml
533
549
  - test/fixtures/cli_record_test/lib/cli_record_test/main.rb
534
550
  - test/fixtures/cucumber4_recorder/Gemfile
@@ -545,6 +561,9 @@ files:
545
561
  - test/fixtures/cucumber_recorder/features/support/hooks.rb
546
562
  - test/fixtures/cucumber_recorder/features/support/steps.rb
547
563
  - test/fixtures/cucumber_recorder/lib/hello.rb
564
+ - test/fixtures/gem_test/Gemfile
565
+ - test/fixtures/gem_test/appmap.yml
566
+ - test/fixtures/gem_test/test/to_param_test.rb
548
567
  - test/fixtures/minitest_recorder/Gemfile
549
568
  - test/fixtures/minitest_recorder/appmap.yml
550
569
  - test/fixtures/minitest_recorder/lib/hello.rb
@@ -562,6 +581,7 @@ files:
562
581
  - test/fixtures/rspec_recorder/spec/decorated_hello_spec.rb
563
582
  - test/fixtures/rspec_recorder/spec/labeled_hello_spec.rb
564
583
  - test/fixtures/rspec_recorder/spec/plain_hello_spec.rb
584
+ - test/gem_test.rb
565
585
  - test/minitest_test.rb
566
586
  - test/openssl_test.rb
567
587
  - test/record_process_test.rb
@@ -571,7 +591,7 @@ homepage: https://github.com/applandinc/appmap-ruby
571
591
  licenses:
572
592
  - MIT
573
593
  metadata: {}
574
- post_install_message:
594
+ post_install_message:
575
595
  rdoc_options: []
576
596
  require_paths:
577
597
  - lib
@@ -587,7 +607,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
587
607
  version: '0'
588
608
  requirements: []
589
609
  rubygems_version: 3.0.3
590
- signing_key:
610
+ signing_key:
591
611
  specification_version: 4
592
612
  summary: Record the operation of a Ruby program, using the AppLand 'AppMap' format.
593
613
  test_files: []