appmap 0.55.0 → 0.59.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +35 -0
- data/exe/appmap-agent-init +2 -2
- data/exe/appmap-agent-status +19 -0
- data/lib/appmap/command/agent_setup/init.rb +8 -22
- data/lib/appmap/command/agent_setup/status.rb +43 -0
- data/lib/appmap/config.rb +1 -0
- data/lib/appmap/service/config_analyzer.rb +34 -0
- data/lib/appmap/service/integration_test_path_finder.rb +44 -0
- data/lib/appmap/service/test_command_provider.rb +77 -0
- data/lib/appmap/service/test_framework_detector.rb +21 -0
- data/lib/appmap/version.rb +1 -1
- data/spec/fixtures/config/incomplete_config.yml +1 -0
- data/spec/fixtures/config/invalid_config.yml +2 -0
- data/spec/fixtures/config/valid_config.yml +3 -0
- data/spec/fixtures/rails6_users_app/test/controllers/functional_calc_test.rb +10 -0
- data/spec/fixtures/rails6_users_app/test/integration/integration_calc_test.rb +12 -0
- data/spec/service/config_analyzer_spec.rb +96 -0
- data/test/agent_setup_init_test.rb +16 -16
- data/test/agent_setup_status_test.rb +81 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b0592a1e7b252df037c7e06986095c4e7f5feba8011a317e54edda181c53aed7
|
4
|
+
data.tar.gz: 44d0c65506400e36016dd140e7f4a109f6495dd2ae6bdd893e038bd8c1504d95
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cc7057bf09581066d6ef84f2f73b17ea9a3088ec6e19dfd90f2983a15706f98de6ca1e20ccfc949aad334ccfa7f0346474bd53899eefb9a44d871618c7c17995
|
7
|
+
data.tar.gz: 4c86d5a8782501a8924f286e41334b79473d87990e7a731ee7832288ae81ad4db112d6826313dfae99cb1a5b418e77fbea63a3a2888ec9d09fffbbd98d0c7e80
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,38 @@
|
|
1
|
+
# [0.59.0](https://github.com/applandinc/appmap-ruby/compare/v0.58.0...v0.59.0) (2021-07-07)
|
2
|
+
|
3
|
+
|
4
|
+
### Features
|
5
|
+
|
6
|
+
* define commands as objects ([1b43203](https://github.com/applandinc/appmap-ruby/commit/1b432039040277e1b5349cc2f75aa436238ea873))
|
7
|
+
|
8
|
+
# [0.58.0](https://github.com/applandinc/appmap-ruby/compare/v0.57.1...v0.58.0) (2021-07-06)
|
9
|
+
|
10
|
+
|
11
|
+
### Features
|
12
|
+
|
13
|
+
* Add `test_commands` sections to `appmap-agent-status` executable ([4cd8fe5](https://github.com/applandinc/appmap-ruby/commit/4cd8fe58acb4af72b7818db96de9e479562b9ea0))
|
14
|
+
|
15
|
+
## [0.57.1](https://github.com/applandinc/appmap-ruby/compare/v0.57.0...v0.57.1) (2021-07-02)
|
16
|
+
|
17
|
+
|
18
|
+
### Bug Fixes
|
19
|
+
|
20
|
+
* rename agentVersionPorject to agentVersion ([905fc5d](https://github.com/applandinc/appmap-ruby/commit/905fc5dd643411deb94f8a1087bcdb3a562d218a))
|
21
|
+
|
22
|
+
# [0.57.0](https://github.com/applandinc/appmap-ruby/compare/v0.56.0...v0.57.0) (2021-06-29)
|
23
|
+
|
24
|
+
|
25
|
+
### Features
|
26
|
+
|
27
|
+
* Update init command to return JSON ([1f93e89](https://github.com/applandinc/appmap-ruby/commit/1f93e8909684e1018f513d69adfde2a5d0bf6bc9))
|
28
|
+
|
29
|
+
# [0.56.0](https://github.com/applandinc/appmap-ruby/compare/v0.55.0...v0.56.0) (2021-06-28)
|
30
|
+
|
31
|
+
|
32
|
+
### Features
|
33
|
+
|
34
|
+
* add appmap-agent-status executable with config/project properties ([043f845](https://github.com/applandinc/appmap-ruby/commit/043f8453a2533a6e172d1cd23fcde04f19e73173))
|
35
|
+
|
1
36
|
# [0.55.0](https://github.com/applandinc/appmap-ruby/compare/v0.54.4...v0.55.0) (2021-06-28)
|
2
37
|
|
3
38
|
|
data/exe/appmap-agent-init
CHANGED
@@ -5,10 +5,10 @@ require 'optparse'
|
|
5
5
|
require 'appmap'
|
6
6
|
require 'appmap/command/agent_setup/init'
|
7
7
|
|
8
|
-
@options = {:
|
8
|
+
@options = { config_file: AppMap::DEFAULT_CONFIG_FILE_PATH }
|
9
9
|
|
10
10
|
OptionParser.new do |parser|
|
11
|
-
parser.banner = 'Usage:
|
11
|
+
parser.banner = 'Usage: appmap-agent-init [options]'
|
12
12
|
|
13
13
|
description = "AppMap configuration file path (default: #{AppMap::DEFAULT_CONFIG_FILE_PATH})"
|
14
14
|
parser.on('-c', '--config=FILEPATH', description) do |filepath|
|
@@ -0,0 +1,19 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require 'optparse'
|
5
|
+
require 'appmap'
|
6
|
+
require 'appmap/command/agent_setup/status'
|
7
|
+
|
8
|
+
@options = { config_file: AppMap::DEFAULT_CONFIG_FILE_PATH }
|
9
|
+
|
10
|
+
OptionParser.new do |parser|
|
11
|
+
parser.banner = 'Usage: appmap-agent-status [options]'
|
12
|
+
|
13
|
+
description = "AppMap configuration file path (default: #{AppMap::DEFAULT_CONFIG_FILE_PATH})"
|
14
|
+
parser.on('-c', '--config=FILEPATH', description) do |filepath|
|
15
|
+
@options[:config_file] = filepath
|
16
|
+
end
|
17
|
+
end.parse!
|
18
|
+
|
19
|
+
AppMap::Command::AgentSetup::Status.new(@options[:config_file]).perform
|
@@ -1,8 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require '
|
3
|
+
require 'json'
|
4
4
|
require 'appmap/service/guesser'
|
5
|
-
require 'appmap/util'
|
6
5
|
|
7
6
|
module AppMap
|
8
7
|
module Command
|
@@ -11,32 +10,19 @@ module AppMap
|
|
11
10
|
|
12
11
|
class Init < InitStruct
|
13
12
|
def perform
|
14
|
-
if File.exist?(config_file)
|
15
|
-
puts AppMap::Util.color(%(The AppMap config file #{config_file} already exists.), :magenta)
|
16
|
-
return
|
17
|
-
end
|
18
|
-
|
19
|
-
ensure_directory_exists
|
20
|
-
|
21
13
|
config = {
|
22
14
|
'name' => Service::Guesser.guess_name,
|
23
15
|
'packages' => Service::Guesser.guess_paths.map { |path| { 'path' => path } }
|
24
16
|
}
|
25
|
-
content = YAML.dump(config).gsub("---\n", '')
|
26
17
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
end
|
34
|
-
|
35
|
-
private
|
18
|
+
result = {
|
19
|
+
configuration: {
|
20
|
+
filename: config_file,
|
21
|
+
contents: YAML.dump(config)
|
22
|
+
}
|
23
|
+
}
|
36
24
|
|
37
|
-
|
38
|
-
dirname = File.dirname(config_file)
|
39
|
-
FileUtils.mkdir_p(dirname) unless File.directory?(dirname)
|
25
|
+
puts JSON.pretty_generate(result)
|
40
26
|
end
|
41
27
|
end
|
42
28
|
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'json'
|
4
|
+
require 'appmap/service/config_analyzer'
|
5
|
+
require 'appmap/service/integration_test_path_finder'
|
6
|
+
require 'appmap/service/test_command_provider'
|
7
|
+
|
8
|
+
module AppMap
|
9
|
+
module Command
|
10
|
+
module AgentSetup
|
11
|
+
StatusStruct = Struct.new(:config_file)
|
12
|
+
|
13
|
+
class Status < StatusStruct
|
14
|
+
def perform
|
15
|
+
status = {
|
16
|
+
test_commands: Service::TestCommandProvider.all,
|
17
|
+
properties: {
|
18
|
+
config: {
|
19
|
+
app: config_analyzer.app_name,
|
20
|
+
present: config_analyzer.present?,
|
21
|
+
valid: config_analyzer.valid?
|
22
|
+
},
|
23
|
+
project: {
|
24
|
+
agentVersion: AppMap::VERSION,
|
25
|
+
language: 'ruby',
|
26
|
+
remoteRecordingCapable: Gem.loaded_specs.has_key?('rails'),
|
27
|
+
integrationTests: Service::IntegrationTestPathFinder.count_paths > 0
|
28
|
+
}
|
29
|
+
}
|
30
|
+
}
|
31
|
+
|
32
|
+
puts JSON.pretty_generate(status)
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
def config_analyzer
|
38
|
+
@config_analyzer ||= Service::ConfigAnalyzer.new(config_file)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
data/lib/appmap/config.rb
CHANGED
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module AppMap
|
4
|
+
module Service
|
5
|
+
class ConfigAnalyzer
|
6
|
+
attr_reader :config_error
|
7
|
+
|
8
|
+
def initialize(config_file)
|
9
|
+
@config_file = config_file
|
10
|
+
@config = load_config
|
11
|
+
end
|
12
|
+
|
13
|
+
def app_name
|
14
|
+
@config.to_h[:name] if present?
|
15
|
+
end
|
16
|
+
|
17
|
+
def present?
|
18
|
+
File.exist?(@config_file)
|
19
|
+
end
|
20
|
+
|
21
|
+
def valid?
|
22
|
+
present? && @config.to_h.key?(:name) && @config.to_h.key?(:packages)
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def load_config
|
28
|
+
AppMap::Config.load_from_file @config_file if present?
|
29
|
+
rescue
|
30
|
+
nil
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'appmap/service/test_framework_detector'
|
4
|
+
|
5
|
+
module AppMap
|
6
|
+
module Service
|
7
|
+
class IntegrationTestPathFinder
|
8
|
+
class << self
|
9
|
+
def find
|
10
|
+
@paths ||= begin
|
11
|
+
paths = { rspec: [], minitest: [], cucumber: [] }
|
12
|
+
paths[:rspec] = find_rspec_paths if TestFrameworkDetector.rspec_present?
|
13
|
+
paths[:minitest] = find_minitest_paths if TestFrameworkDetector.minitest_present?
|
14
|
+
paths[:cucumber] = find_cucumber_paths if TestFrameworkDetector.cucumber_present?
|
15
|
+
paths
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def count_paths
|
20
|
+
find.flatten(2).length - 3
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def find_rspec_paths
|
26
|
+
find_non_empty_paths(%w[spec/controllers spec/requests spec/integration spec/api spec/features spec/system])
|
27
|
+
end
|
28
|
+
|
29
|
+
|
30
|
+
def find_minitest_paths
|
31
|
+
find_non_empty_paths(%w[test/controllers test/integration])
|
32
|
+
end
|
33
|
+
|
34
|
+
def find_cucumber_paths
|
35
|
+
find_non_empty_paths(%w[features])
|
36
|
+
end
|
37
|
+
|
38
|
+
def find_non_empty_paths(paths)
|
39
|
+
paths.select { |path| Dir.exist?(path) && !Dir.empty?(path) }
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'appmap/service/test_framework_detector'
|
4
|
+
require 'appmap/service/integration_test_path_finder'
|
5
|
+
|
6
|
+
module AppMap
|
7
|
+
module Service
|
8
|
+
class TestCommandProvider
|
9
|
+
class << self
|
10
|
+
def all
|
11
|
+
commands = []
|
12
|
+
|
13
|
+
if TestFrameworkDetector.rspec_present? && !integration_test_paths[:rspec].empty?
|
14
|
+
commands << {
|
15
|
+
framework: :rspec,
|
16
|
+
command: {
|
17
|
+
program: 'bundle',
|
18
|
+
args: %w[exec rspec] + integration_test_paths[:rspec].map { |path| "./#{path}" },
|
19
|
+
environment: {
|
20
|
+
APPMAP: 'true'
|
21
|
+
}
|
22
|
+
}
|
23
|
+
}
|
24
|
+
end
|
25
|
+
|
26
|
+
if TestFrameworkDetector.minitest_present? && !integration_test_paths[:minitest].empty?
|
27
|
+
commands += minitest_commands
|
28
|
+
end
|
29
|
+
if TestFrameworkDetector.cucumber_present? && !integration_test_paths[:cucumber].empty?
|
30
|
+
commands << {
|
31
|
+
framework: :cucumber,
|
32
|
+
command: {
|
33
|
+
program: 'bundle',
|
34
|
+
args: %w[exec cucumber],
|
35
|
+
environment: { APPMAP: 'true' }
|
36
|
+
}
|
37
|
+
}
|
38
|
+
end
|
39
|
+
|
40
|
+
commands
|
41
|
+
end
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
def minitest_commands
|
46
|
+
if Gem.loaded_specs.has_key?('rails')
|
47
|
+
[
|
48
|
+
{
|
49
|
+
framework: :minitest,
|
50
|
+
command: {
|
51
|
+
program: 'bundle',
|
52
|
+
args: %w[exec rails test] + integration_test_paths[:minitest].map { |path| "./#{path}" },
|
53
|
+
environment: { APPMAP: 'true' }
|
54
|
+
}
|
55
|
+
}
|
56
|
+
]
|
57
|
+
else
|
58
|
+
integration_test_paths[:minitest].map do |path|
|
59
|
+
{
|
60
|
+
framework: :minitest,
|
61
|
+
command: {
|
62
|
+
program: 'bundle',
|
63
|
+
args: ['exec', 'ruby', "./#{path}"],
|
64
|
+
environment: { APPMAP: 'true' }
|
65
|
+
}
|
66
|
+
}
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
def integration_test_paths
|
72
|
+
@paths ||= Service::IntegrationTestPathFinder.find
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module AppMap
|
4
|
+
module Service
|
5
|
+
class TestFrameworkDetector
|
6
|
+
class << self
|
7
|
+
def rspec_present?
|
8
|
+
Gem.loaded_specs.has_key?('rspec-core')
|
9
|
+
end
|
10
|
+
|
11
|
+
def minitest_present?
|
12
|
+
Gem.loaded_specs.has_key?('minitest')
|
13
|
+
end
|
14
|
+
|
15
|
+
def cucumber_present?
|
16
|
+
Gem.loaded_specs.has_key?('cucumber')
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/appmap/version.rb
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
name: app
|
@@ -0,0 +1,96 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'appmap/service/config_analyzer'
|
5
|
+
|
6
|
+
describe AppMap::Service::ConfigAnalyzer do
|
7
|
+
subject { described_class.new(config_file) }
|
8
|
+
|
9
|
+
context 'with non-existing config' do
|
10
|
+
let(:config_file) { 'spec/fixtures/config/non_existing_config.yml'}
|
11
|
+
|
12
|
+
describe '.app_name' do
|
13
|
+
it 'returns nil' do
|
14
|
+
expect(subject.app_name).to be_nil
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe '.is_valid?' do
|
19
|
+
it 'returns false' do
|
20
|
+
expect(subject.valid?).to be_falsey
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe '.is_present?' do
|
25
|
+
it 'returns false' do
|
26
|
+
expect(subject.present?).to be_falsey
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'with valid config' do
|
32
|
+
let(:config_file) { 'spec/fixtures/config/valid_config.yml'}
|
33
|
+
|
34
|
+
describe '.app_name' do
|
35
|
+
it 'returns app name value from config' do
|
36
|
+
expect(subject.app_name).to eq('appmap')
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe '.is_valid?' do
|
41
|
+
it 'returns true' do
|
42
|
+
expect(subject.valid?).to be_truthy
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe '.is_present?' do
|
47
|
+
it 'returns true' do
|
48
|
+
expect(subject.present?).to be_truthy
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
context 'with invalid YAML config' do
|
54
|
+
let(:config_file) { 'spec/fixtures/config/invalid_config.yml'}
|
55
|
+
|
56
|
+
describe '.app_name' do
|
57
|
+
it 'returns app name value from config' do
|
58
|
+
expect(subject.app_name).to be_nil
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe '.is_valid?' do
|
63
|
+
it 'returns false' do
|
64
|
+
expect(subject.valid?).to be_falsey
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
describe '.is_present?' do
|
69
|
+
it 'return true' do
|
70
|
+
expect(subject.present?).to be_truthy
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
context 'with incomplete config' do
|
76
|
+
let(:config_file) { 'spec/fixtures/config/incomplete_config.yml'}
|
77
|
+
|
78
|
+
describe '.app_name' do
|
79
|
+
it 'returns nil' do
|
80
|
+
expect(subject.app_name).to eq('app')
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
describe '.is_valid?' do
|
85
|
+
it 'guesses paths and returns true ' do
|
86
|
+
expect(subject.valid?).to be_truthy
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
describe '.is_present?' do
|
91
|
+
it 'returns true' do
|
92
|
+
expect(subject.present?).to be_truthy
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
@@ -5,8 +5,8 @@ require 'test_helper'
|
|
5
5
|
|
6
6
|
class AgentSetupInitTest < Minitest::Test
|
7
7
|
CONFIG_FILENAME = '123.yml'
|
8
|
-
|
9
|
-
|
8
|
+
EXPECTED_CONFIG_CONTENT = %(---
|
9
|
+
name: appmap-ruby
|
10
10
|
packages:
|
11
11
|
- path: lib
|
12
12
|
)
|
@@ -14,24 +14,24 @@ packages:
|
|
14
14
|
def test_init_when_config_exists
|
15
15
|
output = `./exe/appmap-agent-init`
|
16
16
|
assert_equal 0, $CHILD_STATUS.exitstatus
|
17
|
-
|
17
|
+
expected = JSON.pretty_generate({
|
18
|
+
configuration: {
|
19
|
+
filename: 'appmap.yml',
|
20
|
+
contents: EXPECTED_CONFIG_CONTENT
|
21
|
+
}
|
22
|
+
})
|
23
|
+
assert_equal expected, output.strip
|
18
24
|
end
|
19
25
|
|
20
26
|
def test_init_with_custom_config_filename
|
21
27
|
output = `./exe/appmap-agent-init -c #{CONFIG_FILENAME}`
|
22
28
|
assert_equal 0, $CHILD_STATUS.exitstatus
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
output = `./exe/appmap-agent-init --config=#{SUBFOLDER_CONFIG_FILEPATH}`
|
31
|
-
assert_equal 0, $CHILD_STATUS.exitstatus
|
32
|
-
assert_includes output, "The following AppMap config file #{SUBFOLDER_CONFIG_FILEPATH} has been created:"
|
33
|
-
assert_equal EXPECTED_CONFIG_CONTENT, File.read(SUBFOLDER_CONFIG_FILEPATH)
|
34
|
-
ensure
|
35
|
-
File.delete(SUBFOLDER_CONFIG_FILEPATH) if File.exist?(SUBFOLDER_CONFIG_FILEPATH)
|
29
|
+
expected = JSON.pretty_generate({
|
30
|
+
configuration: {
|
31
|
+
filename: CONFIG_FILENAME,
|
32
|
+
contents: EXPECTED_CONFIG_CONTENT
|
33
|
+
}
|
34
|
+
})
|
35
|
+
assert_equal expected, output.strip
|
36
36
|
end
|
37
37
|
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require 'test_helper'
|
5
|
+
|
6
|
+
class AgentSetupInitTest < Minitest::Test
|
7
|
+
def test_status_gem
|
8
|
+
output = `./exe/appmap-agent-status`
|
9
|
+
assert_equal 0, $CHILD_STATUS.exitstatus
|
10
|
+
expected = {
|
11
|
+
test_commands: [],
|
12
|
+
properties: {
|
13
|
+
config: {
|
14
|
+
app: 'AppMap Rubygem',
|
15
|
+
present: true,
|
16
|
+
valid: true
|
17
|
+
},
|
18
|
+
project: {
|
19
|
+
agentVersion: AppMap::VERSION,
|
20
|
+
language: 'ruby',
|
21
|
+
remoteRecordingCapable: false,
|
22
|
+
integrationTests: false
|
23
|
+
}
|
24
|
+
}
|
25
|
+
}
|
26
|
+
assert_equal JSON.pretty_generate(expected), output.strip
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_status_rails_app
|
30
|
+
output = `cd spec/fixtures/rails6_users_app && bundle exec ../../../exe/appmap-agent-status`
|
31
|
+
assert_equal 0, $CHILD_STATUS.exitstatus
|
32
|
+
expected = {
|
33
|
+
test_commands: [
|
34
|
+
{
|
35
|
+
framework: :rspec,
|
36
|
+
command: {
|
37
|
+
program: 'bundle',
|
38
|
+
args: %w[exec rspec ./spec/controllers],
|
39
|
+
environment: {
|
40
|
+
APPMAP: 'true'
|
41
|
+
}
|
42
|
+
}
|
43
|
+
},
|
44
|
+
{
|
45
|
+
framework: :minitest,
|
46
|
+
command: {
|
47
|
+
program: 'bundle',
|
48
|
+
args: %w[exec ruby ./test/controllers],
|
49
|
+
environment: {
|
50
|
+
APPMAP: 'true'
|
51
|
+
}
|
52
|
+
}
|
53
|
+
},
|
54
|
+
{
|
55
|
+
framework: :minitest,
|
56
|
+
command: {
|
57
|
+
program: 'bundle',
|
58
|
+
args: %w[exec ruby ./test/integration],
|
59
|
+
environment: {
|
60
|
+
APPMAP: 'true'
|
61
|
+
}
|
62
|
+
}
|
63
|
+
}
|
64
|
+
],
|
65
|
+
properties: {
|
66
|
+
config: {
|
67
|
+
app: nil,
|
68
|
+
present: true,
|
69
|
+
valid: false
|
70
|
+
},
|
71
|
+
project: {
|
72
|
+
agentVersion: AppMap::VERSION,
|
73
|
+
language: 'ruby',
|
74
|
+
remoteRecordingCapable: false,
|
75
|
+
integrationTests: true
|
76
|
+
}
|
77
|
+
}
|
78
|
+
}
|
79
|
+
assert_equal JSON.pretty_generate(expected), output.strip
|
80
|
+
end
|
81
|
+
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.
|
4
|
+
version: 0.59.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-
|
11
|
+
date: 2021-07-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -295,6 +295,7 @@ email:
|
|
295
295
|
- kgilpin@gmail.com
|
296
296
|
executables:
|
297
297
|
- appmap-agent-init
|
298
|
+
- appmap-agent-status
|
298
299
|
- appmap-inspect
|
299
300
|
extensions:
|
300
301
|
- ext/appmap/extconf.rb
|
@@ -324,6 +325,7 @@ files:
|
|
324
325
|
- examples/mock_webapp/lib/mock_webapp/request.rb
|
325
326
|
- examples/mock_webapp/lib/mock_webapp/user.rb
|
326
327
|
- exe/appmap-agent-init
|
328
|
+
- exe/appmap-agent-status
|
327
329
|
- exe/appmap-inspect
|
328
330
|
- ext/appmap/appmap.c
|
329
331
|
- ext/appmap/extconf.rb
|
@@ -331,6 +333,7 @@ files:
|
|
331
333
|
- lib/appmap/agent.rb
|
332
334
|
- lib/appmap/class_map.rb
|
333
335
|
- lib/appmap/command/agent_setup/init.rb
|
336
|
+
- lib/appmap/command/agent_setup/status.rb
|
334
337
|
- lib/appmap/command/inspect.rb
|
335
338
|
- lib/appmap/command_error.rb
|
336
339
|
- lib/appmap/config.rb
|
@@ -351,7 +354,11 @@ files:
|
|
351
354
|
- lib/appmap/railtie.rb
|
352
355
|
- lib/appmap/record.rb
|
353
356
|
- lib/appmap/rspec.rb
|
357
|
+
- lib/appmap/service/config_analyzer.rb
|
354
358
|
- lib/appmap/service/guesser.rb
|
359
|
+
- lib/appmap/service/integration_test_path_finder.rb
|
360
|
+
- lib/appmap/service/test_command_provider.rb
|
361
|
+
- lib/appmap/service/test_framework_detector.rb
|
355
362
|
- lib/appmap/swagger.rb
|
356
363
|
- lib/appmap/swagger/configuration.rb
|
357
364
|
- lib/appmap/swagger/markdown_descriptions.rb
|
@@ -364,6 +371,9 @@ files:
|
|
364
371
|
- release.sh
|
365
372
|
- spec/class_map_spec.rb
|
366
373
|
- spec/config_spec.rb
|
374
|
+
- spec/fixtures/config/incomplete_config.yml
|
375
|
+
- spec/fixtures/config/invalid_config.yml
|
376
|
+
- spec/fixtures/config/valid_config.yml
|
367
377
|
- spec/fixtures/hook/.gitignore
|
368
378
|
- spec/fixtures/hook/app/controllers/api/api_keys_controller.rb
|
369
379
|
- spec/fixtures/hook/app/controllers/organizations_controller.rb
|
@@ -536,6 +546,8 @@ files:
|
|
536
546
|
- spec/fixtures/rails6_users_app/spec/models/user_spec.rb
|
537
547
|
- spec/fixtures/rails6_users_app/spec/rails_helper.rb
|
538
548
|
- spec/fixtures/rails6_users_app/spec/spec_helper.rb
|
549
|
+
- spec/fixtures/rails6_users_app/test/controllers/functional_calc_test.rb
|
550
|
+
- spec/fixtures/rails6_users_app/test/integration/integration_calc_test.rb
|
539
551
|
- spec/fixtures/rails6_users_app/users_app/.gitignore
|
540
552
|
- spec/hook_spec.rb
|
541
553
|
- spec/open_spec.rb
|
@@ -545,10 +557,12 @@ files:
|
|
545
557
|
- spec/record_net_http_spec.rb
|
546
558
|
- spec/record_sql_rails_pg_spec.rb
|
547
559
|
- spec/remote_recording_spec.rb
|
560
|
+
- spec/service/config_analyzer_spec.rb
|
548
561
|
- spec/spec_helper.rb
|
549
562
|
- spec/swagger/swagger_spec.rb
|
550
563
|
- spec/util_spec.rb
|
551
564
|
- test/agent_setup_init_test.rb
|
565
|
+
- test/agent_setup_status_test.rb
|
552
566
|
- test/bundle_vendor_test.rb
|
553
567
|
- test/cucumber_test.rb
|
554
568
|
- test/expectations/openssl_test_key_sign1.json
|