appmap 0.55.0 → 0.59.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.
- 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
|