bbcloud 0.11.2 → 0.12.0

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.
Files changed (198) hide show
  1. data/.gitignore +3 -2
  2. data/Gemfile +3 -0
  3. data/README +11 -1
  4. data/README.rdoc +11 -1
  5. data/Rakefile +12 -0
  6. data/bbcloud.gemspec +10 -10
  7. data/bin/brightbox-accounts +7 -2
  8. data/bin/brightbox-cloudips +7 -2
  9. data/bin/brightbox-config +7 -2
  10. data/bin/brightbox-images +7 -2
  11. data/bin/brightbox-lbs +7 -2
  12. data/bin/brightbox-servers +7 -2
  13. data/bin/brightbox-types +7 -2
  14. data/bin/brightbox-users +7 -2
  15. data/bin/brightbox-zones +7 -2
  16. data/lib/bbcloud.rb +43 -0
  17. data/lib/bbcloud/accounts.rb +5 -3
  18. data/lib/bbcloud/command_generator.rb +50 -0
  19. data/lib/bbcloud/commands/accounts-list.rb +13 -11
  20. data/lib/bbcloud/commands/accounts-reset-ftp-password.rb +26 -23
  21. data/lib/bbcloud/commands/accounts-show.rb +20 -16
  22. data/lib/bbcloud/commands/cloudips-create.rb +16 -14
  23. data/lib/bbcloud/commands/cloudips-destroy.rb +29 -26
  24. data/lib/bbcloud/commands/cloudips-list.rb +13 -11
  25. data/lib/bbcloud/commands/cloudips-map.rb +48 -46
  26. data/lib/bbcloud/commands/cloudips-show.rb +15 -12
  27. data/lib/bbcloud/commands/cloudips-unmap.rb +28 -25
  28. data/lib/bbcloud/commands/config-client-add.rb +33 -31
  29. data/lib/bbcloud/commands/config-client-default.rb +18 -16
  30. data/lib/bbcloud/commands/config-client-list.rb +19 -16
  31. data/lib/bbcloud/commands/config-client-remove.rb +18 -16
  32. data/lib/bbcloud/commands/images-destroy.rb +18 -16
  33. data/lib/bbcloud/commands/images-list.rb +20 -18
  34. data/lib/bbcloud/commands/images-register.rb +21 -19
  35. data/lib/bbcloud/commands/images-show.rb +17 -15
  36. data/lib/bbcloud/commands/lbs-add-nodes.rb +15 -13
  37. data/lib/bbcloud/commands/lbs-create.rb +65 -63
  38. data/lib/bbcloud/commands/lbs-destroy.rb +13 -11
  39. data/lib/bbcloud/commands/lbs-list.rb +13 -11
  40. data/lib/bbcloud/commands/lbs-remove-nodes.rb +15 -13
  41. data/lib/bbcloud/commands/lbs-show.rb +15 -13
  42. data/lib/bbcloud/commands/lbs-update.rb +59 -57
  43. data/lib/bbcloud/commands/servers-activate-cloud.rb +18 -16
  44. data/lib/bbcloud/commands/servers-create.rb +80 -77
  45. data/lib/bbcloud/commands/servers-destroy.rb +17 -15
  46. data/lib/bbcloud/commands/servers-list.rb +14 -14
  47. data/lib/bbcloud/commands/servers-show.rb +39 -37
  48. data/lib/bbcloud/commands/servers-shutdown.rb +14 -12
  49. data/lib/bbcloud/commands/servers-snapshot.rb +14 -12
  50. data/lib/bbcloud/commands/servers-start.rb +15 -13
  51. data/lib/bbcloud/commands/servers-stop.rb +14 -12
  52. data/lib/bbcloud/commands/types-list.rb +13 -11
  53. data/lib/bbcloud/commands/types-show.rb +18 -16
  54. data/lib/bbcloud/commands/users-list.rb +13 -11
  55. data/lib/bbcloud/commands/users-show.rb +17 -15
  56. data/lib/bbcloud/commands/users-update.rb +27 -25
  57. data/lib/bbcloud/commands/zones-list.rb +13 -11
  58. data/lib/bbcloud/config.rb +125 -111
  59. data/lib/bbcloud/error_parser.rb +34 -0
  60. data/lib/bbcloud/fog_extensions.rb +19 -0
  61. data/lib/bbcloud/gli_global_hooks.rb +56 -0
  62. data/lib/bbcloud/logging.rb +40 -0
  63. data/lib/bbcloud/ruby_core_ext.rb +9 -0
  64. data/lib/bbcloud/servers.rb +7 -2
  65. data/lib/bbcloud/tables.rb +78 -73
  66. data/lib/bbcloud/vendor/gli/.gitignore +10 -0
  67. data/lib/bbcloud/vendor/gli/.rvmrc +1 -0
  68. data/lib/bbcloud/vendor/gli/Gemfile +5 -0
  69. data/lib/bbcloud/vendor/gli/LICENSE.txt +201 -0
  70. data/lib/bbcloud/vendor/gli/README.rdoc +54 -0
  71. data/lib/bbcloud/vendor/gli/Rakefile +84 -0
  72. data/lib/bbcloud/vendor/gli/bin/gli +72 -0
  73. data/lib/bbcloud/vendor/gli/bin/report_on_rake_results +10 -0
  74. data/lib/bbcloud/vendor/gli/bin/test_all_rubies.sh +2 -0
  75. data/lib/bbcloud/vendor/gli/features/gli_executable.feature +88 -0
  76. data/lib/bbcloud/vendor/gli/features/gli_init.feature +122 -0
  77. data/lib/bbcloud/vendor/gli/features/step_definitions/gli_executable_steps.rb +12 -0
  78. data/lib/bbcloud/vendor/gli/features/step_definitions/gli_init_steps.rb +4 -0
  79. data/lib/bbcloud/vendor/gli/features/support/env.rb +21 -0
  80. data/lib/bbcloud/vendor/gli/gli.cheat +80 -0
  81. data/lib/bbcloud/vendor/gli/gli.gemspec +46 -0
  82. data/lib/bbcloud/vendor/gli/gli.rdoc +51 -0
  83. data/lib/bbcloud/vendor/gli/lib/gli.rb +560 -0
  84. data/lib/bbcloud/vendor/gli/lib/gli/command.rb +124 -0
  85. data/lib/bbcloud/vendor/gli/lib/gli/command_line_token.rb +58 -0
  86. data/lib/bbcloud/vendor/gli/lib/gli/copy_options_to_aliases.rb +33 -0
  87. data/lib/bbcloud/vendor/gli/lib/gli/exceptions.rb +45 -0
  88. data/lib/bbcloud/vendor/gli/lib/gli/flag.rb +67 -0
  89. data/lib/bbcloud/vendor/gli/lib/gli/options.rb +19 -0
  90. data/lib/bbcloud/vendor/gli/lib/gli/switch.rb +63 -0
  91. data/lib/bbcloud/vendor/gli/lib/gli/terminal.rb +79 -0
  92. data/lib/bbcloud/vendor/gli/lib/gli_version.rb +3 -0
  93. data/lib/bbcloud/vendor/gli/lib/support/help.rb +180 -0
  94. data/lib/bbcloud/vendor/gli/lib/support/initconfig.rb +34 -0
  95. data/lib/bbcloud/vendor/gli/lib/support/rdoc.rb +119 -0
  96. data/lib/bbcloud/vendor/gli/lib/support/scaffold.rb +284 -0
  97. data/lib/bbcloud/vendor/gli/test/config.yaml +9 -0
  98. data/lib/bbcloud/vendor/gli/test/gli.reek +116 -0
  99. data/lib/bbcloud/vendor/gli/test/roodi.yaml +9 -0
  100. data/lib/bbcloud/vendor/gli/test/tc_command.rb +329 -0
  101. data/lib/bbcloud/vendor/gli/test/tc_flag.rb +67 -0
  102. data/lib/bbcloud/vendor/gli/test/tc_gli.rb +429 -0
  103. data/lib/bbcloud/vendor/gli/test/tc_options.rb +31 -0
  104. data/lib/bbcloud/vendor/gli/test/tc_parsing.rb +279 -0
  105. data/lib/bbcloud/vendor/gli/test/tc_switch.rb +80 -0
  106. data/lib/bbcloud/vendor/gli/test/tc_terminal.rb +91 -0
  107. data/lib/bbcloud/version.rb +1 -1
  108. data/pkg/bbcloud-0.12.0.gem +0 -0
  109. data/spec/fixtures/vcr_cassettes/server_list.yml +117 -0
  110. data/spec/servers_spec.rb +36 -0
  111. data/spec/spec_helper.rb +24 -0
  112. data/spec/support/common_helpers.rb +47 -0
  113. metadata +129 -135
  114. data/lib/bbcloud/cli.rb +0 -160
  115. data/lib/bbcloud/vendor/fog/lib/fog.rb +0 -14
  116. data/lib/bbcloud/vendor/fog/lib/fog/compute.rb +0 -43
  117. data/lib/bbcloud/vendor/fog/lib/fog/compute/brightbox.rb +0 -162
  118. data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/account.rb +0 -51
  119. data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/cloud_ip.rb +0 -47
  120. data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/cloud_ips.rb +0 -34
  121. data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/flavor.rb +0 -33
  122. data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/flavors.rb +0 -28
  123. data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/image.rb +0 -56
  124. data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/images.rb +0 -28
  125. data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/load_balancer.rb +0 -50
  126. data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/load_balancers.rb +0 -28
  127. data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/server.rb +0 -108
  128. data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/servers.rb +0 -29
  129. data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/user.rb +0 -39
  130. data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/users.rb +0 -29
  131. data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/zone.rb +0 -21
  132. data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/zones.rb +0 -29
  133. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/activate_console_server.rb +0 -20
  134. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/add_listeners_load_balancer.rb +0 -20
  135. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/add_nodes_load_balancer.rb +0 -20
  136. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/create_api_client.rb +0 -19
  137. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/create_cloud_ip.rb +0 -19
  138. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/create_image.rb +0 -19
  139. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/create_load_balancer.rb +0 -19
  140. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/create_server.rb +0 -19
  141. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/destroy_api_client.rb +0 -20
  142. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/destroy_cloud_ip.rb +0 -20
  143. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/destroy_image.rb +0 -20
  144. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/destroy_load_balancer.rb +0 -20
  145. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/destroy_server.rb +0 -20
  146. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/get_account.rb +0 -19
  147. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/get_api_client.rb +0 -20
  148. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/get_cloud_ip.rb +0 -20
  149. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/get_image.rb +0 -20
  150. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/get_interface.rb +0 -20
  151. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/get_load_balancer.rb +0 -20
  152. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/get_server.rb +0 -20
  153. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/get_server_type.rb +0 -20
  154. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/get_user.rb +0 -20
  155. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/get_zone.rb +0 -20
  156. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/list_api_clients.rb +0 -19
  157. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/list_cloud_ips.rb +0 -19
  158. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/list_images.rb +0 -19
  159. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/list_load_balancers.rb +0 -19
  160. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/list_server_types.rb +0 -19
  161. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/list_servers.rb +0 -19
  162. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/list_users.rb +0 -19
  163. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/list_zones.rb +0 -19
  164. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/map_cloud_ip.rb +0 -20
  165. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/remove_listeners_load_balancer.rb +0 -20
  166. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/remove_nodes_load_balancer.rb +0 -20
  167. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/reset_ftp_password_account.rb +0 -19
  168. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/resize_server.rb +0 -19
  169. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/shutdown_server.rb +0 -20
  170. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/snapshot_server.rb +0 -20
  171. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/start_server.rb +0 -20
  172. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/stop_server.rb +0 -20
  173. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/unmap_cloud_ip.rb +0 -20
  174. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/update_account.rb +0 -20
  175. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/update_api_client.rb +0 -21
  176. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/update_image.rb +0 -21
  177. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/update_load_balancer.rb +0 -21
  178. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/update_server.rb +0 -21
  179. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/update_user.rb +0 -21
  180. data/lib/bbcloud/vendor/fog/lib/fog/core.rb +0 -32
  181. data/lib/bbcloud/vendor/fog/lib/fog/core/attributes.rb +0 -178
  182. data/lib/bbcloud/vendor/fog/lib/fog/core/collection.rb +0 -127
  183. data/lib/bbcloud/vendor/fog/lib/fog/core/connection.rb +0 -35
  184. data/lib/bbcloud/vendor/fog/lib/fog/core/credentials.rb +0 -92
  185. data/lib/bbcloud/vendor/fog/lib/fog/core/deprecation.rb +0 -23
  186. data/lib/bbcloud/vendor/fog/lib/fog/core/errors.rb +0 -20
  187. data/lib/bbcloud/vendor/fog/lib/fog/core/hmac.rb +0 -48
  188. data/lib/bbcloud/vendor/fog/lib/fog/core/mock.rb +0 -68
  189. data/lib/bbcloud/vendor/fog/lib/fog/core/model.rb +0 -57
  190. data/lib/bbcloud/vendor/fog/lib/fog/core/parser.rb +0 -99
  191. data/lib/bbcloud/vendor/fog/lib/fog/core/provider.rb +0 -18
  192. data/lib/bbcloud/vendor/fog/lib/fog/core/scp.rb +0 -67
  193. data/lib/bbcloud/vendor/fog/lib/fog/core/service.rb +0 -175
  194. data/lib/bbcloud/vendor/fog/lib/fog/core/ssh.rb +0 -120
  195. data/lib/bbcloud/vendor/fog/lib/fog/core/time.rb +0 -27
  196. data/lib/bbcloud/vendor/fog/lib/fog/core/wait_for.rb +0 -17
  197. data/lib/bbcloud/vendor/fog/lib/fog/providers.rb +0 -9
  198. data/lib/bbcloud/vendor/fog/lib/fog/providers/brightbox.rb +0 -9
@@ -0,0 +1,31 @@
1
+ require 'gli.rb'
2
+ require 'test/unit'
3
+
4
+ include GLI
5
+ class TC_testOptions < Test::Unit::TestCase
6
+
7
+ def test_by_method
8
+ o = Options.new
9
+ o.name = 'verbose'
10
+ assert_equal 'verbose', o.name
11
+ assert_equal 'verbose', o[:name]
12
+ assert_equal 'verbose', o['name']
13
+ end
14
+
15
+ def test_by_string
16
+ o = Options.new
17
+ o['name'] = 'verbose'
18
+ assert_equal 'verbose', o.name
19
+ assert_equal 'verbose', o[:name]
20
+ assert_equal 'verbose', o['name']
21
+ end
22
+
23
+ def test_by_symbol
24
+ o = Options.new
25
+ o[:name] = 'verbose'
26
+ assert_equal 'verbose', o.name
27
+ assert_equal 'verbose', o[:name]
28
+ assert_equal 'verbose', o['name']
29
+ end
30
+
31
+ end
@@ -0,0 +1,279 @@
1
+ require 'gli.rb'
2
+ require 'test/unit'
3
+
4
+ include GLI
5
+ class TC_testParsing < Test::Unit::TestCase
6
+
7
+ def test_parse_command_line_simple
8
+ GLI.reset
9
+ GLI.switch :v
10
+ GLI.flag :f
11
+ GLI.command :doit do |c|
12
+ c.flag :file
13
+ c.flag :v
14
+ end
15
+ argv = %w(-v doit)
16
+ global_options,command,command_options,arguments = GLI.parse_options(argv)
17
+ assert(global_options[:v])
18
+ assert_equal(:doit,command.name)
19
+ end
20
+
21
+ def test_repeated_arguments
22
+ GLI.reset
23
+ GLI.command :doit do |c|
24
+ c.flag :file
25
+ c.flag :v
26
+ end
27
+ argv = %w(doit foo foo bar)
28
+ global_options,command,command_options,arguments = GLI.parse_options(argv)
29
+ assert_equal 3,arguments.size
30
+ assert_equal "foo",arguments[0]
31
+ assert_equal "foo",arguments[1]
32
+ assert_equal "bar",arguments[2]
33
+ end
34
+
35
+ def test_parse_command_line_simplish
36
+ GLI.reset
37
+ GLI.switch :v
38
+ GLI.flag :f
39
+ GLI.command :doit do |c|
40
+ c.flag :file
41
+ c.flag :v
42
+ end
43
+ argv = %w(doit)
44
+ global_options,command,command_options,arguments = GLI.parse_options(argv)
45
+ assert(!global_options[:v])
46
+ assert_equal(:doit,command.name)
47
+ end
48
+
49
+ def test_parse_command_line
50
+ GLI.reset
51
+ GLI.switch :v
52
+ GLI.flag :f
53
+ GLI.command :doit do |c|
54
+ c.flag :file
55
+ c.flag :v
56
+ end
57
+ argv = %w(-v -f blah doit -v 4 --file=foo bar)
58
+ global_options,command,command_options,arguments = GLI.parse_options(argv)
59
+ assert(global_options[:v])
60
+ assert_equal('blah',global_options[:f])
61
+ assert_equal(:doit,command.name)
62
+ assert_equal('4',command_options[:v])
63
+ assert_equal('foo',command_options[:file])
64
+ assert_equal(1,arguments.size)
65
+ assert_equal('bar',arguments[0])
66
+ end
67
+
68
+ def test_parse_command_line_errors
69
+ GLI.reset
70
+ GLI.switch :v
71
+ GLI.flag :f
72
+ GLI.command :doit do |c|
73
+ c.flag :file
74
+ c.flag :v
75
+ end
76
+ argv = %w(-x doit)
77
+ assert_raises(UnknownGlobalArgument) do
78
+ global_options,command,command_options,arguments = GLI.parse_options(argv)
79
+ end
80
+ end
81
+
82
+ def test_parse_command_line_errors_2
83
+ GLI.reset
84
+ GLI.switch :v
85
+ GLI.flag :f
86
+ GLI.command :doit do |c|
87
+ c.flag :file
88
+ c.flag :v
89
+ end
90
+ argv = %w(doit -x)
91
+ assert_raises(UnknownCommandArgument) do
92
+ global_options,command,command_options,arguments = GLI.parse_options(argv)
93
+ end
94
+ end
95
+
96
+ def test_parse_command_line_simple
97
+ GLI.reset
98
+ argv = %w(doit)
99
+ GLI.switch :v
100
+ GLI.flag :f
101
+ GLI.command :doit do |c|
102
+ c.flag :file
103
+ c.flag :v
104
+ end
105
+ global_options,command,command_options,arguments = GLI.parse_options(argv)
106
+ assert(!global_options[:v])
107
+ assert(!global_options[:f])
108
+ assert_equal(:doit,command.name)
109
+ assert(!command_options[:v])
110
+ assert(!command_options[:file])
111
+ assert_equal(0,arguments.size)
112
+ end
113
+
114
+ def test_parse_command_line_with_stop_processing
115
+ GLI.reset
116
+ argv = %w(-v -f doit -f -v -x -- -blah crud foo --x=blah)
117
+ GLI.switch :v
118
+ GLI.switch :f
119
+ GLI.command :doit do |c|
120
+ c.flag :file
121
+ c.switch :v
122
+ c.switch :f
123
+ c.switch :x
124
+ end
125
+ global_options,command,command_options,arguments = GLI.parse_options(argv)
126
+ assert(global_options[:v])
127
+ assert(global_options[:f])
128
+ assert_equal(:doit,command.name)
129
+ assert(command_options[:f])
130
+ assert(command_options[:v])
131
+ assert(command_options[:x])
132
+ assert_equal(['-blah','crud','foo','--x=blah'],arguments)
133
+ end
134
+
135
+ def test_parse_command_line_with_stop_processing2
136
+ GLI.reset
137
+ argv = %w(-v -f doit -f -v -x --)
138
+ GLI.switch :v
139
+ GLI.switch :f
140
+ GLI.command :doit do |c|
141
+ c.flag :file
142
+ c.switch :v
143
+ c.switch :f
144
+ c.switch :x
145
+ end
146
+ global_options,command,command_options,arguments = GLI.parse_options(argv)
147
+ assert(global_options[:v])
148
+ assert(global_options[:f])
149
+ assert_equal(:doit,command.name)
150
+ assert(command_options[:f])
151
+ assert(command_options[:v])
152
+ assert(command_options[:x])
153
+ assert_equal([],arguments)
154
+ end
155
+
156
+ def test_parse_command_line_all_switches
157
+ GLI.reset
158
+ argv = %w(-v -f doit -f -v -x)
159
+ GLI.switch :v
160
+ GLI.switch :f
161
+ GLI.command :doit do |c|
162
+ c.flag :file
163
+ c.switch :v
164
+ c.switch :f
165
+ c.switch :x
166
+ end
167
+ global_options,command,command_options,arguments = GLI.parse_options(argv)
168
+ assert(global_options[:v])
169
+ assert(global_options[:f])
170
+ assert_equal(:doit,command.name)
171
+ assert(command_options[:f])
172
+ assert(command_options[:v])
173
+ assert(command_options[:x])
174
+ assert_equal(0,arguments.size)
175
+ end
176
+
177
+ def test_switch_and_flag_order
178
+ GLI.reset
179
+ GLI.command :doit do |c|
180
+ c.desc "list stuff"
181
+ c.flag [:l,'stuff']
182
+ end
183
+
184
+ argv = %w(doit -l 10 list)
185
+ global_options,command,command_options,arguments = GLI.parse_options(argv)
186
+ assert_equal '10', command_options[:l]
187
+ assert arguments.include?('list')
188
+ end
189
+
190
+ def test_switch_and_flag_order_with_global
191
+ GLI.reset
192
+ argv = %w(-v -f doit list -l 10)
193
+
194
+ GLI.switch :v
195
+ GLI.switch :f
196
+ GLI.command :doit do |c|
197
+ c.desc "list stuff"
198
+ c.flag [:l,'stuff']
199
+ end
200
+
201
+ global_options,command,command_options,arguments = GLI.parse_options(argv)
202
+ assert_equal '10', command_options[:l]
203
+ assert arguments.include?('list')
204
+ end
205
+
206
+ def test_case_that_busted
207
+ GLI.reset
208
+ GLI.desc 'Some Global Option'
209
+ GLI.switch :g
210
+ glob = nil
211
+ verbose = nil
212
+ glob_verbose = nil
213
+ configure = nil
214
+ args = nil
215
+ GLI.desc 'Some Basic Command'
216
+ GLI.command :basic do |c|
217
+ c.desc 'be verbose'
218
+ c.switch :v
219
+ c.desc 'configure something'
220
+ c.flag [:c,:configure]
221
+ c.action do |global_options,options,arguments|
222
+ glob = global_options[:g] ? 'true' : 'false'
223
+ verbose = options[:v] ? 'true' : 'false'
224
+ glob_verbose = global_options[:v] ? 'true' : 'false'
225
+ configure = options[:c]
226
+ args = arguments
227
+ end
228
+ end
229
+ args = %w(-g basic -v -c foo bar baz quux)
230
+ global_options,command,command_options,arguments = GLI.parse_options(args)
231
+ assert(global_options[:g])
232
+ assert_equal(:basic,command.name)
233
+ assert(command_options[:v])
234
+ assert_equal('foo',command_options[:c])
235
+ assert_equal(%w(bar baz quux),arguments)
236
+ end
237
+
238
+ def test_possible_issue_with_numbers
239
+ GLI.reset
240
+ GLI.desc 'Create a day''s worth of data for a particular service point'
241
+ GLI.arg_name 'service point ids'
242
+ GLI.command :data do |c|
243
+
244
+ c.desc 'Type of data'
245
+ c.arg_name 'either bill, day, or halfhour'
246
+ c.flag [:t,:type]
247
+
248
+ c.desc 'Date for the reads (start date for billing)'
249
+ c.arg_name 'date (in yyyy-mm-dd format)'
250
+ c.default_value '2010-04-01'
251
+ c.flag [:d,:date]
252
+
253
+ c.desc 'Number of reads, for billing'
254
+ c.arg_name 'number'
255
+ c.default_value '1'
256
+ c.flag :n
257
+
258
+ c.desc 'Make like gas data'
259
+ c.switch :g
260
+
261
+ c.action do |global_options,options,args|
262
+ raise "at least one service point id required" if args.nil? || args.empty?
263
+ Generate::Data.new(options[:t],options[:d],options[:n].to_i,options[:g],args).go
264
+ end
265
+ end
266
+ args = %w(data -t bill -n 10 1234)
267
+ global_options,command,command_options,arguments = GLI.parse_options(args)
268
+ assert(global_options.empty?)
269
+ assert_equal(:data,command.name)
270
+ assert_equal('bill',command_options[:t])
271
+ assert_equal('10',command_options[:n])
272
+ assert_equal(['1234'],arguments)
273
+
274
+ end
275
+
276
+ def teardown
277
+ GLI.reset
278
+ end
279
+ end
@@ -0,0 +1,80 @@
1
+ require 'gli.rb'
2
+ require 'test/unit'
3
+
4
+ include GLI
5
+ class TC_testSwitch < Test::Unit::TestCase
6
+
7
+ def test_basics_simple
8
+ switch = Switch.new(:filename,'Use filename')
9
+ do_basic_asserts(switch,:filename,nil,'Use filename')
10
+ end
11
+
12
+ def test_basics_kinda_complex
13
+ switch = Switch.new([:f],'Use filename')
14
+ do_basic_asserts(switch,:f,nil,'Use filename')
15
+ end
16
+
17
+ def test_basics_complex
18
+ switch = Switch.new([:f,:file,:filename],'Use filename')
19
+ do_basic_asserts(switch,:f,[:file,:filename],'Use filename')
20
+ end
21
+
22
+ def do_basic_asserts(switch,name,aliases,desc)
23
+ assert_equal(name,switch.name)
24
+ assert_equal(aliases,switch.aliases)
25
+ assert_equal(desc,switch.description)
26
+ assert(switch.usage != nil)
27
+ end
28
+ def test_find_one_switch_compact
29
+ do_test_find_one_switch_compact( %w(foo bar -fgh baz) ,2,'-gh')
30
+ do_test_find_one_switch_compact( %w(foo bar -gfh baz) ,2,'-gh')
31
+ do_test_find_one_switch_compact( %w(foo bar -ghf baz) ,2,'-gh')
32
+ end
33
+
34
+ def do_test_find_one_switch_compact(args,index,remainder)
35
+ switch = Switch.new(:f,"Some Switch")
36
+ args_size = args.length
37
+ present = switch.get_value!(args)
38
+ assert(present)
39
+ assert_equal(args_size,args.size)
40
+ assert_equal(remainder,args[index])
41
+ end
42
+ def test_find_one_switch
43
+ args = %w(foo bar -f -g -h baz)
44
+ switch = Switch.new(:f,"Some Switch")
45
+ args_size = args.length
46
+ present = switch.get_value!(args)
47
+ assert(present)
48
+ assert_equal(args_size - 1,args.size)
49
+ end
50
+
51
+ def test_find_one_switch_long
52
+ args = %w(foo bar --file -g -h baz)
53
+ switch = Switch.new([:f,:file,:bar],"Some Switch")
54
+ args_size = args.length
55
+ present = switch.get_value!(args)
56
+ assert(present)
57
+ assert_equal(args_size - 1,args.size)
58
+ end
59
+
60
+ def test_find_many_switchs
61
+ args = %w(foo bar -f -g --file -h baz -f --fileblah --f)
62
+ switch = Switch.new([:f,:file],"Some Switch")
63
+ args_size = args.length
64
+ times = 0
65
+ while switch.get_value!(args)
66
+ times += 1
67
+ end
68
+ assert_equal(3,times)
69
+ assert_equal(args_size - times,args.size)
70
+ end
71
+
72
+ def test_find_switch_not_there
73
+ args = %w(foo bar -f -g -h baz)
74
+ switch = Switch.new(:i,"Some Switch")
75
+ args_size = args.length
76
+ present = switch.get_value!(args)
77
+ assert(!present)
78
+ assert_equal(args_size,args.size)
79
+ end
80
+ end
@@ -0,0 +1,91 @@
1
+ require 'gli.rb'
2
+ require 'test/unit'
3
+
4
+ class TC_testTerminal < Test::Unit::TestCase
5
+ def test_command_exists
6
+ assert Terminal.instance.command_exists?('ls')
7
+ assert !Terminal.instance.command_exists?('asdfasfasdf')
8
+ end
9
+
10
+ def setup
11
+ @old_columns = ENV['COLUMNS']
12
+ @old_lines = ENV['LINES']
13
+ end
14
+
15
+ def teardown
16
+ ENV['COLUMNS'] = @old_columns
17
+ ENV['LINES'] = @old_lines
18
+ Terminal.default_size = [80,24]
19
+ end
20
+
21
+ def test_shared_instance_is_same
22
+ assert_equal Terminal.instance,Terminal.instance
23
+ end
24
+
25
+ def test_size_based_on_columns
26
+ ENV['COLUMNS'] = '666'
27
+ ENV['LINES'] = '777'
28
+ assert_equal [666,777],Terminal.instance.size
29
+ end
30
+
31
+ def test_size_using_tput
32
+ terminal = Terminal.new
33
+ terminal.make_unsafe!
34
+ terminal.instance_eval do
35
+ def run_command(command)
36
+ if command == 'tput cols'
37
+ return '888'
38
+ elsif command == 'tput lines'
39
+ return '999'
40
+ else
41
+ raise "Unexpected command called: #{command}"
42
+ end
43
+ end
44
+ def command_exists?(command); true; end
45
+ def jruby?; true; end
46
+ end
47
+ ENV['COLUMNS'] = 'foo'
48
+ assert_equal [888,999],terminal.size
49
+ end
50
+
51
+ def test_size_using_stty
52
+ terminal = Terminal.new
53
+ terminal.make_unsafe!
54
+ terminal.instance_eval do
55
+ def run_command(command)
56
+ if command == 'stty size'
57
+ return '1234 5678'
58
+ else
59
+ raise "Unexpected command called: #{command}"
60
+ end
61
+ end
62
+ def command_exists?(command); true; end
63
+ def jruby?; false; end
64
+ end
65
+ ENV['COLUMNS'] = 'foo'
66
+ assert_equal [5678,1234],terminal.size
67
+ end
68
+
69
+ def test_size_using_default
70
+ terminal = Terminal.new
71
+ terminal.make_unsafe!
72
+ terminal.instance_eval do
73
+ def command_exists?(command); false; end
74
+ def jruby?; false; end
75
+ end
76
+ ENV['COLUMNS'] = 'foo'
77
+ assert_equal [80,24],terminal.size
78
+ # While we have this set up, lets make sure the default change falls through
79
+ Terminal.default_size = [90,45]
80
+ assert_equal [90,45],terminal.size
81
+ end
82
+
83
+ def test_size_using_default_when_exception
84
+ terminal = Terminal.new
85
+ terminal.instance_eval do
86
+ def jruby?; raise "Problem"; end
87
+ end
88
+ ENV['COLUMNS'] = 'foo'
89
+ assert_equal [80,24],terminal.size
90
+ end
91
+ end