tools 0.4.4 → 0.4.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -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