eac_tools 0.65.1 → 0.67.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (95) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +32 -32
  3. data/lib/eac_tools/version.rb +1 -1
  4. data/sub/avm/avm.gemspec +3 -3
  5. data/sub/avm/lib/avm/data/clearer.rb +20 -0
  6. data/sub/avm/lib/avm/data/package/base_performer.rb +38 -0
  7. data/sub/avm/lib/avm/data/package/clear.rb +22 -0
  8. data/sub/avm/lib/avm/data/package/dump.rb +0 -10
  9. data/sub/avm/lib/avm/data/package.rb +8 -1
  10. data/sub/avm/lib/avm/data/performer.rb +49 -0
  11. data/sub/avm/lib/avm/docker/runner.rb +0 -4
  12. data/sub/avm/lib/avm/instances/base/auto_values/data.rb +1 -2
  13. data/sub/avm/lib/avm/instances/base.rb +10 -0
  14. data/sub/avm/lib/avm/instances/runner.rb +1 -1
  15. data/sub/avm/lib/avm/sources/runner.rb +2 -0
  16. data/sub/avm/lib/avm/version.rb +1 -1
  17. data/sub/avm-eac_ubuntu_base0/avm-eac_ubuntu_base0.gemspec +3 -3
  18. data/sub/avm-eac_ubuntu_base0/lib/avm/eac_ubuntu_base0/runners/base.rb +2 -0
  19. data/sub/avm-eac_ubuntu_base0/lib/avm/eac_ubuntu_base0/version.rb +1 -1
  20. data/sub/avm-eac_webapp_base0/avm-eac_webapp_base0.gemspec +4 -4
  21. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/file_formats/provider.rb +2 -2
  22. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instances/base.rb +0 -10
  23. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/version.rb +1 -1
  24. data/sub/avm-tools/avm-tools.gemspec +4 -4
  25. data/sub/avm-tools/lib/avm/tools/runner/instance/data/clear.rb +18 -0
  26. data/sub/avm-tools/lib/avm/tools/runner/instance/data/dump.rb +1 -5
  27. data/sub/avm-tools/lib/avm/tools/runner/instance/data/unit/clear.rb +1 -5
  28. data/sub/avm-tools/lib/avm/tools/runner/instance/data/unit/dump.rb +2 -2
  29. data/sub/avm-tools/lib/avm/tools/runner/instance/data/unit/load.rb +1 -1
  30. data/sub/avm-tools/lib/avm/tools/runner/instance/data/unit.rb +3 -1
  31. data/sub/avm-tools/lib/avm/tools/runner/instance/data.rb +7 -0
  32. data/sub/avm-tools/lib/avm/tools/runner/launcher.rb +0 -1
  33. data/sub/avm-tools/lib/avm/tools/runner/launcher_stereotypes/list.rb +0 -1
  34. data/sub/avm-tools/lib/avm/tools/runner_with/include_exclude.rb +23 -0
  35. data/sub/avm-tools/lib/avm/tools/runner_with/instance_data_clear.rb +30 -0
  36. data/sub/avm-tools/lib/avm/tools/runner_with.rb +11 -0
  37. data/sub/avm-tools/lib/avm/tools/version.rb +1 -1
  38. data/sub/eac_cli/eac_cli.gemspec +1 -1
  39. data/sub/eac_cli/lib/eac_cli/definition/alternative.rb +11 -7
  40. data/sub/eac_cli/lib/eac_cli/definition/base_option/initialize_args_parser.rb +2 -1
  41. data/sub/eac_cli/lib/eac_cli/definition/base_option.rb +1 -1
  42. data/sub/eac_cli/lib/eac_cli/definition/boolean_option.rb +2 -1
  43. data/sub/eac_cli/lib/eac_cli/definition/error.rb +8 -0
  44. data/sub/eac_cli/lib/eac_cli/runner/after_class_methods.rb +6 -1
  45. data/sub/eac_cli/lib/eac_cli/runner/context.rb +29 -7
  46. data/sub/eac_cli/lib/eac_cli/runner/context_responders/base.rb +24 -0
  47. data/sub/eac_cli/lib/eac_cli/runner/context_responders/parent.rb +27 -0
  48. data/sub/eac_cli/lib/eac_cli/runner/context_responders/runner.rb +20 -0
  49. data/sub/eac_cli/lib/eac_cli/runner/context_responders/runner_missing_method.rb +32 -0
  50. data/sub/eac_cli/lib/eac_cli/runner/context_responders/set.rb +44 -0
  51. data/sub/eac_cli/lib/eac_cli/runner/context_responders.rb +11 -0
  52. data/sub/eac_cli/lib/eac_cli/runner/for_context.rb +40 -0
  53. data/sub/eac_cli/lib/eac_cli/runner/instance_methods.rb +5 -3
  54. data/sub/eac_cli/lib/eac_cli/runner.rb +1 -0
  55. data/sub/eac_cli/lib/eac_cli/version.rb +1 -1
  56. data/sub/eac_cli/spec/lib/eac_cli/runner/for_context_spec.rb +79 -0
  57. data/sub/eac_cli/spec/lib/eac_cli/runner_with/subcommands_spec.rb +11 -1
  58. data/sub/eac_ruby_base0/eac_ruby_base0.gemspec +3 -3
  59. data/sub/eac_ruby_base0/lib/eac_ruby_base0/runner/contexts.rb +52 -0
  60. data/sub/eac_ruby_base0/lib/eac_ruby_base0/runner/prepend.rb +17 -4
  61. data/sub/eac_ruby_base0/lib/eac_ruby_base0/runner.rb +1 -39
  62. data/sub/eac_ruby_base0/lib/eac_ruby_base0/version.rb +1 -1
  63. data/sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_abstract.rb +17 -6
  64. data/sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable/array_accessor.rb +25 -0
  65. data/sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable/base_accessor.rb +57 -0
  66. data/sub/eac_ruby_utils/lib/eac_ruby_utils/{immutable → acts_as_immutable}/boolean_accessor.rb +3 -3
  67. data/sub/eac_ruby_utils/lib/eac_ruby_utils/{immutable → acts_as_immutable}/class_methods.rb +2 -2
  68. data/sub/eac_ruby_utils/lib/eac_ruby_utils/{immutable → acts_as_immutable}/common_accessor.rb +5 -5
  69. data/sub/eac_ruby_utils/lib/eac_ruby_utils/{immutable/array_accessor.rb → acts_as_immutable/enumerable_accessor.rb} +11 -8
  70. data/sub/eac_ruby_utils/lib/eac_ruby_utils/{immutable → acts_as_immutable}/hash_accessor.rb +5 -5
  71. data/sub/eac_ruby_utils/lib/eac_ruby_utils/{immutable → acts_as_immutable}/instance_methods.rb +1 -1
  72. data/sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable/set_accessor.rb +25 -0
  73. data/sub/eac_ruby_utils/lib/eac_ruby_utils/{immutable.rb → acts_as_immutable.rb} +1 -1
  74. data/sub/eac_ruby_utils/lib/eac_ruby_utils/enumerables_methods.rb +42 -0
  75. data/sub/eac_ruby_utils/lib/eac_ruby_utils/module_ancestors_variable/base.rb +34 -0
  76. data/sub/eac_ruby_utils/lib/eac_ruby_utils/module_ancestors_variable/hash.rb +20 -0
  77. data/sub/eac_ruby_utils/lib/eac_ruby_utils/module_ancestors_variable/set.rb +19 -0
  78. data/sub/eac_ruby_utils/lib/eac_ruby_utils/module_ancestors_variable.rb +9 -0
  79. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/acts_as_immutable.rb +10 -0
  80. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/immutable.rb +3 -2
  81. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/debug.rb +9 -0
  82. data/sub/eac_ruby_utils/lib/eac_ruby_utils/unimplemented_method_error.rb +6 -0
  83. data/sub/eac_ruby_utils/lib/eac_ruby_utils/version.rb +1 -1
  84. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/acts_as_abstract_spec.rb +73 -7
  85. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/{immutable → acts_as_immutable}/array_accessor_spec.rb +11 -3
  86. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/acts_as_immutable/common_accessor_spec.rb +57 -0
  87. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/{immutable → acts_as_immutable}/hash_accessor_spec.rb +3 -3
  88. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/acts_as_immutable/set_accessor_spec.rb +43 -0
  89. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/enumerables_methods_spec.rb +50 -0
  90. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/module_ancestors_variable/hash_spec.rb +57 -0
  91. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/module_ancestors_variable/set_spec.rb +57 -0
  92. metadata +56 -20
  93. data/sub/avm-tools/lib/avm/projects/stereotypes.rb +0 -15
  94. data/sub/avm-tools/lib/avm/projects.rb +0 -9
  95. data/sub/eac_ruby_utils/lib/eac_ruby_utils/immutable/base_accessor.rb +0 -23
@@ -1,28 +1,94 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'eac_ruby_utils/acts_as_abstract'
4
+ require 'eac_ruby_utils/unimplemented_method_error'
4
5
 
5
- RSpec.describe(::EacRubyUtils::ActsAsAbstract) do
6
+ ::RSpec.describe(::EacRubyUtils::ActsAsAbstract) do
6
7
  let(:base_class) do
7
8
  the_module = described_class
8
9
  ::Class.new do
9
10
  include the_module
10
11
 
11
12
  abstract_methods :method1, :method2
13
+
14
+ def method3
15
+ 'base result'
16
+ end
12
17
  end
13
18
  end
14
- let(:base_instance) { base_class.new }
15
19
  let(:sub_class) do
16
20
  ::Class.new(base_class) do
17
21
  def method1
18
22
  'a result'
19
23
  end
24
+
25
+ def method4
26
+ 'sub result'
27
+ end
20
28
  end
21
29
  end
22
- let(:sub_instance) { sub_class.new }
23
30
 
24
- it { expect { base_instance.method1 }.to raise_error(::NoMethodError) }
25
- it { expect { base_instance.method2 }.to raise_error(::NoMethodError) }
26
- it { expect(sub_instance.method1).to eq('a result') }
27
- it { expect { sub_instance.method2 }.to raise_error(::NoMethodError) }
31
+ class << self
32
+ def specs_for_target(test_target, instances_hash)
33
+ describe "\##{test_target}" do # rubocop:disable RSpec/EmptyExampleGroup
34
+ specs_for_instances(test_target, instances_hash)
35
+ end
36
+ end
37
+
38
+ def specs_for_instances(test_target, instances_hash)
39
+ instances_hash.each do |instance_name, expected_values|
40
+ context "when instance is \"#{instance_name}\"" do # rubocop:disable RSpec/EmptyExampleGroup
41
+ let(:instance) { send("#{instance_name}_class").new }
42
+
43
+ specs_for_methods_values(test_target, expected_values)
44
+ end
45
+ end
46
+ end
47
+
48
+ def specs_for_methods_values(test_target, expected_values)
49
+ expected_values.each_with_index do |expected_value, method_index|
50
+ method_name = "method#{method_index + 1}"
51
+ context "when method is \"#{method_name}\"" do # rubocop:disable RSpec/EmptyExampleGroup
52
+ send("specs_for_#{test_target}", method_name, expected_value)
53
+ end
54
+ end
55
+ end
56
+
57
+ def specs_for_abstract_method(method_name, expected_value)
58
+ it { expect(instance.abstract_method?(method_name)).to eq(expected_value) }
59
+ end
60
+
61
+ def specs_for_method_missing(method_name, expected_value)
62
+ if expected_value.is_a?(::Class) && expected_value < ::Exception
63
+ it do
64
+ expect { instance.send(method_name) }.to raise_error(expected_value)
65
+ end
66
+ else
67
+ it do
68
+ expect(instance.send(method_name)).to eq(expected_value)
69
+ end
70
+ end
71
+ end
72
+
73
+ def specs_for_respond_to_missing(method_name, expected_value)
74
+ it { expect(instance.respond_to?(method_name)).to eq(expected_value) }
75
+ end
76
+ end
77
+ {
78
+ abstract_method: {
79
+ base: [true, true, false, false],
80
+ sub: [false, true, false, false]
81
+ },
82
+ method_missing: {
83
+ base: [::EacRubyUtils::UnimplementedMethodError, ::EacRubyUtils::UnimplementedMethodError,
84
+ 'base result', ::NoMethodError],
85
+ sub: ['a result', ::EacRubyUtils::UnimplementedMethodError, 'base result', 'sub result']
86
+ },
87
+ respond_to_missing: {
88
+ base: [true, true, true, false],
89
+ sub: [true, true, true, true]
90
+ }
91
+ }.each do |test_target, instances_hash|
92
+ specs_for_target(test_target, instances_hash)
93
+ end
28
94
  end
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'eac_ruby_utils/immutable'
3
+ require 'eac_ruby_utils/acts_as_immutable'
4
4
 
5
- ::RSpec.describe ::EacRubyUtils::Immutable::ArrayAccessor do
5
+ ::RSpec.describe ::EacRubyUtils::ActsAsImmutable::ArrayAccessor do
6
6
  let(:stub_class) do
7
7
  ::Class.new do
8
- include ::EacRubyUtils::Immutable
8
+ include ::EacRubyUtils::ActsAsImmutable
9
9
 
10
10
  immutable_accessor :array_attr, type: :array
11
11
  end
@@ -31,5 +31,13 @@ require 'eac_ruby_utils/immutable'
31
31
  it { expect(change2_instance.object_id).not_to eq(change1_instance.object_id) }
32
32
  it { expect(change2_instance.array_attrs).to eq(%w[B]) }
33
33
  end
34
+
35
+ context 'when array_attrs sets for a non array' do
36
+ let(:change2_instance) { initial_instance.array_attrs('B') }
37
+
38
+ it { expect(change2_instance).to be_a(initial_instance.class) }
39
+ it { expect(change2_instance.object_id).not_to eq(change1_instance.object_id) }
40
+ it { expect(change2_instance.array_attrs).to eq(%w[B]) }
41
+ end
34
42
  end
35
43
  end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/acts_as_immutable'
4
+
5
+ ::RSpec.describe ::EacRubyUtils::ActsAsImmutable::CommonAccessor do
6
+ let(:stub_class) do
7
+ ::Class.new do
8
+ include ::EacRubyUtils::ActsAsImmutable
9
+
10
+ immutable_accessor :attr1, :attr2, :attr3
11
+
12
+ def attr1_get_filter(value)
13
+ value || 'DEFAULT'
14
+ end
15
+
16
+ def attr2_set_filter(value)
17
+ "#{value}_FILTERED"
18
+ end
19
+ end
20
+ end
21
+
22
+ let(:initial_instance) { stub_class.new }
23
+
24
+ it { expect(initial_instance.attr1).to eq('DEFAULT') }
25
+ it { expect(initial_instance.attr2).to eq(nil) }
26
+ it { expect(initial_instance.attr3).to eq(nil) }
27
+
28
+ context 'when attr1 is set' do
29
+ let(:change1_instance) { initial_instance.attr1('A') }
30
+
31
+ it { expect(change1_instance).to be_a(initial_instance.class) }
32
+ it { expect(change1_instance.object_id).not_to eq(initial_instance.object_id) }
33
+ it { expect(change1_instance.attr1).to eq('A') }
34
+ it { expect(change1_instance.attr2).to eq(nil) }
35
+ it { expect(change1_instance.attr3).to eq(nil) }
36
+
37
+ context 'when attr2 is set' do
38
+ let(:change2_instance) { change1_instance.attr2('B') }
39
+
40
+ it { expect(change2_instance).to be_a(change1_instance.class) }
41
+ it { expect(change2_instance.object_id).not_to eq(change1_instance.object_id) }
42
+ it { expect(change2_instance.attr1).to eq('A') }
43
+ it { expect(change2_instance.attr2).to eq('B_FILTERED') }
44
+ it { expect(change2_instance.attr3).to eq(nil) }
45
+ end
46
+
47
+ context 'when attr3 is set' do
48
+ let(:change2_instance) { change1_instance.attr3('C') }
49
+
50
+ it { expect(change2_instance).to be_a(change1_instance.class) }
51
+ it { expect(change2_instance.object_id).not_to eq(change1_instance.object_id) }
52
+ it { expect(change2_instance.attr1).to eq('A') }
53
+ it { expect(change2_instance.attr2).to eq(nil) }
54
+ it { expect(change2_instance.attr3).to eq('C') }
55
+ end
56
+ end
57
+ end
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'eac_ruby_utils/immutable'
3
+ require 'eac_ruby_utils/acts_as_immutable'
4
4
 
5
- ::RSpec.describe ::EacRubyUtils::Immutable::HashAccessor do
5
+ ::RSpec.describe ::EacRubyUtils::ActsAsImmutable::HashAccessor do
6
6
  let(:stub_class) do
7
7
  ::Class.new do
8
- include ::EacRubyUtils::Immutable
8
+ include ::EacRubyUtils::ActsAsImmutable
9
9
 
10
10
  immutable_accessor :the_hash, type: :hash
11
11
  end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/acts_as_immutable'
4
+
5
+ ::RSpec.describe ::EacRubyUtils::ActsAsImmutable::SetAccessor do
6
+ let(:stub_class) do
7
+ ::Class.new do
8
+ include ::EacRubyUtils::ActsAsImmutable
9
+
10
+ immutable_accessor :array_attr, type: :set
11
+ end
12
+ end
13
+
14
+ let(:initial_instance) { stub_class.new }
15
+
16
+ it do
17
+ expect(initial_instance.array_attrs).to eq(::Set.new)
18
+ end
19
+
20
+ context 'when array_attr pushs for' do
21
+ let(:change1_instance) { initial_instance.array_attr('A') }
22
+
23
+ it { expect(change1_instance).to be_a(initial_instance.class) }
24
+ it { expect(change1_instance.object_id).not_to eq(initial_instance.object_id) }
25
+ it { expect(change1_instance.array_attrs).to eq(::Set.new(%w[A])) }
26
+
27
+ context 'when array_attrs sets for' do
28
+ let(:change2_instance) { initial_instance.array_attrs(%w[B]) }
29
+
30
+ it { expect(change2_instance).to be_a(initial_instance.class) }
31
+ it { expect(change2_instance.object_id).not_to eq(change1_instance.object_id) }
32
+ it { expect(change2_instance.array_attrs).to eq(::Set.new(%w[B])) }
33
+ end
34
+
35
+ context 'when array_attrs push for a repetead value' do
36
+ let(:change2_instance) { initial_instance.array_attr('A') }
37
+
38
+ it { expect(change2_instance).to be_a(initial_instance.class) }
39
+ it { expect(change2_instance.object_id).not_to eq(change1_instance.object_id) }
40
+ it { expect(change2_instance.array_attrs).to eq(::Set.new(%w[A])) }
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/enumerables_methods'
4
+
5
+ ::RSpec.describe ::EacRubyUtils::EnumerablesMethods do
6
+ describe '#write_method?' do
7
+ it do
8
+ expect(described_class).to be_write_method(:'[]=')
9
+ end
10
+
11
+ it do
12
+ expect(described_class).not_to be_write_method(:'!=')
13
+ end
14
+ end
15
+
16
+ [
17
+ [:enumerable, %i[drop lazy sort], []],
18
+ [:hash, %i[\[\] <= compact slice to_h values],
19
+ %i[\[\]= compact! delete default= keep_if shift]],
20
+ [:set, %i[<= include?], %i[<< add clear collect! divide delete keep_if merge reset subtract]]
21
+ ].each do |test_values|
22
+ klass_underscore, read_methods, write_methods = test_values
23
+
24
+ context "when class/module is #{klass_underscore}" do
25
+ let(:const_prefix) { klass_underscore.to_s.upcase }
26
+ let(:const_all) { "#{const_prefix}_METHODS" }
27
+ let(:const_read) { "#{const_prefix}_READ_METHODS" }
28
+ let(:const_write) { "#{const_prefix}_WRITE_METHODS" }
29
+ let(:actual_all) { described_class.const_get(const_all) }
30
+ let(:actual_read) { described_class.const_get(const_read) }
31
+ let(:actual_write) { described_class.const_get(const_write) }
32
+
33
+ read_methods.each do |method_name|
34
+ context "when method is \"#{method_name}\"" do
35
+ it { expect(actual_all).to include(method_name) }
36
+ it { expect(actual_read).to include(method_name) }
37
+ it { expect(actual_write).not_to include(method_name) }
38
+ end
39
+ end
40
+
41
+ write_methods.each do |method_name|
42
+ context "when method is \"#{method_name}\"" do
43
+ it { expect(actual_all).to include(method_name) }
44
+ it { expect(actual_read).not_to include(method_name) }
45
+ it { expect(actual_write).to include(method_name) }
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/module_ancestors_variable/hash'
4
+
5
+ ::RSpec.describe(::EacRubyUtils::ModuleAncestorsVariable::Hash) do
6
+ let(:included_module) do
7
+ ::Module.new do
8
+ def self.included(base)
9
+ base.extend(ClassMethods)
10
+ end
11
+
12
+ module ClassMethods # rubocop:disable RSpec/LeakyConstantDeclaration
13
+ def hash_variable
14
+ @hash_variable ||= ::EacRubyUtils::ModuleAncestorsVariable::Hash.new(self, __method__)
15
+ end
16
+ end
17
+ end
18
+ end
19
+
20
+ let(:super_class) do
21
+ r = ::Class.new
22
+ r.include included_module
23
+ r
24
+ end
25
+
26
+ let(:sub_class) do
27
+ ::Class.new(super_class)
28
+ end
29
+
30
+ it { expect(super_class.hash_variable).to be_a(described_class) }
31
+ it { expect(super_class.hash_variable.self_variable).to eq(::Hash.new) }
32
+ it { expect(super_class.hash_variable.ancestors_variable).to eq(::Hash.new) }
33
+ it { expect(super_class.hash_variable.to_h).to eq(::Hash.new) }
34
+
35
+ it { expect(sub_class.hash_variable).to be_a(described_class) }
36
+ it { expect(sub_class.hash_variable.self_variable).to eq(::Hash.new) }
37
+ it { expect(sub_class.hash_variable.ancestors_variable).to eq(::Hash.new) }
38
+ it { expect(sub_class.hash_variable.to_h).to eq(::Hash.new) }
39
+
40
+ context 'when super class is changed' do
41
+ before do
42
+ super_class.hash_variable[:by_super] = 1
43
+ end
44
+
45
+ it { expect(super_class.hash_variable.to_h).to eq({ by_super: 1 }) }
46
+ it { expect(sub_class.hash_variable.to_h).to eq({ by_super: 1 }) }
47
+
48
+ context 'when sub class is changed' do
49
+ before do
50
+ sub_class.hash_variable[:by_sub] = 2
51
+ end
52
+
53
+ it { expect(super_class.hash_variable.to_h).to eq({ by_super: 1 }) }
54
+ it { expect(sub_class.hash_variable.to_h).to eq({ by_super: 1, by_sub: 2 }) }
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/module_ancestors_variable/set'
4
+
5
+ ::RSpec.describe(::EacRubyUtils::ModuleAncestorsVariable::Set) do
6
+ let(:included_module) do
7
+ ::Module.new do
8
+ def self.included(base)
9
+ base.extend(ClassMethods)
10
+ end
11
+
12
+ module ClassMethods # rubocop:disable RSpec/LeakyConstantDeclaration
13
+ def set_variable
14
+ @set_variable ||= ::EacRubyUtils::ModuleAncestorsVariable::Set.new(self, __method__)
15
+ end
16
+ end
17
+ end
18
+ end
19
+
20
+ let(:super_class) do
21
+ r = ::Class.new
22
+ r.include included_module
23
+ r
24
+ end
25
+
26
+ let(:sub_class) do
27
+ ::Class.new(super_class)
28
+ end
29
+
30
+ it { expect(super_class.set_variable).to be_a(described_class) }
31
+ it { expect(super_class.set_variable.self_variable).to eq(::Set.new) }
32
+ it { expect(super_class.set_variable.ancestors_variable).to eq(::Set.new) }
33
+ it { expect(super_class.set_variable.to_set).to eq(::Set.new) }
34
+
35
+ it { expect(sub_class.set_variable).to be_a(described_class) }
36
+ it { expect(sub_class.set_variable.self_variable).to eq(::Set.new) }
37
+ it { expect(sub_class.set_variable.ancestors_variable).to eq(::Set.new) }
38
+ it { expect(sub_class.set_variable.to_set).to eq(::Set.new) }
39
+
40
+ context 'when super class is changed' do
41
+ before do
42
+ super_class.set_variable << 1
43
+ end
44
+
45
+ it { expect(super_class.set_variable.to_set).to eq(::Set.new([1])) }
46
+ it { expect(sub_class.set_variable.to_set).to eq(::Set.new([1])) }
47
+
48
+ context 'when sub class is changed' do
49
+ before do
50
+ sub_class.set_variable << 2
51
+ end
52
+
53
+ it { expect(super_class.set_variable.to_set).to eq(::Set.new([1])) }
54
+ it { expect(sub_class.set_variable.to_set).to eq(::Set.new([1, 2])) }
55
+ end
56
+ end
57
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eac_tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.65.1
4
+ version: 0.67.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Put here the authors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-05-16 00:00:00.000000000 Z
11
+ date: 2023-05-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: avm
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.71'
19
+ version: '0.73'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.71'
26
+ version: '0.73'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: avm-eac_asciidoctor_base0
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -233,6 +233,9 @@ dependencies:
233
233
  - - "~>"
234
234
  - !ruby/object:Gem::Version
235
235
  version: '0.17'
236
+ - - ">="
237
+ - !ruby/object:Gem::Version
238
+ version: 0.17.2
236
239
  type: :runtime
237
240
  prerelease: false
238
241
  version_requirements: !ruby/object:Gem::Requirement
@@ -240,6 +243,9 @@ dependencies:
240
243
  - - "~>"
241
244
  - !ruby/object:Gem::Version
242
245
  version: '0.17'
246
+ - - ">="
247
+ - !ruby/object:Gem::Version
248
+ version: 0.17.2
243
249
  - !ruby/object:Gem::Dependency
244
250
  name: avm-eac_wordpress_base0
245
251
  requirement: !ruby/object:Gem::Requirement
@@ -286,28 +292,28 @@ dependencies:
286
292
  requirements:
287
293
  - - "~>"
288
294
  - !ruby/object:Gem::Version
289
- version: '0.147'
295
+ version: '0.149'
290
296
  type: :runtime
291
297
  prerelease: false
292
298
  version_requirements: !ruby/object:Gem::Requirement
293
299
  requirements:
294
300
  - - "~>"
295
301
  - !ruby/object:Gem::Version
296
- version: '0.147'
302
+ version: '0.149'
297
303
  - !ruby/object:Gem::Dependency
298
304
  name: eac_ruby_utils
299
305
  requirement: !ruby/object:Gem::Requirement
300
306
  requirements:
301
307
  - - "~>"
302
308
  - !ruby/object:Gem::Version
303
- version: '0.116'
309
+ version: '0.117'
304
310
  type: :runtime
305
311
  prerelease: false
306
312
  version_requirements: !ruby/object:Gem::Requirement
307
313
  requirements:
308
314
  - - "~>"
309
315
  - !ruby/object:Gem::Version
310
- version: '0.116'
316
+ version: '0.117'
311
317
  - !ruby/object:Gem::Dependency
312
318
  name: eac_ruby_gem_support
313
319
  requirement: !ruby/object:Gem::Requirement
@@ -1036,8 +1042,6 @@ files:
1036
1042
  - sub/avm-tools/avm-tools.gemspec
1037
1043
  - sub/avm-tools/exe/avm
1038
1044
  - sub/avm-tools/lib/avm.rb
1039
- - sub/avm-tools/lib/avm/projects.rb
1040
- - sub/avm-tools/lib/avm/projects/stereotypes.rb
1041
1045
  - sub/avm-tools/lib/avm/tools.rb
1042
1046
  - sub/avm-tools/lib/avm/tools/core_ext.rb
1043
1047
  - sub/avm-tools/lib/avm/tools/runner.rb
@@ -1060,6 +1064,7 @@ files:
1060
1064
  - sub/avm-tools/lib/avm/tools/runner/git/subrepo/fix.rb
1061
1065
  - sub/avm-tools/lib/avm/tools/runner/instance.rb
1062
1066
  - sub/avm-tools/lib/avm/tools/runner/instance/data.rb
1067
+ - sub/avm-tools/lib/avm/tools/runner/instance/data/clear.rb
1063
1068
  - sub/avm-tools/lib/avm/tools/runner/instance/data/dump.rb
1064
1069
  - sub/avm-tools/lib/avm/tools/runner/instance/data/load.rb
1065
1070
  - sub/avm-tools/lib/avm/tools/runner/instance/data/unit.rb
@@ -1087,6 +1092,9 @@ files:
1087
1092
  - sub/avm-tools/lib/avm/tools/runner/source/update.rb
1088
1093
  - sub/avm-tools/lib/avm/tools/runner/source/version_bump.rb
1089
1094
  - sub/avm-tools/lib/avm/tools/runner/source_generate.rb
1095
+ - sub/avm-tools/lib/avm/tools/runner_with.rb
1096
+ - sub/avm-tools/lib/avm/tools/runner_with/include_exclude.rb
1097
+ - sub/avm-tools/lib/avm/tools/runner_with/instance_data_clear.rb
1090
1098
  - sub/avm-tools/lib/avm/tools/self.rb
1091
1099
  - sub/avm-tools/lib/avm/tools/version.rb
1092
1100
  - sub/avm-tools/spec/dummy/avm-tools_stub/avm-tools.gemspec
@@ -1125,10 +1133,14 @@ files:
1125
1133
  - sub/avm/lib/avm/applications/base/publishing.rb
1126
1134
  - sub/avm/lib/avm/applications/base/stereotype.rb
1127
1135
  - sub/avm/lib/avm/data/callbacks.rb
1136
+ - sub/avm/lib/avm/data/clearer.rb
1128
1137
  - sub/avm/lib/avm/data/package.rb
1138
+ - sub/avm/lib/avm/data/package/base_performer.rb
1129
1139
  - sub/avm/lib/avm/data/package/build_directory.rb
1140
+ - sub/avm/lib/avm/data/package/clear.rb
1130
1141
  - sub/avm/lib/avm/data/package/dump.rb
1131
1142
  - sub/avm/lib/avm/data/package/load.rb
1143
+ - sub/avm/lib/avm/data/performer.rb
1132
1144
  - sub/avm/lib/avm/data/rotate.rb
1133
1145
  - sub/avm/lib/avm/data/unit.rb
1134
1146
  - sub/avm/lib/avm/data/unit_with_commands.rb
@@ -1337,6 +1349,7 @@ files:
1337
1349
  - sub/eac_cli/lib/eac_cli/definition/base_option/initialize_args_parser.rb
1338
1350
  - sub/eac_cli/lib/eac_cli/definition/boolean_option.rb
1339
1351
  - sub/eac_cli/lib/eac_cli/definition/default_value.rb
1352
+ - sub/eac_cli/lib/eac_cli/definition/error.rb
1340
1353
  - sub/eac_cli/lib/eac_cli/definition/positional_argument.rb
1341
1354
  - sub/eac_cli/lib/eac_cli/enum.rb
1342
1355
  - sub/eac_cli/lib/eac_cli/old_configs.rb
@@ -1364,7 +1377,14 @@ files:
1364
1377
  - sub/eac_cli/lib/eac_cli/runner/after_class_methods.rb
1365
1378
  - sub/eac_cli/lib/eac_cli/runner/class_runner.rb
1366
1379
  - sub/eac_cli/lib/eac_cli/runner/context.rb
1380
+ - sub/eac_cli/lib/eac_cli/runner/context_responders.rb
1381
+ - sub/eac_cli/lib/eac_cli/runner/context_responders/base.rb
1382
+ - sub/eac_cli/lib/eac_cli/runner/context_responders/parent.rb
1383
+ - sub/eac_cli/lib/eac_cli/runner/context_responders/runner.rb
1384
+ - sub/eac_cli/lib/eac_cli/runner/context_responders/runner_missing_method.rb
1385
+ - sub/eac_cli/lib/eac_cli/runner/context_responders/set.rb
1367
1386
  - sub/eac_cli/lib/eac_cli/runner/exit.rb
1387
+ - sub/eac_cli/lib/eac_cli/runner/for_context.rb
1368
1388
  - sub/eac_cli/lib/eac_cli/runner/instance_methods.rb
1369
1389
  - sub/eac_cli/lib/eac_cli/runner_with.rb
1370
1390
  - sub/eac_cli/lib/eac_cli/runner_with/confirmation.rb
@@ -1387,6 +1407,7 @@ files:
1387
1407
  - sub/eac_cli/spec/lib/eac_cli/definition/alternative_spec.rb
1388
1408
  - sub/eac_cli/spec/lib/eac_cli/old_configs_spec.rb
1389
1409
  - sub/eac_cli/spec/lib/eac_cli/parser/alternative_spec.rb
1410
+ - sub/eac_cli/spec/lib/eac_cli/runner/for_context_spec.rb
1390
1411
  - sub/eac_cli/spec/lib/eac_cli/runner_spec.rb
1391
1412
  - sub/eac_cli/spec/lib/eac_cli/runner_with/confirmation_spec.rb
1392
1413
  - sub/eac_cli/spec/lib/eac_cli/runner_with/help/layout_spec.rb
@@ -1787,6 +1808,7 @@ files:
1787
1808
  - sub/eac_ruby_base0/lib/eac_ruby_base0/rspec.rb
1788
1809
  - sub/eac_ruby_base0/lib/eac_ruby_base0/rspec/setup.rb
1789
1810
  - sub/eac_ruby_base0/lib/eac_ruby_base0/runner.rb
1811
+ - sub/eac_ruby_base0/lib/eac_ruby_base0/runner/contexts.rb
1790
1812
  - sub/eac_ruby_base0/lib/eac_ruby_base0/runner/prepend.rb
1791
1813
  - sub/eac_ruby_base0/lib/eac_ruby_base0/runner_with.rb
1792
1814
  - sub/eac_ruby_base0/lib/eac_ruby_base0/version.rb
@@ -1798,6 +1820,16 @@ files:
1798
1820
  - sub/eac_ruby_utils/eac_ruby_utils.gemspec
1799
1821
  - sub/eac_ruby_utils/lib/eac_ruby_utils.rb
1800
1822
  - sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_abstract.rb
1823
+ - sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable.rb
1824
+ - sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable/array_accessor.rb
1825
+ - sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable/base_accessor.rb
1826
+ - sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable/boolean_accessor.rb
1827
+ - sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable/class_methods.rb
1828
+ - sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable/common_accessor.rb
1829
+ - sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable/enumerable_accessor.rb
1830
+ - sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable/hash_accessor.rb
1831
+ - sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable/instance_methods.rb
1832
+ - sub/eac_ruby_utils/lib/eac_ruby_utils/acts_as_immutable/set_accessor.rb
1801
1833
  - sub/eac_ruby_utils/lib/eac_ruby_utils/arguments_consumer.rb
1802
1834
  - sub/eac_ruby_utils/lib/eac_ruby_utils/bit.rb
1803
1835
  - sub/eac_ruby_utils/lib/eac_ruby_utils/bit_array.rb
@@ -1821,6 +1853,7 @@ files:
1821
1853
  - sub/eac_ruby_utils/lib/eac_ruby_utils/core_ext.rb
1822
1854
  - sub/eac_ruby_utils/lib/eac_ruby_utils/custom_format.rb
1823
1855
  - sub/eac_ruby_utils/lib/eac_ruby_utils/enum.rb
1856
+ - sub/eac_ruby_utils/lib/eac_ruby_utils/enumerables_methods.rb
1824
1857
  - sub/eac_ruby_utils/lib/eac_ruby_utils/envs.rb
1825
1858
  - sub/eac_ruby_utils/lib/eac_ruby_utils/envs/base_command.rb
1826
1859
  - sub/eac_ruby_utils/lib/eac_ruby_utils/envs/base_command/append_command_options.rb
@@ -1853,14 +1886,6 @@ files:
1853
1886
  - sub/eac_ruby_utils/lib/eac_ruby_utils/fs/temp/file.rb
1854
1887
  - sub/eac_ruby_utils/lib/eac_ruby_utils/gems_registry.rb
1855
1888
  - sub/eac_ruby_utils/lib/eac_ruby_utils/gems_registry/gem.rb
1856
- - sub/eac_ruby_utils/lib/eac_ruby_utils/immutable.rb
1857
- - sub/eac_ruby_utils/lib/eac_ruby_utils/immutable/array_accessor.rb
1858
- - sub/eac_ruby_utils/lib/eac_ruby_utils/immutable/base_accessor.rb
1859
- - sub/eac_ruby_utils/lib/eac_ruby_utils/immutable/boolean_accessor.rb
1860
- - sub/eac_ruby_utils/lib/eac_ruby_utils/immutable/class_methods.rb
1861
- - sub/eac_ruby_utils/lib/eac_ruby_utils/immutable/common_accessor.rb
1862
- - sub/eac_ruby_utils/lib/eac_ruby_utils/immutable/hash_accessor.rb
1863
- - sub/eac_ruby_utils/lib/eac_ruby_utils/immutable/instance_methods.rb
1864
1889
  - sub/eac_ruby_utils/lib/eac_ruby_utils/inflector.rb
1865
1890
  - sub/eac_ruby_utils/lib/eac_ruby_utils/listable.rb
1866
1891
  - sub/eac_ruby_utils/lib/eac_ruby_utils/listable/class_methods.rb
@@ -1877,6 +1902,10 @@ files:
1877
1902
  - sub/eac_ruby_utils/lib/eac_ruby_utils/locales/from_gem.rb
1878
1903
  - sub/eac_ruby_utils/lib/eac_ruby_utils/locales/module_i18n_translate.rb
1879
1904
  - sub/eac_ruby_utils/lib/eac_ruby_utils/method_class.rb
1905
+ - sub/eac_ruby_utils/lib/eac_ruby_utils/module_ancestors_variable.rb
1906
+ - sub/eac_ruby_utils/lib/eac_ruby_utils/module_ancestors_variable/base.rb
1907
+ - sub/eac_ruby_utils/lib/eac_ruby_utils/module_ancestors_variable/hash.rb
1908
+ - sub/eac_ruby_utils/lib/eac_ruby_utils/module_ancestors_variable/set.rb
1880
1909
  - sub/eac_ruby_utils/lib/eac_ruby_utils/options_consumer.rb
1881
1910
  - sub/eac_ruby_utils/lib/eac_ruby_utils/patch.rb
1882
1911
  - sub/eac_ruby_utils/lib/eac_ruby_utils/patches.rb
@@ -1904,6 +1933,7 @@ files:
1904
1933
  - sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module.rb
1905
1934
  - sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/abstract_methods.rb
1906
1935
  - sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/acts_as_abstract.rb
1936
+ - sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/acts_as_immutable.rb
1907
1937
  - sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/common_concern.rb
1908
1938
  - sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/compare_by.rb
1909
1939
  - sub/eac_ruby_utils/lib/eac_ruby_utils/patches/module/context.rb
@@ -1971,9 +2001,14 @@ files:
1971
2001
  - sub/eac_ruby_utils/lib/eac_ruby_utils/static_method_class.rb
1972
2002
  - sub/eac_ruby_utils/lib/eac_ruby_utils/string_delimited.rb
1973
2003
  - sub/eac_ruby_utils/lib/eac_ruby_utils/struct.rb
2004
+ - sub/eac_ruby_utils/lib/eac_ruby_utils/unimplemented_method_error.rb
1974
2005
  - sub/eac_ruby_utils/lib/eac_ruby_utils/version.rb
1975
2006
  - sub/eac_ruby_utils/lib/eac_ruby_utils/yaml.rb
1976
2007
  - sub/eac_ruby_utils/spec/lib/eac_ruby_utils/acts_as_abstract_spec.rb
2008
+ - sub/eac_ruby_utils/spec/lib/eac_ruby_utils/acts_as_immutable/array_accessor_spec.rb
2009
+ - sub/eac_ruby_utils/spec/lib/eac_ruby_utils/acts_as_immutable/common_accessor_spec.rb
2010
+ - sub/eac_ruby_utils/spec/lib/eac_ruby_utils/acts_as_immutable/hash_accessor_spec.rb
2011
+ - sub/eac_ruby_utils/spec/lib/eac_ruby_utils/acts_as_immutable/set_accessor_spec.rb
1977
2012
  - sub/eac_ruby_utils/spec/lib/eac_ruby_utils/arguments_consumer_spec.rb
1978
2013
  - sub/eac_ruby_utils/spec/lib/eac_ruby_utils/bit_array_spec.rb
1979
2014
  - sub/eac_ruby_utils/spec/lib/eac_ruby_utils/blank_not_blank_spec.rb
@@ -1984,6 +2019,7 @@ files:
1984
2019
  - sub/eac_ruby_utils/spec/lib/eac_ruby_utils/compare_by_spec.rb
1985
2020
  - sub/eac_ruby_utils/spec/lib/eac_ruby_utils/custom_format_spec.rb
1986
2021
  - sub/eac_ruby_utils/spec/lib/eac_ruby_utils/enum_spec.rb
2022
+ - sub/eac_ruby_utils/spec/lib/eac_ruby_utils/enumerables_methods_spec.rb
1987
2023
  - sub/eac_ruby_utils/spec/lib/eac_ruby_utils/envs/command/base_example.rb
1988
2024
  - sub/eac_ruby_utils/spec/lib/eac_ruby_utils/envs/command/local_env_spec.rb
1989
2025
  - sub/eac_ruby_utils/spec/lib/eac_ruby_utils/envs/command/ssh_env_spec.rb
@@ -1992,12 +2028,12 @@ files:
1992
2028
  - sub/eac_ruby_utils/spec/lib/eac_ruby_utils/fs/extname_spec.rb
1993
2029
  - sub/eac_ruby_utils/spec/lib/eac_ruby_utils/fs/temp/directory_spec.rb
1994
2030
  - sub/eac_ruby_utils/spec/lib/eac_ruby_utils/fs/temp_spec.rb
1995
- - sub/eac_ruby_utils/spec/lib/eac_ruby_utils/immutable/array_accessor_spec.rb
1996
- - sub/eac_ruby_utils/spec/lib/eac_ruby_utils/immutable/hash_accessor_spec.rb
1997
2031
  - sub/eac_ruby_utils/spec/lib/eac_ruby_utils/inflector_spec.rb
1998
2032
  - sub/eac_ruby_utils/spec/lib/eac_ruby_utils/listable_spec.rb
1999
2033
  - sub/eac_ruby_utils/spec/lib/eac_ruby_utils/local_time_zone_spec.rb
2000
2034
  - sub/eac_ruby_utils/spec/lib/eac_ruby_utils/method_class_spec.rb
2035
+ - sub/eac_ruby_utils/spec/lib/eac_ruby_utils/module_ancestors_variable/hash_spec.rb
2036
+ - sub/eac_ruby_utils/spec/lib/eac_ruby_utils/module_ancestors_variable/set_spec.rb
2001
2037
  - sub/eac_ruby_utils/spec/lib/eac_ruby_utils/options_consumer_spec.rb
2002
2038
  - sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/addressable/uri/query_value_spec.rb
2003
2039
  - sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/class/abstract_spec.rb