tools 0.4.4 → 0.4.5

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.
@@ -5,29 +5,22 @@ require 'lib/utils'
5
5
  require 'lib/display'
6
6
  require 'lib/net'
7
7
  require 'lib/files'
8
+ require 'lib/string'
9
+ require 'lib/array'
10
+ require 'lib/hash'
11
+ require 'lib/object'
8
12
 
9
13
  # Extented models
10
14
  require 'lib/config'
11
15
  require 'lib/log'
12
16
  require 'lib/cache'
13
17
  require 'lib/prompt'
14
-
15
- # require 'lib/console'
18
+ require 'lib/console'
16
19
 
17
20
  load __dir__ + '/files/requireds.rb'
18
21
 
19
22
  module Tools
20
23
 
21
- @@check_version = nil
22
-
23
- def self.set_check_version param
24
- @@check_version = param
25
- end
26
-
27
- def self.get_check_version
28
- return @@check_version
29
- end
30
-
31
24
  class Configuration
32
25
  attr_accessor :console_prompt
33
26
  end
@@ -83,7 +76,9 @@ end
83
76
 
84
77
  Tools.configure do |config|
85
78
  config.console_prompt = Tools::VERSION
86
- ToolsUtil.instance
79
+ I18n.load_path = Dir[Tools.files + '/pt-BR.yml']
80
+ I18n.locale = 'pt-BR'.to_sym
81
+ #ToolsUtil.instance
87
82
  end
88
83
 
89
84
 
@@ -1,4 +1,4 @@
1
1
  module Tools
2
- VERSION = "0.4.4"
2
+ VERSION = "0.4.5"
3
3
  HOMEPAGE = "https://github.com/Xyko/tools"
4
4
  end
@@ -0,0 +1,53 @@
1
+ class ToolsModuleTest < Minitest::Test
2
+
3
+ def self.test_order
4
+ :sorted
5
+ end
6
+
7
+ def test_hash_A_extract_first
8
+ assert_equal ['a','b','c'].extract_first, 'a'
9
+ end
10
+
11
+ def test_hash_B_extract_first
12
+ assert_equal (['a',:color,'c'].extract_symbol :color), true
13
+ end
14
+
15
+ def test_hash_C_extract_color
16
+ args = ['xxx', '-x', '-vvv', :yellow, '-c', '-vcv', '-v2', '-vvvvv', '-s', :json, :red, :json]
17
+ yellow = args.extract_color
18
+ color = args.extract_color
19
+ assert_equal yellow, :yellow
20
+ assert_equal color, :red
21
+ end
22
+
23
+ def test_hash_D_extract_option
24
+ args = ['xxx', '-x', '-vvv', :yellow, ':red','-c', '-vcv', '-v2', '-vvvvv', '-s', :json, :red, :json]
25
+ yellow = args.extract_color
26
+ red1 = args.extract_color
27
+ red2 = args.extract_color
28
+ red3 = args.extract_color
29
+ x = args.extract_option '-x'
30
+ f = args.extract_option '-f'
31
+ v = args.extract_option '-v', false
32
+ assert_equal x, true
33
+ assert_equal f, false
34
+ assert_equal v, 8
35
+ assert_equal red1, :red
36
+ assert_equal red2, :red
37
+ assert_equal red3, :default
38
+ end
39
+
40
+ def test_hash_D_extract_option_value
41
+ args = ['-o', 'um', '-o', 'dois', '--desc', 'description', '-v', '-v', '-o', 'tres', '-s', :json, :red, :json]
42
+ desc_status, desc = args.extract_option_value '--desc'
43
+ status, origin = args.extract_option_value '-o', {:multiple => true}
44
+ assert_equal desc_status, true
45
+ assert_equal desc, 'description'
46
+ assert_equal status, true
47
+ assert_equal origin, ['um','um','dois','dois','tres','tres']
48
+ end
49
+
50
+
51
+ end
52
+
53
+
@@ -0,0 +1,28 @@
1
+ class ToolsModuleTest < Minitest::Test
2
+
3
+ def self.test_order
4
+ :sorted
5
+ end
6
+
7
+ def test_cache_A_all_operators
8
+ ToolsFiles.remove_file '/home/francisco/2018/xykotools/tools/teste-persistent.cache'
9
+ ToolsCache.create_cache_file 'tools', (File.dirname __dir__) + '/teste-persistent.cache', 60
10
+ assert_equal ToolsCache.tools_list, {}
11
+ ToolsCache.tools_set :k1, 100
12
+ assert_equal ToolsCache.tools_list, {:k1 => 100}
13
+ ToolsCache.tools_unset :k1
14
+ assert_equal ToolsCache.tools_list, {}
15
+ ToolsCache.tools_set :k2, {:i => 100, :j => 200}
16
+ ToolsCache.tools_set :k2, {:l => 100, :m => 200}
17
+ ToolsCache.tools_set :k3, []
18
+ ToolsCache.tools_set :k3, [1,2,3]
19
+ ToolsCache.tools_set :k3, [4, ['a','b']]
20
+ assert_equal (ToolsCache.tools_get :k3), [1,2,3,4,['a','b']]
21
+ assert_equal (ToolsCache.tools_get :k2), {:i => 100, :j => 200,:l => 100, :m => 200}
22
+ ToolsCache.tools_clear
23
+ assert_equal ToolsCache.tools_list, {}
24
+ ToolsFiles.remove_file '/home/francisco/2018/xykotools/tools/teste-persistent.cache'
25
+ end
26
+
27
+
28
+ end
@@ -0,0 +1,28 @@
1
+ class ToolsModuleTest < Minitest::Test
2
+
3
+ def self.test_order
4
+ :sorted
5
+ end
6
+
7
+ def test_log_A_all_operations
8
+
9
+ ToolsFiles.remove_file (File.dirname __dir__) + '/tools_yaml.config'
10
+ ToolsFiles.remove_file (File.dirname __dir__) + '/tools_json.config'
11
+ ToolsConfig.create_config_file 'tools_yaml', (File.dirname __dir__) +'/tools_yaml.config', :yaml, {:first_time => true}
12
+ ToolsConfig.create_config_file 'tools_json', (File.dirname __dir__) +'/tools_json.config', :json, {:first_time => true}
13
+ ToolsConfig.create_config_file 'tools_json', (File.dirname __dir__) +'/tools_json.config', :json, {:first_time => true}
14
+ ToolsConfig.load_config (File.dirname __dir__) + '/tools_yaml.config'
15
+ ToolsConfig.load_config (File.dirname __dir__) + '/tools_json.config'
16
+
17
+ ToolsConfig.insert_in_config (File.dirname __dir__) +'/tools_yaml.config', {:first_time => false,}
18
+ ToolsConfig.insert_in_config (File.dirname __dir__) +'/tools_json.config', {:first_time => false,}
19
+
20
+ ToolsConfig.change_value_in_config (File.dirname __dir__) +'/tools_yaml.config', true , :first_time
21
+ ToolsConfig.change_value_in_config (File.dirname __dir__) +'/tools_json.config', true , :first_time
22
+
23
+ ToolsFiles.remove_file (File.dirname __dir__) + '/tools_yaml.config'
24
+ ToolsFiles.remove_file (File.dirname __dir__) + '/tools_json.config'
25
+
26
+ end
27
+
28
+ end
@@ -0,0 +1,20 @@
1
+
2
+ class ToolsModuleTest < Minitest::Test
3
+
4
+ def self.test_order
5
+ :sorted
6
+ end
7
+
8
+
9
+ def test_console_A_run_console
10
+ mock = MiniTest::Mock.new
11
+ def mock.start *args; true; end
12
+ Prompt::Console.stub :start, mock do
13
+ assert_equal ToolsConsole.create_console.class, Array
14
+ assert_equal (ToolsConsole.exec_console ['test']), true
15
+ assert_equal (ToolsConsole.exec_console ['tes']), false
16
+ assert_equal ToolsConsole.run_console.class, Minitest::Mock
17
+ end
18
+ end
19
+
20
+ end
@@ -0,0 +1,53 @@
1
+ class ToolsModuleTest < Minitest::Test
2
+
3
+ def self.test_order
4
+ :sorted
5
+ end
6
+
7
+ def test_dislay_A
8
+ ToolsDisplay.instance
9
+ old_stdout = $stdout
10
+ captured_stdio = StringIO.new('', 'w')
11
+ $stdout = captured_stdio
12
+ ToolsDisplay.show "TEXTO VERDE", :green
13
+ $stdout = old_stdout
14
+ assert_equal "\e[0;32;49mTEXTO VERDE\n\e[0m", captured_stdio.string
15
+ end
16
+
17
+ def test_dislay_B_sameline
18
+ ToolsDisplay.instance
19
+ old_stdout = $stdout
20
+ captured_stdio = StringIO.new('', 'w')
21
+ $stdout = captured_stdio
22
+ ToolsDisplay.show "TEXTO SAMELINE", :sameline
23
+ $stdout = old_stdout
24
+ assert_equal "\e[0;39;49mTEXTO SAMELINE\e[0m", captured_stdio.string
25
+ end
26
+
27
+ def test_dislay_C_show_colorize
28
+ ToolsDisplay.instance
29
+ old_stdout = $stdout
30
+ captured_stdio = StringIO.new('', 'w')
31
+ $stdout = captured_stdio
32
+ ToolsDisplay.show_colorize "red".red+ " " + "white".white
33
+ $stdout = old_stdout
34
+ assert_equal "\e[0;31;49mred\e[0m \e[0;37;49mwhite\e[0m\n", captured_stdio.string
35
+ end
36
+
37
+ def test_dislay_D_colorized
38
+ ToolsDisplay.instance
39
+ old_stdout = $stdout
40
+ captured_stdio = StringIO.new('', 'w')
41
+ $stdout = captured_stdio
42
+ ToolsDisplay.show "red".red+ " " + "white".white, :colorized
43
+ $stdout = old_stdout
44
+ assert_equal "\e[0;31;49mred\e[0m \e[0;37;49mwhite\e[0m\n", captured_stdio.string
45
+ end
46
+
47
+ def test_dislay_E_error
48
+ result = ToolsDisplay.show []
49
+ assert_equal "Array", result
50
+ end
51
+
52
+
53
+ end
@@ -0,0 +1,64 @@
1
+ class ToolsModuleTest < Minitest::Test
2
+
3
+ def self.test_order
4
+ :sorted
5
+ end
6
+
7
+ def test_file_A_purge
8
+ mock = MiniTest::Mock.new
9
+ def mock.delete *args; Array; end
10
+ File.stub :delete, mock do
11
+ assert_equal (ToolsFiles.purge_files (File.dirname __dir__)+'/pkg', '*.gem', 1).class, Array
12
+ end
13
+ end
14
+
15
+ def test_file_B_create_dir
16
+ mock = MiniTest::Mock.new
17
+ def mock.mkdir *args; String; end
18
+ Dir.stub :mkdir, mock do
19
+ assert_equal (ToolsFiles.create_dir (File.dirname __dir__)+'/pkg', 'minitest').class, String
20
+ assert_equal (ToolsFiles.create_dir (File.dirname __dir__)+'/pkg2', 'minitest').class, String
21
+ end
22
+ end
23
+
24
+ def test_file_C_create_file
25
+ mock = MiniTest::Mock.new
26
+ def mock.open *args; String; end
27
+ File.stub :open, mock do
28
+ assert_equal (ToolsFiles.create_file (File.dirname __dir__)+'/pkg', 'minitest', 'minitest').class, String
29
+ end
30
+ end
31
+
32
+ def test_file_D_load_file
33
+ file = (File.dirname __dir__) + '/TODO.txt'
34
+ result = ToolsFiles.load_file file
35
+ assert_equal result.class, File
36
+ end
37
+
38
+ def test_file_F_load_file
39
+ mock = MiniTest::Mock.new
40
+ mock.expect :exists?, true
41
+ mock.expect :open, true
42
+ file = (File.dirname __dir__) + '/TODO'
43
+ assert_nil (ToolsFiles.load_file file), nil
44
+ end
45
+
46
+ def test_file_G_open_file
47
+ mock = MiniTest::Mock.new
48
+ def mock.open *args; true; end
49
+ TTY::Editor.stub :open, mock do
50
+ assert_equal (ToolsFiles.open_file '').class, Minitest::Mock
51
+ assert_equal (ToolsFiles.open_file '', :vi).class, Minitest::Mock
52
+ end
53
+ end
54
+
55
+
56
+ def test_file_H_remove_file
57
+ mock = MiniTest::Mock.new
58
+ def mock.remove_file *args; String; end
59
+ FileUtils.stub :remove_file, mock do
60
+ assert_equal (ToolsFiles.remove_file (File.dirname __dir__)+'/pkg').class, Minitest::Mock
61
+ end
62
+ end
63
+
64
+ end
@@ -0,0 +1,155 @@
1
+ class ToolsModuleTest < Minitest::Test
2
+
3
+ def self.test_order
4
+ :sorted
5
+ end
6
+
7
+ def test_hash_A_tools
8
+ data = {
9
+ 'k1' => 100,
10
+ 'k2' => 'v2',
11
+ :k3 => {
12
+ :a => 100,
13
+ },
14
+ }
15
+ result = {
16
+ "k1" => 100,
17
+ "k2" => "v2",
18
+ :k3 => {
19
+ :a => 100,
20
+ :k2 => 200
21
+ },
22
+ :k1 => 100,
23
+ }
24
+ data.rmerge!( {:k1 => 100} )
25
+ data.rmerge!( {:k3 => {:k2 => 200}})
26
+ assert_equal data, result
27
+
28
+ result_merge = {
29
+ "k1" => 100,
30
+ "k2" => "v2",
31
+ :k3 => {
32
+ :a => 100,
33
+ :k2 => 200
34
+ },
35
+ :k1 => 100
36
+ }
37
+
38
+ hash = data.rmerge( {:k1 => 100} )
39
+ assert_equal hash, result_merge
40
+
41
+ x = {:k1 => 100 , :k2 => { :k3 => {:a => 100}}}
42
+ assert_equal x.rblank, {:k2 => {:k3 => {}}}
43
+ assert_equal x.rblank!, {:k2 => {:k3 => {}}}
44
+
45
+ x = {:k1 => 100 , :k2 => { :k3 => {:a => 100}}}
46
+ y = x.rblank
47
+ diff = x.diff y
48
+ assert_equal diff, {:k1=>[100, nil], :k2=>{:k3=>{:a=>[100, nil]}}}
49
+
50
+
51
+ x = {:k1 => 100 , :k2 => { :k3 => {:a => 100}}}
52
+ y = x.nested_set [:k2,:k3,:a], 200
53
+ assert_equal x, {:k1 => 100 , :k2 => { :k3 => {:a => 200}}}
54
+
55
+ end
56
+
57
+
58
+
59
+
60
+
61
+ end
62
+
63
+
64
+
65
+ # module HashRecursiveBlank
66
+ # def rblank
67
+ # r = {}
68
+ # each_pair do |key, val|
69
+ # r[key] = val.rblank if val.is_a?(Hash)
70
+ # end
71
+ # return r.keep_if { |key, val| val.is_a?(Hash) }
72
+ # end
73
+
74
+ # def rblank!
75
+ # each_pair do |key, val|
76
+ # self[key] = val.rblank! if val.is_a?(Hash)
77
+ # end
78
+ # return keep_if { |key, val| val.is_a?(Hash) }
79
+ # end
80
+ # end
81
+
82
+ # module HashRecursiveMerge
83
+ # def rmerge(other_hash, concat_if_array = false)
84
+ # r = {}
85
+ # return merge(other_hash) do |key, oldval, newval|
86
+ # if oldval.is_a?(Hash)
87
+ # r[key] = oldval.rmerge(newval, concat_if_array)
88
+ # elsif oldval.is_a?(Array) and newval.is_a?(Array)
89
+ # r[key] = concat_if_array ? oldval + newval : newval
90
+ # else
91
+ # newval
92
+ # end
93
+ # end
94
+ # end
95
+
96
+ # def rmerge!(other_hash, concat_if_array = false)
97
+ # return merge!(other_hash) do |key, oldval, newval|
98
+ # if oldval.is_a?(Hash)
99
+ # oldval.rmerge!(newval, concat_if_array)
100
+ # elsif oldval.is_a?(Array) and newval.is_a?(Array)
101
+ # concat_if_array ? oldval + newval : newval
102
+ # else
103
+ # newval
104
+ # end
105
+ # end
106
+ # end
107
+ # end
108
+
109
+ # class Hash
110
+ # include HashRecursiveMerge
111
+ # include HashRecursiveBlank
112
+
113
+ # def diff(other)
114
+ # (self.keys + other.keys).uniq.inject({}) do |memo, key|
115
+ # unless self[key] == other[key]
116
+ # if self[key].kind_of?(Hash) && other[key].kind_of?(Hash)
117
+ # memo[key] = self[key].diff(other[key])
118
+ # else
119
+ # memo[key] = [self[key], other[key]]
120
+ # end
121
+ # end
122
+ # memo
123
+ # end
124
+ # end
125
+ # end
126
+
127
+
128
+ # class Hash
129
+
130
+ # # ensures nested hash from keys, and sets final key to value
131
+ # # keys: Array of Symbol|String
132
+ # # value: any
133
+ # def nested_set(keys, value)
134
+ # raise "DEBUG: nested_set keys must be an Array" unless keys.is_a?(Array)
135
+
136
+ # final_key = keys.pop
137
+ # return unless valid_key?(final_key)
138
+ # position = self
139
+ # for key in keys
140
+ # return unless valid_key?(key)
141
+ # position[key] = {} unless position[key].is_a?(Hash)
142
+ # position = position[key]
143
+ # end
144
+ # position[final_key] = value
145
+ # end
146
+
147
+ # private
148
+
149
+ # # returns true if key is valid
150
+ # def valid_key?(key)
151
+ # return true if key.is_a?(Symbol) || key.is_a?(String)
152
+ # raise "DEBUG: nested_set invalid key: #{key} (#{key.class})"
153
+ # end
154
+
155
+ # end