rdm 0.4.1 → 0.4.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +2 -1
- data/Gemfile.lock +2 -2
- data/bin/rdm +33 -4
- data/example/.runignore +4 -0
- data/example/configs/app/default.yml +2 -1
- data/example/configs/app/production.yml +2 -1
- data/example/tests/diff_run +32 -0
- data/example/tests/run +42 -0
- data/lib/rdm.rb +4 -0
- data/lib/rdm/cli/config.rb +31 -0
- data/lib/rdm/config_locals.rb +11 -0
- data/lib/rdm/gen/config.rb +61 -0
- data/lib/rdm/gen/package.rb +8 -5
- data/lib/rdm/handlers/template_handler.rb +2 -3
- data/lib/rdm/settings.rb +6 -2
- data/lib/rdm/source.rb +4 -1
- data/lib/rdm/source_composer.rb +38 -0
- data/lib/rdm/spec_runner.rb +14 -2
- data/lib/rdm/spec_runner/runner.rb +35 -20
- data/lib/rdm/spec_runner/view.rb +9 -1
- data/lib/rdm/templates/configs/<%=config_path%> +2 -0
- data/lib/rdm/templates/configs/<%=role_config_path%> +2 -0
- data/lib/rdm/templates/init/.runignore +4 -0
- data/lib/rdm/templates/init/env_files/development.env +3 -1
- data/lib/rdm/templates/init/env_files/production.env +3 -1
- data/lib/rdm/templates/init/env_files/test.env +3 -1
- data/lib/rdm/templates/init/tests/diff_run +6 -3
- data/lib/rdm/templates/init/tests/run +8 -3
- data/lib/rdm/version.rb +1 -1
- data/spec/rdm/gen/config_spec.rb +31 -0
- data/spec/rdm/gen/package_spec.rb +1 -1
- data/spec/rdm/rdm_spec.rb +2 -0
- data/spec/rdm/source_composer_spec.rb +76 -0
- data/spec/spec_helper.rb +13 -5
- metadata +14 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 396c2803b01c338a4c6297bc2f2a5df629d96a9b
|
4
|
+
data.tar.gz: 45f399f0dd90357c6754fc9c35562b7fc3375b45
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f65d094c45b7e596bf7bd7950e6a3fa8c167171db762e4e060080f5907c9ad47b4ed0c820951e7f11bac00266634b302b16673e4fc11d246065064c17957f9ab
|
7
|
+
data.tar.gz: f584ad64900d94cc77e4596245ff006d5a1560f8d77cb2076de5199798bc20e59ea88c911a4f8c2234abdcb44968eded70a4d592e85e51c74b0378689e872b3c
|
data/.travis.yml
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rdm (0.4.
|
4
|
+
rdm (0.4.2)
|
5
5
|
activesupport
|
6
6
|
commander (~> 4.4)
|
7
7
|
|
@@ -25,7 +25,7 @@ GEM
|
|
25
25
|
diff-lcs (1.3)
|
26
26
|
docile (1.1.5)
|
27
27
|
highline (1.7.8)
|
28
|
-
i18n (0.8.
|
28
|
+
i18n (0.8.6)
|
29
29
|
json (2.0.3)
|
30
30
|
minitest (5.10.2)
|
31
31
|
parser (2.3.3.1)
|
data/bin/rdm
CHANGED
@@ -33,7 +33,10 @@ class RdmCliRunner
|
|
33
33
|
console: "irb",
|
34
34
|
current_path: `pwd`.strip
|
35
35
|
}
|
36
|
-
|
36
|
+
options_hash = options.__hash__
|
37
|
+
options_hash.delete(:trace)
|
38
|
+
|
39
|
+
options_with_defaults = defaults.merge!(options_hash)
|
37
40
|
Rdm::CLI::Init.run(options_with_defaults)
|
38
41
|
end
|
39
42
|
end
|
@@ -58,7 +61,10 @@ class RdmCliRunner
|
|
58
61
|
package_name: package_name,
|
59
62
|
path: package_name.downcase.gsub(/\s+/, '_')
|
60
63
|
}
|
61
|
-
|
64
|
+
options_hash = options.__hash__
|
65
|
+
options_hash.delete(:trace)
|
66
|
+
|
67
|
+
options_with_defaults = defaults.merge!(options_hash)
|
62
68
|
Rdm::CLI::GenPackage.run(options_with_defaults)
|
63
69
|
end
|
64
70
|
end
|
@@ -106,10 +112,13 @@ class RdmCliRunner
|
|
106
112
|
c.option '--path [DESTINATION_PATH]', String, 'Location of generated folders'
|
107
113
|
c.option '--OPTION_NAME [OPTION_VALUE]', String, 'Local variables for template handler'
|
108
114
|
c.action do |args, options|
|
109
|
-
options_hash
|
115
|
+
options_hash = options.__hash__
|
116
|
+
options_hash.delete(:trace)
|
117
|
+
|
118
|
+
template_name = args.first || ""
|
110
119
|
|
111
120
|
Rdm::CLI::TemplateGenerator.run(
|
112
|
-
template_name:
|
121
|
+
template_name: template_name,
|
113
122
|
current_path: `pwd`.chomp,
|
114
123
|
local_path: options_hash.delete(:path),
|
115
124
|
locals: options_hash
|
@@ -133,6 +142,26 @@ class RdmCliRunner
|
|
133
142
|
end
|
134
143
|
end
|
135
144
|
|
145
|
+
command :"gen.config" do |c|
|
146
|
+
c.syntax = 'rdm gen.config CONFIG_NAME --CONFIG_KEY=CONFIG_VALUE'
|
147
|
+
c.description = 'generate config file with passed arguments'
|
148
|
+
c.summary = '> ' + c.description
|
149
|
+
c.example 'generate config `mailing_system` with `host: localhost`',
|
150
|
+
'rdm gen.config mailing_system --host=localhost'
|
151
|
+
|
152
|
+
c.action do |args, options|
|
153
|
+
config_name = args.first || ""
|
154
|
+
options_hash = options.__hash__
|
155
|
+
options_hash.delete(:trace)
|
156
|
+
|
157
|
+
Rdm::CLI::Config.run(
|
158
|
+
config_name: config_name,
|
159
|
+
current_path: `pwd`.chomp,
|
160
|
+
config_data: options_hash
|
161
|
+
)
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
136
165
|
run!
|
137
166
|
end
|
138
167
|
end
|
data/example/.runignore
ADDED
@@ -1 +1,2 @@
|
|
1
|
-
|
1
|
+
app:
|
2
|
+
name: "Sample app"
|
@@ -1 +1,2 @@
|
|
1
|
-
|
1
|
+
app:
|
2
|
+
name: "Sample app (Production)"
|
data/example/tests/diff_run
CHANGED
@@ -0,0 +1,32 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
ENV['RUBY_ENV'] = 'test'
|
4
|
+
require 'rdm'
|
5
|
+
|
6
|
+
REVISION = ARGV.clone.first
|
7
|
+
PATH = File.expand_path(__FILE__)
|
8
|
+
|
9
|
+
begin
|
10
|
+
changed_packages = Rdm::Handlers::DiffPackageHandler.handle(
|
11
|
+
path: PATH,
|
12
|
+
revision: REVISION
|
13
|
+
)
|
14
|
+
|
15
|
+
puts "Tests for the following packages will run:"
|
16
|
+
puts changed_packages
|
17
|
+
|
18
|
+
changed_packages.each do |package|
|
19
|
+
Rdm::SpecRunner.run(
|
20
|
+
package: package,
|
21
|
+
path: PATH,
|
22
|
+
show_missing_packages: false
|
23
|
+
)
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
rescue Rdm::Errors::GitRepositoryNotInitialized
|
28
|
+
puts "Git repository is not initialized. Use `git init .`"
|
29
|
+
exit(1)
|
30
|
+
end
|
31
|
+
|
32
|
+
|
data/example/tests/run
CHANGED
@@ -0,0 +1,42 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
## # run own tests:
|
4
|
+
## $ TEST_RUN=1 tests/run
|
5
|
+
|
6
|
+
## # run application tests:
|
7
|
+
## $ tests/run
|
8
|
+
|
9
|
+
## # run package tests:
|
10
|
+
## $ tests/run commands
|
11
|
+
|
12
|
+
## # run spec in a package:
|
13
|
+
## $ tests/run commands some_spec.rb
|
14
|
+
|
15
|
+
ENV['RUBY_ENV'] = 'test'
|
16
|
+
require 'rdm'
|
17
|
+
|
18
|
+
runignore_path = File.expand_path(File.join(File.dirname(Rdm.root(__FILE__)), '.runignore'))
|
19
|
+
skipped_packages = File.open(runignore_path).each_line.inject([]) { |all, line| all.push(line.chomp!) }
|
20
|
+
|
21
|
+
if ENV['TEST_RUN']
|
22
|
+
require 'minitest/autorun'
|
23
|
+
describe Rdm::SpecRunner::Runner do
|
24
|
+
before do
|
25
|
+
@runner = Rdm::SpecRunner::Runner.new({})
|
26
|
+
end
|
27
|
+
|
28
|
+
describe 'works ' do
|
29
|
+
it 'assert true' do
|
30
|
+
assert 2 == 2
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
else
|
35
|
+
Rdm::SpecRunner.run(
|
36
|
+
package: ARGV.clone.first,
|
37
|
+
spec_matcher: ARGV.clone.last,
|
38
|
+
path: File.expand_path(__FILE__),
|
39
|
+
skipped_packages: skipped_packages,
|
40
|
+
show_missing_packages: true
|
41
|
+
)
|
42
|
+
end
|
data/lib/rdm.rb
CHANGED
@@ -15,6 +15,7 @@ module Rdm
|
|
15
15
|
require 'rdm/cli/diff_package'
|
16
16
|
require 'rdm/cli/template_generator'
|
17
17
|
require 'rdm/cli/dependencies_controller'
|
18
|
+
require 'rdm/cli/config'
|
18
19
|
|
19
20
|
# Runtime part
|
20
21
|
require 'rdm/config'
|
@@ -27,10 +28,12 @@ module Rdm
|
|
27
28
|
require 'rdm/settings'
|
28
29
|
require 'rdm/source'
|
29
30
|
require 'rdm/source_parser'
|
31
|
+
require 'rdm/source_composer'
|
30
32
|
require 'rdm/source_locator'
|
31
33
|
require 'rdm/git/diff_manager'
|
32
34
|
require 'rdm/git/diff_command'
|
33
35
|
require 'rdm/git/repository_locator'
|
36
|
+
require 'rdm/config_locals'
|
34
37
|
|
35
38
|
# Package part
|
36
39
|
require 'rdm/packages/compiler_service'
|
@@ -39,6 +42,7 @@ module Rdm
|
|
39
42
|
# Handlers part
|
40
43
|
require 'rdm/gen/package'
|
41
44
|
require 'rdm/gen/init'
|
45
|
+
require 'rdm/gen/config'
|
42
46
|
require 'rdm/handlers/diff_package_handler'
|
43
47
|
require 'rdm/handlers/template_handler'
|
44
48
|
require 'rdm/handlers/dependencies_handler'
|
@@ -0,0 +1,31 @@
|
|
1
|
+
class Rdm::CLI::Config
|
2
|
+
def self.run(current_path:, config_name:, config_data: {}, stdout: $stdout)
|
3
|
+
Rdm::CLI::Config.new(current_path, config_name, config_data, stdout).run
|
4
|
+
end
|
5
|
+
|
6
|
+
def initialize(current_path, config_name, config_data, stdout)
|
7
|
+
@current_path = current_path
|
8
|
+
@config_name = config_name
|
9
|
+
@config_data = config_data
|
10
|
+
@stdout = stdout
|
11
|
+
end
|
12
|
+
|
13
|
+
def run
|
14
|
+
generated_files = Rdm::Gen::Config.generate(
|
15
|
+
current_path: @current_path,
|
16
|
+
config_name: @config_name,
|
17
|
+
config_data: @config_data
|
18
|
+
)
|
19
|
+
|
20
|
+
puts "Following files were generated:"
|
21
|
+
puts generated_files
|
22
|
+
rescue Errno::ENOENT => e
|
23
|
+
@stdout.puts "Error occurred. Possible reasons:\n #{Rdm::SOURCE_FILENAME} not found. Please run on directory containing #{Rdm::SOURCE_FILENAME} \n#{e.inspect}"
|
24
|
+
rescue NoMethodError => e
|
25
|
+
@stdout.puts e.message
|
26
|
+
rescue Rdm::Errors::SourceFileDoesNotExist => e
|
27
|
+
@stdout.puts "Rdm.packages was not found. Run 'rdm init' to create it"
|
28
|
+
rescue Rdm::Errors::ConfigExists => e
|
29
|
+
@stdout.puts "Config :#{e.message} already exists! Use other name"
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
class Rdm::Gen::Config
|
2
|
+
TEMPLATE_NAME = 'configs'
|
3
|
+
|
4
|
+
def self.generate(config_name:, current_path:, config_data: {})
|
5
|
+
Rdm::Gen::Config.new(config_name, current_path, config_data = {}).generate
|
6
|
+
end
|
7
|
+
|
8
|
+
def initialize(config_name, current_path, config_data)
|
9
|
+
@current_path = current_path
|
10
|
+
@config_name = config_name
|
11
|
+
@source = get_source
|
12
|
+
|
13
|
+
@config_locals = Rdm::ConfigLocals.new(config_data)
|
14
|
+
end
|
15
|
+
|
16
|
+
def generate
|
17
|
+
@source.config(@config_name)
|
18
|
+
|
19
|
+
@locals = {
|
20
|
+
config_name: @config_name,
|
21
|
+
config_locals: @config_locals,
|
22
|
+
config_path: config_path(@config_name),
|
23
|
+
role_config_path: role_config_path(@config_name)
|
24
|
+
}
|
25
|
+
|
26
|
+
generated_files = Rdm::Handlers::TemplateHandler.generate(
|
27
|
+
current_path: @current_path,
|
28
|
+
locals: @locals,
|
29
|
+
template_name: TEMPLATE_NAME,
|
30
|
+
local_path: './'
|
31
|
+
)
|
32
|
+
|
33
|
+
Rdm::SourceComposer.run(@source)
|
34
|
+
|
35
|
+
generated_files
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def get_source
|
41
|
+
@source ||= Rdm::SourceParser.read_and_init_source(Rdm::SourceLocator.locate(@current_path))
|
42
|
+
end
|
43
|
+
|
44
|
+
def config_path(config_name)
|
45
|
+
Rdm.settings.read_setting(
|
46
|
+
:config_path,
|
47
|
+
vars: {
|
48
|
+
config_name: config_name
|
49
|
+
}
|
50
|
+
)
|
51
|
+
end
|
52
|
+
|
53
|
+
def role_config_path(config_name)
|
54
|
+
Rdm.settings.read_setting(
|
55
|
+
:role_config_path,
|
56
|
+
vars: {
|
57
|
+
config_name: config_name
|
58
|
+
}
|
59
|
+
)
|
60
|
+
end
|
61
|
+
end
|
data/lib/rdm/gen/package.rb
CHANGED
@@ -17,14 +17,17 @@ module Rdm
|
|
17
17
|
@package_name = package_name
|
18
18
|
@local_path = local_path
|
19
19
|
@locals = locals
|
20
|
+
@source = get_source
|
20
21
|
end
|
21
22
|
|
22
23
|
def create
|
23
|
-
|
24
|
-
raise Rdm::Errors::PackageNameNotSpecified if @package_name.nil? || @package_name.empty?
|
25
|
-
raise Rdm::Errors::PackageExists if source.packages.keys.include?(@package_name)
|
24
|
+
@source.package(@local_path)
|
26
25
|
|
27
|
-
|
26
|
+
raise Rdm::Errors::PackageDirExists.new(@local_path) if Dir.exist?(File.join(@source.root_path, @local_path))
|
27
|
+
raise Rdm::Errors::PackageNameNotSpecified if @package_name.nil? || @package_name.empty?
|
28
|
+
raise Rdm::Errors::PackageExists if @source.packages.keys.include?(@package_name)
|
29
|
+
|
30
|
+
Rdm::SourceComposer.run(@source)
|
28
31
|
|
29
32
|
Rdm::Handlers::TemplateHandler.generate(
|
30
33
|
template_name: TEMPLATE_NAME,
|
@@ -34,7 +37,7 @@ module Rdm
|
|
34
37
|
)
|
35
38
|
end
|
36
39
|
|
37
|
-
def
|
40
|
+
def get_source
|
38
41
|
@source ||= Rdm::SourceParser.read_and_init_source(Rdm::SourceLocator.locate(@current_path))
|
39
42
|
end
|
40
43
|
end
|
@@ -79,7 +79,7 @@ module Rdm
|
|
79
79
|
template_files_list.map! do |path|
|
80
80
|
rendered_abs_path = Rdm::Templates::TemplateRenderer.handle(get_destination_path(path), @locals)
|
81
81
|
rendered_rel_path = Pathname.new(rendered_abs_path).relative_path_from Pathname.new(project_path)
|
82
|
-
|
82
|
+
|
83
83
|
if File.file?(rendered_abs_path) && File.exists?(rendered_abs_path)
|
84
84
|
@stdout.puts "Warning! #{rendered_rel_path} already exists. Skipping file creation..."
|
85
85
|
next
|
@@ -89,12 +89,11 @@ module Rdm
|
|
89
89
|
FileUtils.mkdir_p rendered_abs_path
|
90
90
|
next
|
91
91
|
end
|
92
|
-
|
92
|
+
|
93
93
|
rendered_file_content = handle_file_content?(path) ?
|
94
94
|
Rdm::Templates::TemplateRenderer.handle(File.read(path), @locals) :
|
95
95
|
File.read(path)
|
96
96
|
|
97
|
-
|
98
97
|
FileUtils.mkdir_p(File.dirname(rendered_abs_path))
|
99
98
|
File.open(rendered_abs_path, 'w') { |f| f.write rendered_file_content }
|
100
99
|
|
data/lib/rdm/settings.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
class Rdm::Settings
|
2
|
+
attr_reader :settings
|
3
|
+
|
2
4
|
SETTING_KEYS = [
|
3
5
|
:role, :package_subdir_name, :configs_dir, :config_path, :role_config_path,
|
4
6
|
:silence_missing_package_file, :silence_missing_package, :compile_path,
|
@@ -24,13 +26,14 @@ class Rdm::Settings
|
|
24
26
|
])
|
25
27
|
compile_add_files([
|
26
28
|
'Gemfile',
|
27
|
-
'Gemfile.lock'
|
29
|
+
'Gemfile.lock'
|
28
30
|
])
|
29
31
|
compile_path('/tmp/rdm/:package_name')
|
30
32
|
end
|
31
33
|
|
32
34
|
SETTING_KEYS.each do |key|
|
33
35
|
define_method(key) do |value = nil, &block|
|
36
|
+
# debugger if key == :compile_ignore_files
|
34
37
|
fetch_setting key, value, &block
|
35
38
|
end
|
36
39
|
end
|
@@ -39,7 +42,8 @@ class Rdm::Settings
|
|
39
42
|
if value.nil? && !block_given?
|
40
43
|
read_setting(key)
|
41
44
|
else
|
42
|
-
|
45
|
+
write_value = value.nil? ? block : value
|
46
|
+
write_setting(key, write_value)
|
43
47
|
end
|
44
48
|
end
|
45
49
|
|
data/lib/rdm/source.rb
CHANGED
@@ -16,7 +16,10 @@ class Rdm::Source
|
|
16
16
|
# Add config to list of known configs
|
17
17
|
# @param config_name [String] Config name
|
18
18
|
def config(config_name)
|
19
|
-
|
19
|
+
config_name = config_name.to_s
|
20
|
+
raise Rdm::Errors::ConfigExists, config_name if @config_names.include?(config_name)
|
21
|
+
|
22
|
+
@config_names << config_name
|
20
23
|
end
|
21
24
|
|
22
25
|
# Add package to list of known packages
|
@@ -0,0 +1,38 @@
|
|
1
|
+
class Rdm::SourceComposer
|
2
|
+
def self.run(source)
|
3
|
+
Rdm::SourceComposer.new(source).run
|
4
|
+
end
|
5
|
+
|
6
|
+
def initialize(source)
|
7
|
+
@source = source
|
8
|
+
@content = []
|
9
|
+
end
|
10
|
+
|
11
|
+
def run
|
12
|
+
@content.push "setup do"
|
13
|
+
Rdm.settings.settings.each do |setting, value|
|
14
|
+
@content.push " #{setting} #{format_value(value)}"
|
15
|
+
end
|
16
|
+
@content.push "end"
|
17
|
+
|
18
|
+
@content.push "\n"
|
19
|
+
|
20
|
+
@source.config_names.each do |config, _|
|
21
|
+
@content.push "config :#{config}"
|
22
|
+
end
|
23
|
+
|
24
|
+
@content.push "\n"
|
25
|
+
|
26
|
+
@source.package_paths.each do |package, _|
|
27
|
+
@content.push "package \"#{package}\""
|
28
|
+
end
|
29
|
+
|
30
|
+
File.open(Rdm.root(@source.root_path), 'w') {|f| f.puts @content}
|
31
|
+
end
|
32
|
+
|
33
|
+
def format_value(value)
|
34
|
+
return "\"#{value}\"" if value.is_a?(String)
|
35
|
+
|
36
|
+
value.to_s
|
37
|
+
end
|
38
|
+
end
|
data/lib/rdm/spec_runner.rb
CHANGED
@@ -1,5 +1,17 @@
|
|
1
1
|
module Rdm::SpecRunner
|
2
|
-
def self.run(
|
3
|
-
|
2
|
+
def self.run(
|
3
|
+
path: nil,
|
4
|
+
package: nil,
|
5
|
+
spec_matcher: nil,
|
6
|
+
show_missing_packages: nil,
|
7
|
+
skipped_packages: []
|
8
|
+
)
|
9
|
+
Rdm::SpecRunner::Runner.new(
|
10
|
+
path: path,
|
11
|
+
package: package,
|
12
|
+
spec_matcher: spec_matcher,
|
13
|
+
show_missing_packages: show_missing_packages,
|
14
|
+
skipped_packages: skipped_packages
|
15
|
+
).run
|
4
16
|
end
|
5
17
|
end
|
@@ -1,20 +1,28 @@
|
|
1
1
|
class Rdm::SpecRunner::Runner
|
2
|
-
attr_accessor :
|
2
|
+
attr_accessor :no_specs_packages
|
3
3
|
attr_accessor :prepared_command_params
|
4
4
|
attr_accessor :command
|
5
5
|
|
6
|
-
def initialize(
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
6
|
+
def initialize(
|
7
|
+
package: nil,
|
8
|
+
spec_matcher: nil,
|
9
|
+
path: nil,
|
10
|
+
show_missing_packages: nil,
|
11
|
+
skipped_packages: []
|
12
|
+
)
|
13
|
+
@package = package,
|
14
|
+
@spec_matcher = spec_matcher.to_s
|
15
|
+
@no_specs_packages = []
|
16
|
+
@skipped_packages = skipped_packages
|
17
|
+
@path = path
|
18
|
+
@run_all = @package.nil?
|
19
|
+
@show_missing_packages = show_missing_packages
|
12
20
|
end
|
13
21
|
|
14
22
|
def run
|
15
23
|
prepare!
|
16
24
|
check_input_params!
|
17
|
-
display_missing_specs
|
25
|
+
display_missing_specs if @show_missing_packages
|
18
26
|
execute_command
|
19
27
|
end
|
20
28
|
|
@@ -44,7 +52,7 @@ class Rdm::SpecRunner::Runner
|
|
44
52
|
)
|
45
53
|
end
|
46
54
|
|
47
|
-
if
|
55
|
+
if no_specs_packages.include?(@package_name)
|
48
56
|
exit_with_message(
|
49
57
|
view.no_specs_for_package(@package_name)
|
50
58
|
)
|
@@ -60,10 +68,10 @@ class Rdm::SpecRunner::Runner
|
|
60
68
|
|
61
69
|
def prepare!
|
62
70
|
prepared_command_params = []
|
63
|
-
|
71
|
+
no_specs_packages = []
|
64
72
|
command = nil
|
65
73
|
prepare_command_params
|
66
|
-
|
74
|
+
prepare_no_specs_packages
|
67
75
|
prepare_command
|
68
76
|
end
|
69
77
|
|
@@ -77,10 +85,10 @@ class Rdm::SpecRunner::Runner
|
|
77
85
|
end
|
78
86
|
end
|
79
87
|
|
80
|
-
def
|
88
|
+
def prepare_no_specs_packages
|
81
89
|
prepared_command_params
|
82
90
|
.select { |cp| cp.spec_count == 0 }
|
83
|
-
.map { |cp|
|
91
|
+
.map { |cp| no_specs_packages << cp.package_name }
|
84
92
|
end
|
85
93
|
|
86
94
|
def prepare_command
|
@@ -101,17 +109,24 @@ class Rdm::SpecRunner::Runner
|
|
101
109
|
end
|
102
110
|
|
103
111
|
def prepare_command_for_packages(packages_command_params)
|
104
|
-
packages_command_params
|
105
|
-
cmd_params.spec_count > 0
|
106
|
-
|
107
|
-
- cmd_params.spec_count
|
108
|
-
|
112
|
+
packages_command_params
|
113
|
+
.select { |cmd_params| cmd_params.spec_count > 0 }
|
114
|
+
.reject { |cmd_params| @skipped_packages.include?(cmd_params.package_name) }
|
115
|
+
.sort_by { |cmd_params| - cmd_params.spec_count }
|
116
|
+
.map(&:command)
|
117
|
+
.join(' && ')
|
109
118
|
end
|
110
119
|
|
111
120
|
def display_missing_specs
|
112
|
-
unless
|
113
|
-
print_message view.missing_specs_message(
|
121
|
+
unless no_specs_packages.empty?
|
122
|
+
print_message view.missing_specs_message(no_specs_packages)
|
114
123
|
end
|
124
|
+
|
125
|
+
unless @skipped_packages.empty?
|
126
|
+
print_message view.skipping_specs_message(@skipped_packages)
|
127
|
+
end
|
128
|
+
|
129
|
+
print_message view.specs_header_message
|
115
130
|
end
|
116
131
|
|
117
132
|
def execute_command
|
data/lib/rdm/spec_runner/view.rb
CHANGED
@@ -11,7 +11,15 @@ class Rdm::SpecRunner::View
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def missing_specs_message(skipped_packages)
|
14
|
-
"NO SPECS FOUND FOR PACKAGES: \n#{skipped_packages.map { |x| " - #{x}" }.join("\n")}\n\n
|
14
|
+
"NO SPECS FOUND FOR PACKAGES: \n#{skipped_packages.map { |x| " - #{x}" }.join("\n")}\n\n"
|
15
|
+
end
|
16
|
+
|
17
|
+
def skipping_specs_message(skipped_packages)
|
18
|
+
"FOLLOWING PACKAGES WERE SKIPPED BY .runignore FILE: \n#{skipped_packages.map { |x| " - #{x}" }.join("\n")}\n\n"
|
19
|
+
end
|
20
|
+
|
21
|
+
def specs_header_message
|
22
|
+
"**** SPECS *****"
|
15
23
|
end
|
16
24
|
|
17
25
|
def no_specs_for_package(package_name)
|
@@ -12,14 +12,17 @@ begin
|
|
12
12
|
revision: REVISION
|
13
13
|
)
|
14
14
|
|
15
|
-
puts "
|
15
|
+
puts "Tests for the following packages will run:"
|
16
|
+
puts changed_packages
|
16
17
|
|
17
18
|
changed_packages.each do |package|
|
18
19
|
Rdm::SpecRunner.run(
|
19
|
-
package:
|
20
|
-
path:
|
20
|
+
package: package,
|
21
|
+
path: PATH,
|
22
|
+
show_missing_packages: false
|
21
23
|
)
|
22
24
|
end
|
25
|
+
|
23
26
|
|
24
27
|
rescue Rdm::Errors::GitRepositoryNotInitialized
|
25
28
|
puts "Git repository is not initialized. Use `git init .`"
|
@@ -15,6 +15,9 @@
|
|
15
15
|
ENV['RUBY_ENV'] = 'test'
|
16
16
|
require 'rdm'
|
17
17
|
|
18
|
+
runignore_path = File.expand_path(File.join(File.dirname(Rdm.root(__FILE__)), '.runignore'))
|
19
|
+
skipped_packages = File.open(runignore_path).each_line.inject([]) { |all, line| all.push(line.chomp!) }
|
20
|
+
|
18
21
|
if ENV['TEST_RUN']
|
19
22
|
require 'minitest/autorun'
|
20
23
|
describe Rdm::SpecRunner::Runner do
|
@@ -30,8 +33,10 @@ if ENV['TEST_RUN']
|
|
30
33
|
end
|
31
34
|
else
|
32
35
|
Rdm::SpecRunner.run(
|
33
|
-
package:
|
34
|
-
spec_matcher:
|
35
|
-
path:
|
36
|
+
package: ARGV.clone.first,
|
37
|
+
spec_matcher: ARGV.clone.last,
|
38
|
+
path: File.expand_path(__FILE__),
|
39
|
+
skipped_packages: skipped_packages,
|
40
|
+
show_missing_packages: true
|
36
41
|
)
|
37
42
|
end
|
data/lib/rdm/version.rb
CHANGED
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Rdm::Gen::Config do
|
4
|
+
include ExampleProjectHelper
|
5
|
+
|
6
|
+
subject { described_class }
|
7
|
+
|
8
|
+
describe "::generate" do
|
9
|
+
before { initialize_example_project }
|
10
|
+
after { reset_example_project }
|
11
|
+
|
12
|
+
context "sample config" do
|
13
|
+
before do
|
14
|
+
subject.generate(
|
15
|
+
config_name: 'mailing_system',
|
16
|
+
current_path: example_project_path
|
17
|
+
)
|
18
|
+
end
|
19
|
+
|
20
|
+
it "generates sample config" do
|
21
|
+
FileUtils.cd(example_project_path) do
|
22
|
+
ensure_exists("configs/mailing_system/default.yml")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
it "add config line to Rdm.packages" do
|
27
|
+
ensure_content(rdm_source_file, 'config :mailing_system')
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/spec/rdm/rdm_spec.rb
CHANGED
@@ -0,0 +1,76 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Rdm::SourceComposer do
|
4
|
+
include ExampleProjectHelper
|
5
|
+
|
6
|
+
subject { described_class }
|
7
|
+
|
8
|
+
before { initialize_example_project }
|
9
|
+
after { reset_example_project }
|
10
|
+
|
11
|
+
describe '::run' do
|
12
|
+
context 'setup block' do
|
13
|
+
before do
|
14
|
+
@rdm_source = Rdm::SourceParser.read_and_init_source(rdm_source_file)
|
15
|
+
described_class.run(@rdm_source)
|
16
|
+
end
|
17
|
+
|
18
|
+
it "composes with explicit options" do
|
19
|
+
ensure_content(rdm_source_file, 'role "production"')
|
20
|
+
ensure_content(rdm_source_file, 'env_file_name "production"')
|
21
|
+
ensure_content(rdm_source_file, 'env_files_dir "env_files"')
|
22
|
+
ensure_content(rdm_source_file, 'config_path ":configs_dir/:config_name/default.yml"')
|
23
|
+
ensure_content(rdm_source_file, 'role_config_path ":configs_dir/:config_name/:role.yml"')
|
24
|
+
ensure_content(rdm_source_file, 'package_subdir_name "package"')
|
25
|
+
ensure_content(rdm_source_file, 'compile_path "/tmp/rdm/:package_name"')
|
26
|
+
end
|
27
|
+
|
28
|
+
it "composes with default options" do
|
29
|
+
ensure_content(rdm_source_file, 'silence_missing_package false')
|
30
|
+
ensure_content(rdm_source_file, 'silence_missing_package_file true') # From 'spec_helper' settings, should be false
|
31
|
+
expect(
|
32
|
+
File.read(rdm_source_file)
|
33
|
+
).to include('compile_ignore_files [".gitignore", ".byebug_history", ".irbrc", ".rspec", "*_spec.rb", "*.log"]')
|
34
|
+
expect(
|
35
|
+
File.read(rdm_source_file)
|
36
|
+
).to include('compile_add_files ["Gemfile", "Gemfile.lock"]')
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context 'configs' do
|
41
|
+
before do
|
42
|
+
@rdm_source = Rdm::SourceParser.read_and_init_source(rdm_source_file)
|
43
|
+
@rdm_source.config(:mailing_system)
|
44
|
+
described_class.run(@rdm_source)
|
45
|
+
end
|
46
|
+
|
47
|
+
it "composes with old configs" do
|
48
|
+
ensure_content(rdm_source_file, 'config :database')
|
49
|
+
ensure_content(rdm_source_file, 'config :app')
|
50
|
+
end
|
51
|
+
|
52
|
+
it "composes with new configs" do
|
53
|
+
ensure_content(rdm_source_file, 'config :mailing_system')
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
context 'packages' do
|
58
|
+
before do
|
59
|
+
@rdm_source = Rdm::SourceParser.read_and_init_source(rdm_source_file)
|
60
|
+
@rdm_source.package('mailing_system')
|
61
|
+
described_class.run(@rdm_source)
|
62
|
+
end
|
63
|
+
|
64
|
+
it "composes with old configs" do
|
65
|
+
ensure_content(rdm_source_file, 'package "server"')
|
66
|
+
ensure_content(rdm_source_file, 'package "domain/core"')
|
67
|
+
ensure_content(rdm_source_file, 'package "infrastructure/repository"')
|
68
|
+
ensure_content(rdm_source_file, 'package "application/web"')
|
69
|
+
end
|
70
|
+
|
71
|
+
it "composes with new configs" do
|
72
|
+
ensure_content(rdm_source_file, 'package "mailing_system"')
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,4 +1,10 @@
|
|
1
1
|
require 'simplecov'
|
2
|
+
SimpleCov.start do
|
3
|
+
add_filter "/spec/"
|
4
|
+
add_filter "/.direnv/"
|
5
|
+
add_filter "/rdm/templates"
|
6
|
+
end
|
7
|
+
|
2
8
|
require 'rdm'
|
3
9
|
require 'byebug'
|
4
10
|
require 'fileutils'
|
@@ -6,16 +12,18 @@ require 'fileutils'
|
|
6
12
|
require_relative 'helpers/example_project_helper'
|
7
13
|
require_relative 'helpers/git_commands_helper'
|
8
14
|
|
9
|
-
SimpleCov.start do
|
10
|
-
add_filter "/spec/"
|
11
|
-
add_filter "/.direnv/"
|
12
|
-
add_filter "/rdm/templates"
|
13
|
-
end
|
14
15
|
if ENV['CI']=='true'
|
15
16
|
require 'codecov'
|
16
17
|
SimpleCov.formatter = SimpleCov::Formatter::Codecov
|
17
18
|
end
|
18
19
|
|
20
|
+
# setup GIT so specs for GIT run properly on Travis
|
21
|
+
if ENV['CI'] == 'true'
|
22
|
+
%x{ git config --global user.email "travisci@example.com" }
|
23
|
+
%x{ git config --global user.name "TravisCI Developer" }
|
24
|
+
end
|
25
|
+
|
26
|
+
|
19
27
|
Rdm.setup do
|
20
28
|
silence_missing_package_file true
|
21
29
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rdm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Droid Labs
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-08-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -141,6 +141,7 @@ files:
|
|
141
141
|
- example/.rdm/templates/repository/mapper/<%=name%>_mapper.rb
|
142
142
|
- example/.rdm/templates/repository/repository/<%=name%>_repository.rb
|
143
143
|
- example/.rdm/templates/repository/views/users.html.erb
|
144
|
+
- example/.runignore
|
144
145
|
- example/Gemfile
|
145
146
|
- example/Gemfile.lock
|
146
147
|
- example/Makefile
|
@@ -170,15 +171,18 @@ files:
|
|
170
171
|
- example/tests/run
|
171
172
|
- lib/rdm.rb
|
172
173
|
- lib/rdm/cli/compile_package.rb
|
174
|
+
- lib/rdm/cli/config.rb
|
173
175
|
- lib/rdm/cli/dependencies_controller.rb
|
174
176
|
- lib/rdm/cli/diff_package.rb
|
175
177
|
- lib/rdm/cli/gen_package.rb
|
176
178
|
- lib/rdm/cli/init.rb
|
177
179
|
- lib/rdm/cli/template_generator.rb
|
178
180
|
- lib/rdm/config.rb
|
181
|
+
- lib/rdm/config_locals.rb
|
179
182
|
- lib/rdm/config_manager.rb
|
180
183
|
- lib/rdm/config_scope.rb
|
181
184
|
- lib/rdm/errors.rb
|
185
|
+
- lib/rdm/gen/config.rb
|
182
186
|
- lib/rdm/gen/init.rb
|
183
187
|
- lib/rdm/gen/package.rb
|
184
188
|
- lib/rdm/git/diff_command.rb
|
@@ -195,6 +199,7 @@ files:
|
|
195
199
|
- lib/rdm/packages/locator.rb
|
196
200
|
- lib/rdm/settings.rb
|
197
201
|
- lib/rdm/source.rb
|
202
|
+
- lib/rdm/source_composer.rb
|
198
203
|
- lib/rdm/source_locator.rb
|
199
204
|
- lib/rdm/source_parser.rb
|
200
205
|
- lib/rdm/spec_runner.rb
|
@@ -203,7 +208,10 @@ files:
|
|
203
208
|
- lib/rdm/spec_runner/package_fetcher.rb
|
204
209
|
- lib/rdm/spec_runner/runner.rb
|
205
210
|
- lib/rdm/spec_runner/view.rb
|
211
|
+
- lib/rdm/templates/configs/<%=config_path%>
|
212
|
+
- lib/rdm/templates/configs/<%=role_config_path%>
|
206
213
|
- lib/rdm/templates/init/.rdm/helpers/render_helper.rb
|
214
|
+
- lib/rdm/templates/init/.runignore
|
207
215
|
- lib/rdm/templates/init/Gemfile
|
208
216
|
- lib/rdm/templates/init/Rdm.packages
|
209
217
|
- lib/rdm/templates/init/Readme.md
|
@@ -239,6 +247,7 @@ files:
|
|
239
247
|
- spec/rdm/cli/gen_package_spec.rb
|
240
248
|
- spec/rdm/cli/init_spec.rb
|
241
249
|
- spec/rdm/config_manager_spec.rb
|
250
|
+
- spec/rdm/gen/config_spec.rb
|
242
251
|
- spec/rdm/gen/init_spec.rb
|
243
252
|
- spec/rdm/gen/package_spec.rb
|
244
253
|
- spec/rdm/git/diff_manager_spec.rb
|
@@ -253,6 +262,7 @@ files:
|
|
253
262
|
- spec/rdm/package_parser_spec.rb
|
254
263
|
- spec/rdm/rdm_spec.rb
|
255
264
|
- spec/rdm/settings_spec.rb
|
265
|
+
- spec/rdm/source_composer_spec.rb
|
256
266
|
- spec/rdm/source_locator_spec.rb
|
257
267
|
- spec/rdm/source_parser_spec.rb
|
258
268
|
- spec/rdm/spec_runner/runner_spec.rb
|
@@ -295,6 +305,7 @@ test_files:
|
|
295
305
|
- spec/rdm/cli/gen_package_spec.rb
|
296
306
|
- spec/rdm/cli/init_spec.rb
|
297
307
|
- spec/rdm/config_manager_spec.rb
|
308
|
+
- spec/rdm/gen/config_spec.rb
|
298
309
|
- spec/rdm/gen/init_spec.rb
|
299
310
|
- spec/rdm/gen/package_spec.rb
|
300
311
|
- spec/rdm/git/diff_manager_spec.rb
|
@@ -309,6 +320,7 @@ test_files:
|
|
309
320
|
- spec/rdm/package_parser_spec.rb
|
310
321
|
- spec/rdm/rdm_spec.rb
|
311
322
|
- spec/rdm/settings_spec.rb
|
323
|
+
- spec/rdm/source_composer_spec.rb
|
312
324
|
- spec/rdm/source_locator_spec.rb
|
313
325
|
- spec/rdm/source_parser_spec.rb
|
314
326
|
- spec/rdm/spec_runner/runner_spec.rb
|