appmap 0.53.0 → 0.54.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +12 -0
  3. data/lib/appmap.rb +28 -110
  4. data/lib/appmap/agent.rb +115 -0
  5. data/lib/appmap/class_map.rb +2 -2
  6. data/lib/appmap/config.rb +11 -3
  7. data/lib/appmap/handler/net_http.rb +2 -1
  8. data/lib/appmap/handler/rails/request_handler.rb +2 -1
  9. data/lib/appmap/metadata.rb +4 -2
  10. data/lib/appmap/minitest.rb +2 -0
  11. data/lib/appmap/railtie.rb +2 -2
  12. data/lib/appmap/rspec.rb +5 -3
  13. data/lib/appmap/swagger.rb +2 -0
  14. data/lib/appmap/swagger/configuration.rb +70 -0
  15. data/lib/appmap/swagger/markdown_descriptions.rb +43 -0
  16. data/lib/appmap/swagger/rake_tasks.rb +43 -0
  17. data/lib/appmap/swagger/stable.rb +37 -0
  18. data/lib/appmap/version.rb +1 -1
  19. data/package.json +0 -1
  20. data/spec/config_spec.rb +0 -1
  21. data/spec/fixtures/hook/.gitignore +2 -0
  22. data/spec/fixtures/hook/app/controllers/api/api_keys_controller.rb +1 -0
  23. data/spec/fixtures/hook/app/controllers/organizations_controller.rb +1 -0
  24. data/spec/fixtures/hook/app/models/api_key.rb +1 -0
  25. data/spec/fixtures/hook/app/models/configuration.rb +1 -0
  26. data/spec/fixtures/hook/app/models/show.rb +1 -0
  27. data/spec/fixtures/hook/app/models/user.rb +1 -0
  28. data/spec/fixtures/hook/revoke_api_key.appmap.json +847 -0
  29. data/spec/fixtures/hook/spec/api_spec.rb +1 -0
  30. data/spec/fixtures/hook/spec/user_spec.rb +1 -0
  31. data/spec/fixtures/hook/user_page_scenario.appmap.json +1722 -0
  32. data/spec/fixtures/rails5_users_app/config/environments/test.rb +3 -0
  33. data/spec/fixtures/rails6_users_app/Dockerfile +0 -1
  34. data/spec/fixtures/rails6_users_app/appmap.yml +3 -1
  35. data/spec/fixtures/rails6_users_app/config/environments/test.rb +3 -0
  36. data/spec/fixtures/rails6_users_app/lib/tasks/appmap.rake +13 -0
  37. data/spec/rails_recording_spec.rb +1 -1
  38. data/spec/swagger/swagger_spec.rb +47 -0
  39. data/test/gem_test.rb +1 -0
  40. metadata +21 -2
@@ -1,3 +1,6 @@
1
+ require 'active_support'
2
+ require 'active_support/core_ext'
3
+
1
4
  Rails.application.configure do
2
5
  # Settings specified here will take precedence over those in config/application.rb.
3
6
 
@@ -2,7 +2,6 @@ ARG GEM_VERSION
2
2
  ARG RUBY_VERSION
3
3
 
4
4
  FROM appmap:${GEM_VERSION} as appmap
5
-
6
5
  FROM ruby:${RUBY_VERSION}
7
6
 
8
7
  SHELL ["/bin/bash", "-c"]
@@ -5,4 +5,6 @@ packages:
5
5
  - path: app/controllers
6
6
  labels: [ mvc.controller ]
7
7
  - gem: sequel
8
-
8
+ swagger:
9
+ project_version: 1.1.0
10
+ output_dir: tmp/swagger
@@ -1,3 +1,6 @@
1
+ require 'active_support'
2
+ require 'active_support/core_ext'
3
+
1
4
  Rails.application.configure do
2
5
  # Settings specified here will take precedence over those in config/application.rb.
3
6
 
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ namespace :appmap do
4
+ def swagger_tasks
5
+ require 'appmap/swagger'
6
+
7
+ AppMap::Swagger::RakeTasks.define_tasks
8
+ end
9
+
10
+ if %w[test development].member?(Rails.env)
11
+ swagger_tasks
12
+ end
13
+ end
@@ -224,7 +224,7 @@ describe 'Rails' do
224
224
  'name' => 'ActionView',
225
225
  'children' => include(hash_including(
226
226
  # Rails 6/5 difference
227
- 'name' => /^(Template)?Renderer$/,
227
+ 'name' => /^(Template)?Renderer$/,
228
228
  'children' => include(hash_including(
229
229
  'name' => 'render',
230
230
  'labels' => ['mvc.view']
@@ -0,0 +1,47 @@
1
+ require_relative '../rails_spec_helper'
2
+
3
+ describe 'rake appmap:swagger' do
4
+ include_context 'Rails app pg database', "spec/fixtures/rails6_users_app" unless use_existing_data?
5
+ include_context 'rails integration test setup'
6
+
7
+ def run_spec(spec_name)
8
+ cmd = <<~CMD.gsub "\n", ' '
9
+ docker-compose run --rm -e RAILS_ENV=test -e APPMAP=true
10
+ -v #{File.absolute_path tmpdir}:/app/tmp app ./bin/rspec #{spec_name}
11
+ CMD
12
+ run_cmd cmd, chdir: fixture_dir
13
+ end
14
+
15
+ def generate_swagger
16
+ cmd = <<~CMD.gsub "\n", ' '
17
+ docker-compose run --rm -v #{File.absolute_path tmpdir}:/app/tmp app ./bin/rake appmap:swagger
18
+ CMD
19
+ run_cmd cmd, chdir: fixture_dir
20
+ end
21
+
22
+ unless use_existing_data?
23
+ before(:all) do
24
+ generate_swagger
25
+ end
26
+ end
27
+
28
+ # The swagger-building logic is mostly in the JS code. So what we are really testing here
29
+ # is the Rails integration - the rake task and integration with the appmap.yml.
30
+ # And of course the bundling of the JS code by the appmap gem.
31
+ it 'generates openapi_stable.yml' do
32
+ swagger = YAML.load(File.read(File.join(tmpdir, 'swagger', 'openapi_stable.yaml'))).deep_symbolize_keys
33
+
34
+ expect(swagger).to match(
35
+ hash_including(
36
+ openapi: /^\d\.\d\.\d$/,
37
+ info: {
38
+ title: 'Usersapp API',
39
+ version: '1.1.0'
40
+ },
41
+ paths: hash_including(
42
+ :'/api/users' => an_instance_of(Hash)
43
+ )
44
+ )
45
+ )
46
+ end
47
+ end
data/test/gem_test.rb CHANGED
@@ -3,6 +3,7 @@
3
3
 
4
4
  require 'test_helper'
5
5
  require 'English'
6
+ require 'json'
6
7
 
7
8
  class GemTest < Minitest::Test
8
9
  def perform_gem_test(test_name)
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.53.0
4
+ version: 0.54.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Gilpin
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-06-23 00:00:00.000000000 Z
11
+ date: 2021-06-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -314,6 +314,7 @@ files:
314
314
  - ext/appmap/appmap.c
315
315
  - ext/appmap/extconf.rb
316
316
  - lib/appmap.rb
317
+ - lib/appmap/agent.rb
317
318
  - lib/appmap/class_map.rb
318
319
  - lib/appmap/command/agent_setup/init.rb
319
320
  - lib/appmap/command/inspect.rb
@@ -337,6 +338,11 @@ files:
337
338
  - lib/appmap/record.rb
338
339
  - lib/appmap/rspec.rb
339
340
  - lib/appmap/service/guesser.rb
341
+ - lib/appmap/swagger.rb
342
+ - lib/appmap/swagger/configuration.rb
343
+ - lib/appmap/swagger/markdown_descriptions.rb
344
+ - lib/appmap/swagger/rake_tasks.rb
345
+ - lib/appmap/swagger/stable.rb
340
346
  - lib/appmap/trace.rb
341
347
  - lib/appmap/util.rb
342
348
  - lib/appmap/version.rb
@@ -344,6 +350,13 @@ files:
344
350
  - release.sh
345
351
  - spec/class_map_spec.rb
346
352
  - spec/config_spec.rb
353
+ - spec/fixtures/hook/.gitignore
354
+ - spec/fixtures/hook/app/controllers/api/api_keys_controller.rb
355
+ - spec/fixtures/hook/app/controllers/organizations_controller.rb
356
+ - spec/fixtures/hook/app/models/api_key.rb
357
+ - spec/fixtures/hook/app/models/configuration.rb
358
+ - spec/fixtures/hook/app/models/show.rb
359
+ - spec/fixtures/hook/app/models/user.rb
347
360
  - spec/fixtures/hook/attr_accessor.rb
348
361
  - spec/fixtures/hook/compare.rb
349
362
  - spec/fixtures/hook/constructor.rb
@@ -353,7 +366,11 @@ files:
353
366
  - spec/fixtures/hook/instance_method.rb
354
367
  - spec/fixtures/hook/labels.rb
355
368
  - spec/fixtures/hook/method_named_call.rb
369
+ - spec/fixtures/hook/revoke_api_key.appmap.json
356
370
  - spec/fixtures/hook/singleton_method.rb
371
+ - spec/fixtures/hook/spec/api_spec.rb
372
+ - spec/fixtures/hook/spec/user_spec.rb
373
+ - spec/fixtures/hook/user_page_scenario.appmap.json
357
374
  - spec/fixtures/rack_users_app/.dockerignore
358
375
  - spec/fixtures/rack_users_app/.gitignore
359
376
  - spec/fixtures/rack_users_app/Dockerfile
@@ -496,6 +513,7 @@ files:
496
513
  - spec/fixtures/rails6_users_app/features/support/hooks.rb
497
514
  - spec/fixtures/rails6_users_app/features/support/steps.rb
498
515
  - spec/fixtures/rails6_users_app/lib/tasks/.keep
516
+ - spec/fixtures/rails6_users_app/lib/tasks/appmap.rake
499
517
  - spec/fixtures/rails6_users_app/log/.keep
500
518
  - spec/fixtures/rails6_users_app/public/robots.txt
501
519
  - spec/fixtures/rails6_users_app/spec/controllers/users_controller_api_spec.rb
@@ -513,6 +531,7 @@ files:
513
531
  - spec/record_sql_rails_pg_spec.rb
514
532
  - spec/remote_recording_spec.rb
515
533
  - spec/spec_helper.rb
534
+ - spec/swagger/swagger_spec.rb
516
535
  - spec/util_spec.rb
517
536
  - test/agent_setup_init_test.rb
518
537
  - test/bundle_vendor_test.rb