avm-tools 0.94.2 → 0.94.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/avm/eac_webapp_base0/instance.rb +5 -2
- data/lib/avm/eac_webapp_base0/instance/subcommand_parent.rb +24 -0
- data/lib/avm/eac_webapp_base0/runner/data.rb +1 -0
- data/lib/avm/eac_webapp_base0/runner/data/dump.rb +1 -1
- data/lib/avm/eac_webapp_base0/runner/data/load.rb +1 -1
- data/lib/avm/tools/version.rb +1 -1
- data/vendor/eac_cli/lib/eac_cli/definition/base_option.rb +5 -1
- data/vendor/eac_cli/lib/eac_cli/runner/context.rb +2 -1
- data/vendor/eac_cli/lib/eac_cli/runner/instance_methods.rb +8 -1
- data/vendor/eac_cli/lib/eac_cli/version.rb +1 -1
- data/vendor/eac_git/eac_git.gemspec +1 -0
- data/vendor/eac_git/lib/eac_git/local.rb +4 -0
- data/vendor/eac_git/lib/eac_git/local/commit.rb +53 -0
- data/vendor/eac_git/lib/eac_git/local/commit/changed_file.rb +46 -0
- data/vendor/eac_git/lib/eac_git/local/commit/diff_tree_line.rb +32 -0
- data/vendor/eac_git/lib/eac_git/rspec.rb +6 -1
- data/{lib/avm/git/spec_helper.rb → vendor/eac_git/lib/eac_git/rspec/stubbed_git_local_repo.rb} +16 -13
- data/vendor/eac_git/lib/eac_git/version.rb +1 -1
- data/vendor/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec.rb +13 -0
- data/vendor/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/add.source.out +1 -0
- data/vendor/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/add.target.yaml +7 -0
- data/vendor/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/modify.source.out +1 -0
- data/vendor/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/modify.target.yaml +7 -0
- data/vendor/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/remove.source.out +1 -0
- data/vendor/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/remove.target.yaml +7 -0
- data/vendor/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/rename.source.out +2 -0
- data/vendor/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/rename.target.yaml +13 -0
- data/vendor/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/rename_modify.source.out +2 -0
- data/vendor/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/rename_modify.target.yaml +13 -0
- data/vendor/eac_git/spec/lib/eac_git/local/commit_spec.rb +58 -0
- data/vendor/eac_git/spec/spec_helper.rb +1 -0
- data/vendor/eac_ruby_base0/eac_ruby_base0.gemspec +3 -3
- data/vendor/eac_ruby_base0/lib/eac_ruby_base0/runner_with/output.rb +58 -0
- data/vendor/eac_ruby_base0/lib/eac_ruby_base0/version.rb +1 -1
- data/vendor/eac_ruby_base0/spec/lib/eac_ruby_base0/runner_with/output_spec.rb +81 -0
- data/vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/base.rb +7 -10
- data/vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/multiple.rb +9 -2
- data/vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/version.rb +1 -1
- data/vendor/eac_ruby_utils/eac_ruby_utils.gemspec +1 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/fs/logs.rb +63 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/inflector.rb +9 -1
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/listable/list.rb +3 -2
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/kernel/nyi.rb +4 -2
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/string/inflector.rb +4 -2
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/settings_provider.rb +10 -29
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/settings_provider/setting_value.rb +69 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/version.rb +1 -1
- data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/settings_provider_spec.rb +8 -0
- metadata +24 -6
- data/vendor/eac_cli/lib/eac_cli/runner_with/output_file.rb +0 -30
- data/vendor/eac_cli/spec/lib/eac_cli/runner_with/output_file_spec.rb +0 -53
@@ -54,8 +54,9 @@ module EacRubyUtils
|
|
54
54
|
end
|
55
55
|
|
56
56
|
def value_validate!(value, error_class = ::StandardError)
|
57
|
-
value_valid?(value)
|
58
|
-
|
57
|
+
return value if value_valid?(value)
|
58
|
+
|
59
|
+
raise(error_class, "Invalid value: \"#{value}\" (Valid: #{values_to_s})")
|
59
60
|
end
|
60
61
|
|
61
62
|
def values_to_s
|
@@ -2,7 +2,9 @@
|
|
2
2
|
|
3
3
|
module Kernel
|
4
4
|
# Raise exception with text "Not yet implemented".
|
5
|
-
def nyi
|
6
|
-
|
5
|
+
def nyi(message = nil)
|
6
|
+
s = "Not yet implemented (Called in #{caller.first})"
|
7
|
+
s += ": #{message}" if message
|
8
|
+
raise s
|
7
9
|
end
|
8
10
|
end
|
@@ -3,7 +3,9 @@
|
|
3
3
|
require 'eac_ruby_utils/inflector'
|
4
4
|
|
5
5
|
class String
|
6
|
-
|
7
|
-
|
6
|
+
# Shortcut to `EacRubyUtils::Inflector.variableize(self, ...)`.
|
7
|
+
# @see EacRubyUtils::Inflector.variableize
|
8
|
+
def variableize(validate = true)
|
9
|
+
::EacRubyUtils::Inflector.variableize(self, validate)
|
8
10
|
end
|
9
11
|
end
|
@@ -1,15 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require '
|
4
|
-
require 'eac_ruby_utils/options_consumer'
|
3
|
+
require 'eac_ruby_utils/require_sub'
|
5
4
|
|
6
5
|
module EacRubyUtils
|
7
6
|
# Provide a option by constant, method or options object.
|
8
7
|
module SettingsProvider
|
8
|
+
::EacRubyUtils.require_sub __FILE__, base: self
|
9
|
+
|
9
10
|
def setting_constant_name(key, fullname = false)
|
10
|
-
|
11
|
-
name = "#{self.class.name}::#{name}" if fullname
|
12
|
-
name
|
11
|
+
setting_value_instance(key).constant_name(fullname)
|
13
12
|
end
|
14
13
|
|
15
14
|
def setting_search_order
|
@@ -25,41 +24,23 @@ module EacRubyUtils
|
|
25
24
|
end
|
26
25
|
|
27
26
|
def setting_value(key, options = {})
|
28
|
-
|
29
|
-
options.order.each do |method|
|
30
|
-
value = send("setting_value_by_#{method}", key)
|
31
|
-
return value if value
|
32
|
-
end
|
33
|
-
return nil unless options.required
|
34
|
-
|
35
|
-
raise "Setting \"#{key}\" not found. Supply in #{settings_object_name}, implement a " \
|
36
|
-
"\"#{key}\" method or declare a #{setting_constant_name(key, true)} constant."
|
27
|
+
setting_value_instance(key, options).value
|
37
28
|
end
|
38
29
|
|
39
30
|
def setting_value_by_constant(key)
|
40
|
-
|
41
|
-
begin
|
42
|
-
self.class.const_get(constant_name)
|
43
|
-
rescue NameError
|
44
|
-
nil
|
45
|
-
end
|
31
|
+
setting_value_instance(key).value_by_constant
|
46
32
|
end
|
47
33
|
|
48
34
|
def setting_value_by_method(key)
|
49
|
-
|
35
|
+
setting_value_instance(key).value_by_method
|
50
36
|
end
|
51
37
|
|
52
38
|
def setting_value_by_settings_object(key)
|
53
|
-
|
39
|
+
setting_value_instance(key).value_by_settings_object
|
54
40
|
end
|
55
41
|
|
56
|
-
|
57
|
-
|
58
|
-
def parse_setting_value_options(options)
|
59
|
-
r = ::EacRubyUtils::OptionsConsumer.new(options).consume_all(:required, :order, ostruct: true)
|
60
|
-
r.required = true if r.required.nil?
|
61
|
-
r.order = setting_search_order if r.order.nil?
|
62
|
-
r
|
42
|
+
def setting_value_instance(key, options = {})
|
43
|
+
::EacRubyUtils::SettingsProvider::SettingValue.new(self, key, options)
|
63
44
|
end
|
64
45
|
end
|
65
46
|
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'active_support/core_ext/string/inflections'
|
4
|
+
require 'eac_ruby_utils/listable'
|
5
|
+
require 'eac_ruby_utils/simple_cache'
|
6
|
+
require 'eac_ruby_utils/struct'
|
7
|
+
|
8
|
+
module EacRubyUtils
|
9
|
+
module SettingsProvider
|
10
|
+
class SettingValue
|
11
|
+
include ::EacRubyUtils::Listable
|
12
|
+
include ::EacRubyUtils::SimpleCache
|
13
|
+
|
14
|
+
attr_reader :source, :key, :options
|
15
|
+
lists.add_symbol :option, :default, :order, :required
|
16
|
+
|
17
|
+
def initialize(source, key, options)
|
18
|
+
@source = source
|
19
|
+
@key = key
|
20
|
+
@options = options
|
21
|
+
end
|
22
|
+
|
23
|
+
def constant_name(fullname = false)
|
24
|
+
name = key.to_s.underscore.upcase
|
25
|
+
name = "#{source.class.name}::#{name}" if fullname
|
26
|
+
name
|
27
|
+
end
|
28
|
+
|
29
|
+
def value
|
30
|
+
parsed_options.order.each do |method|
|
31
|
+
value = send("value_by_#{method}")
|
32
|
+
return value if value
|
33
|
+
end
|
34
|
+
return parsed_options.default if parsed_options.respond_to?(OPTION_DEFAULT)
|
35
|
+
return nil unless parsed_options.required
|
36
|
+
|
37
|
+
raise_key_not_found
|
38
|
+
end
|
39
|
+
|
40
|
+
def value_by_constant
|
41
|
+
source.class.const_get(constant_name)
|
42
|
+
rescue NameError
|
43
|
+
nil
|
44
|
+
end
|
45
|
+
|
46
|
+
def value_by_method
|
47
|
+
source.respond_to?(key, true) ? source.send(key) : nil
|
48
|
+
end
|
49
|
+
|
50
|
+
def value_by_settings_object
|
51
|
+
source.settings_object[key.to_s] || source.settings_object[key.to_sym]
|
52
|
+
end
|
53
|
+
|
54
|
+
private
|
55
|
+
|
56
|
+
def parsed_options_uncached
|
57
|
+
r = self.class.lists.option.hash_keys_validate!(options.symbolize_keys)
|
58
|
+
r[:required] = true unless r.key?(OPTION_REQUIRED)
|
59
|
+
r[:order] = source.setting_search_order if r[OPTION_ORDER].nil?
|
60
|
+
::EacRubyUtils::Struct.new(r)
|
61
|
+
end
|
62
|
+
|
63
|
+
def raise_key_not_found
|
64
|
+
raise "Setting \"#{key}\" not found. Supply in #{source.settings_object_name}, implement "\
|
65
|
+
"a \"#{key}\" method or declare a #{constant_name(true)} constant."
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -42,5 +42,13 @@ RSpec.describe ::EacRubyUtils::SettingsProvider do
|
|
42
42
|
it do
|
43
43
|
expect(stub.setting_value('key_e', required: false)).to eq(nil)
|
44
44
|
end
|
45
|
+
|
46
|
+
it do
|
47
|
+
expect(stub.setting_value('key_e', default: nil)).to eq(nil)
|
48
|
+
end
|
49
|
+
|
50
|
+
it do
|
51
|
+
expect(stub.setting_value('key_e', default: 'default_e')).to eq('default_e')
|
52
|
+
end
|
45
53
|
end
|
46
54
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: avm-tools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.94.
|
4
|
+
version: 0.94.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Esquilo Azul Company
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-04-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aranha-parsers
|
@@ -354,6 +354,7 @@ files:
|
|
354
354
|
- lib/avm/eac_webapp_base0/deploy/version.rb
|
355
355
|
- lib/avm/eac_webapp_base0/deploy/write_on_target.rb
|
356
356
|
- lib/avm/eac_webapp_base0/instance.rb
|
357
|
+
- lib/avm/eac_webapp_base0/instance/subcommand_parent.rb
|
357
358
|
- lib/avm/eac_webapp_base0/runner.rb
|
358
359
|
- lib/avm/eac_webapp_base0/runner/apache_host.rb
|
359
360
|
- lib/avm/eac_webapp_base0/runner/apache_path.rb
|
@@ -437,7 +438,6 @@ files:
|
|
437
438
|
- lib/avm/git/organize/reference_update.rb
|
438
439
|
- lib/avm/git/organize/repository.rb
|
439
440
|
- lib/avm/git/revision_test.rb
|
440
|
-
- lib/avm/git/spec_helper.rb
|
441
441
|
- lib/avm/git/subrepo_check.rb
|
442
442
|
- lib/avm/git/subrepo_check/parent.rb
|
443
443
|
- lib/avm/git/subrepo_check/remote.rb
|
@@ -688,7 +688,6 @@ files:
|
|
688
688
|
- vendor/eac_cli/lib/eac_cli/runner/instance_methods.rb
|
689
689
|
- vendor/eac_cli/lib/eac_cli/runner_with.rb
|
690
690
|
- vendor/eac_cli/lib/eac_cli/runner_with/help.rb
|
691
|
-
- vendor/eac_cli/lib/eac_cli/runner_with/output_file.rb
|
692
691
|
- vendor/eac_cli/lib/eac_cli/runner_with/subcommands.rb
|
693
692
|
- vendor/eac_cli/lib/eac_cli/runner_with_set.rb
|
694
693
|
- vendor/eac_cli/lib/eac_cli/version.rb
|
@@ -697,7 +696,6 @@ files:
|
|
697
696
|
- vendor/eac_cli/spec/lib/eac_cli/parser/alternative_spec.rb
|
698
697
|
- vendor/eac_cli/spec/lib/eac_cli/runner_spec.rb
|
699
698
|
- vendor/eac_cli/spec/lib/eac_cli/runner_with/help_spec.rb
|
700
|
-
- vendor/eac_cli/spec/lib/eac_cli/runner_with/output_file_spec.rb
|
701
699
|
- vendor/eac_cli/spec/lib/eac_cli/runner_with/subcommands_spec.rb
|
702
700
|
- vendor/eac_cli/spec/rubocop_spec.rb
|
703
701
|
- vendor/eac_cli/spec/spec_helper.rb
|
@@ -726,14 +724,30 @@ files:
|
|
726
724
|
- vendor/eac_git/lib/eac_git.rb
|
727
725
|
- vendor/eac_git/lib/eac_git/executables.rb
|
728
726
|
- vendor/eac_git/lib/eac_git/local.rb
|
727
|
+
- vendor/eac_git/lib/eac_git/local/commit.rb
|
728
|
+
- vendor/eac_git/lib/eac_git/local/commit/changed_file.rb
|
729
|
+
- vendor/eac_git/lib/eac_git/local/commit/diff_tree_line.rb
|
729
730
|
- vendor/eac_git/lib/eac_git/local/dirty_files.rb
|
730
731
|
- vendor/eac_git/lib/eac_git/local/subrepo.rb
|
731
732
|
- vendor/eac_git/lib/eac_git/local/subrepo/config.rb
|
732
733
|
- vendor/eac_git/lib/eac_git/remote.rb
|
733
734
|
- vendor/eac_git/lib/eac_git/remote/ls_result.rb
|
734
735
|
- vendor/eac_git/lib/eac_git/rspec.rb
|
736
|
+
- vendor/eac_git/lib/eac_git/rspec/stubbed_git_local_repo.rb
|
735
737
|
- vendor/eac_git/lib/eac_git/version.rb
|
736
738
|
- vendor/eac_git/spec/lib/eac_git/executables_spec.rb
|
739
|
+
- vendor/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec.rb
|
740
|
+
- vendor/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/add.source.out
|
741
|
+
- vendor/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/add.target.yaml
|
742
|
+
- vendor/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/modify.source.out
|
743
|
+
- vendor/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/modify.target.yaml
|
744
|
+
- vendor/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/remove.source.out
|
745
|
+
- vendor/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/remove.target.yaml
|
746
|
+
- vendor/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/rename.source.out
|
747
|
+
- vendor/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/rename.target.yaml
|
748
|
+
- vendor/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/rename_modify.source.out
|
749
|
+
- vendor/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/rename_modify.target.yaml
|
750
|
+
- vendor/eac_git/spec/lib/eac_git/local/commit_spec.rb
|
737
751
|
- vendor/eac_git/spec/rubocop_spec.rb
|
738
752
|
- vendor/eac_git/spec/spec_helper.rb
|
739
753
|
- vendor/eac_git/vendor/git-subrepo/Changes
|
@@ -937,8 +951,10 @@ files:
|
|
937
951
|
- vendor/eac_ruby_base0/lib/eac_ruby_base0/runner_with.rb
|
938
952
|
- vendor/eac_ruby_base0/lib/eac_ruby_base0/runner_with/confirmation.rb
|
939
953
|
- vendor/eac_ruby_base0/lib/eac_ruby_base0/runner_with/filesystem_traverser.rb
|
954
|
+
- vendor/eac_ruby_base0/lib/eac_ruby_base0/runner_with/output.rb
|
940
955
|
- vendor/eac_ruby_base0/lib/eac_ruby_base0/version.rb
|
941
956
|
- vendor/eac_ruby_base0/spec/lib/eac_ruby_base0/runner_with/confirmation_spec.rb
|
957
|
+
- vendor/eac_ruby_base0/spec/lib/eac_ruby_base0/runner_with/output_spec.rb
|
942
958
|
- vendor/eac_ruby_base0/spec/rubocop_spec.rb
|
943
959
|
- vendor/eac_ruby_base0/spec/spec_helper.rb
|
944
960
|
- vendor/eac_ruby_gems_utils/Gemfile
|
@@ -1028,6 +1044,7 @@ files:
|
|
1028
1044
|
- vendor/eac_ruby_utils/lib/eac_ruby_utils/fs.rb
|
1029
1045
|
- vendor/eac_ruby_utils/lib/eac_ruby_utils/fs/clearable_directory.rb
|
1030
1046
|
- vendor/eac_ruby_utils/lib/eac_ruby_utils/fs/extname.rb
|
1047
|
+
- vendor/eac_ruby_utils/lib/eac_ruby_utils/fs/logs.rb
|
1031
1048
|
- vendor/eac_ruby_utils/lib/eac_ruby_utils/fs/temp.rb
|
1032
1049
|
- vendor/eac_ruby_utils/lib/eac_ruby_utils/fs/temp/directory.rb
|
1033
1050
|
- vendor/eac_ruby_utils/lib/eac_ruby_utils/fs/temp/file.rb
|
@@ -1108,6 +1125,7 @@ files:
|
|
1108
1125
|
- vendor/eac_ruby_utils/lib/eac_ruby_utils/ruby/command.rb
|
1109
1126
|
- vendor/eac_ruby_utils/lib/eac_ruby_utils/ruby/on_clean_environment.rb
|
1110
1127
|
- vendor/eac_ruby_utils/lib/eac_ruby_utils/settings_provider.rb
|
1128
|
+
- vendor/eac_ruby_utils/lib/eac_ruby_utils/settings_provider/setting_value.rb
|
1111
1129
|
- vendor/eac_ruby_utils/lib/eac_ruby_utils/simple_cache.rb
|
1112
1130
|
- vendor/eac_ruby_utils/lib/eac_ruby_utils/struct.rb
|
1113
1131
|
- vendor/eac_ruby_utils/lib/eac_ruby_utils/templates.rb
|
@@ -1191,7 +1209,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
1191
1209
|
- !ruby/object:Gem::Version
|
1192
1210
|
version: '0'
|
1193
1211
|
requirements: []
|
1194
|
-
rubygems_version: 3.0.
|
1212
|
+
rubygems_version: 3.0.9
|
1195
1213
|
signing_key:
|
1196
1214
|
specification_version: 4
|
1197
1215
|
summary: Tools for AVM.
|
@@ -1,30 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'eac_cli/runner'
|
4
|
-
require 'eac_ruby_utils/core_ext'
|
5
|
-
require 'eac_ruby_utils/abstract_methods'
|
6
|
-
|
7
|
-
module EacCli
|
8
|
-
module RunnerWith
|
9
|
-
module OutputFile
|
10
|
-
common_concern do
|
11
|
-
include ::EacCli::Runner
|
12
|
-
include ::EacRubyUtils::AbstractMethods
|
13
|
-
|
14
|
-
abstract_methods :output_content
|
15
|
-
|
16
|
-
runner_definition do
|
17
|
-
arg_opt '-o', '--output-file', 'Output to file.'
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
def run_output
|
22
|
-
if parsed.output_file.present?
|
23
|
-
::File.write(parsed.output_file, output_content)
|
24
|
-
else
|
25
|
-
$stdout.write(output_content)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
@@ -1,53 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'eac_cli/runner_with/output_file'
|
4
|
-
require 'eac_ruby_utils/fs/temp'
|
5
|
-
|
6
|
-
RSpec.describe ::EacCli::RunnerWith::OutputFile do
|
7
|
-
let(:runner) do
|
8
|
-
the_module = described_class
|
9
|
-
Class.new do
|
10
|
-
include the_module
|
11
|
-
|
12
|
-
runner_definition do
|
13
|
-
desc 'A stub root runner.'
|
14
|
-
pos_arg :input_text
|
15
|
-
end
|
16
|
-
|
17
|
-
def run
|
18
|
-
run_output
|
19
|
-
end
|
20
|
-
|
21
|
-
def output_content
|
22
|
-
parsed.input_text
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
let(:stub_text) { 'STUB_TEXT' }
|
28
|
-
let(:instance) { runner.create(argv: runner_argv) }
|
29
|
-
|
30
|
-
context 'without --output-file option' do
|
31
|
-
let(:runner_argv) { [stub_text] }
|
32
|
-
|
33
|
-
it do
|
34
|
-
expect { instance.run }.to output(stub_text).to_stdout_from_any_process
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
context 'with --output-file option' do
|
39
|
-
let(:output_file) { ::EacRubyUtils::Fs::Temp.file }
|
40
|
-
let(:runner_argv) { ['--output-file', output_file.to_path, stub_text] }
|
41
|
-
|
42
|
-
before do
|
43
|
-
instance.run
|
44
|
-
end
|
45
|
-
|
46
|
-
after do
|
47
|
-
output_file.remove
|
48
|
-
end
|
49
|
-
|
50
|
-
it { expect(output_file).to exist }
|
51
|
-
it { expect(output_file.read).to eq(stub_text) }
|
52
|
-
end
|
53
|
-
end
|