cosmos 3.4.1 → 3.4.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 347fbd93cb872161d7b92e30d62926f518dd70c8
4
- data.tar.gz: 135bbd4fd436113705cd4be89618e104112ac085
3
+ metadata.gz: 98b8a89318fe76b8b0a3dd2c5950e9cea1d59120
4
+ data.tar.gz: 0fdf696e10d06b9078a91383afce71bedfa943a1
5
5
  SHA512:
6
- metadata.gz: fc8d30c9cda59b6f5fe8d29452ff72608aef066ce43304fd4b81b2694cda72c507dac9dcd3af451012850982ae57ba0d9e9bb4f2a368e5072b5b8a7da60cb770
7
- data.tar.gz: 4c672f1f98fb0bda3da853f1b619465e8c7891796c7df99af4ebd1b6fa7db5220b63831de2c06233af3185cfc270547ad2831676b179d27e110a12e70600e6c8
6
+ metadata.gz: 44b8a6a65aa65b1aa1476a8a8f0b180e8684ae4b81d056d10e9fdb12cea1fd8209dd91f553ddc2de6cf5ee3de5219e430fdf6bd691a10c4f34d1c2d5d7393521
7
+ data.tar.gz: 6722a9c843f572a5b864142c0fe6965b0cbe1882f07442c173d6519ef48f9cef35f0bea7a52144680a0c88858212cac3a53243ff0c2d6054050735e7ae4b3996
data/.gitattributes CHANGED
@@ -1,2 +1,3 @@
1
1
  # Declare files that will always have CRLF line endings on checkout.
2
2
  *.bat text eol=crlf
3
+ autohotkey/procedures/collect.rb text eol=crlf
@@ -17,4 +17,8 @@ end
17
17
 
18
18
  # Clean up scene output
19
19
  File.delete('autohotkey/config/tools/opengl_builder/scene.txt')
20
+ # Remove known exception file
21
+ Dir["autohotkey/outputs/logs/*exception.txt"].each do |file|
22
+ File.delete file if File.read(file).include? "Unknown keyword THIS with parameters is just here to cause an error"
23
+ end
20
24
 
@@ -16,3 +16,7 @@ autohotkey('TlmViewer2', 'tlm_viewer2.ahk') do
16
16
  Cosmos::TlmViewer.run
17
17
  end
18
18
 
19
+ # Remove known exception file
20
+ Dir["autohotkey/outputs/logs/*exception.txt"].each do |file|
21
+ File.delete file if File.read(file).include? "Unable to require this_widget due to cannot load such file -- this_widget"
22
+ end
@@ -16,3 +16,8 @@ autohotkey('TlmViewer3') do
16
16
  Cosmos::TlmViewer.run
17
17
  end
18
18
 
19
+ # Remove known exception file
20
+ Dir["autohotkey/outputs/logs/*exception.txt"].each do |file|
21
+ File.delete file if File.read(file).include? "Error : Unknown keyword 'KEYWORD'"
22
+ end
23
+
@@ -16,3 +16,7 @@ autohotkey('TlmViewer4', 'tlm_viewer4.ahk') do
16
16
  Cosmos::TlmViewer.run
17
17
  end
18
18
 
19
+ # Remove known exception file
20
+ Dir["autohotkey/outputs/logs/*exception.txt"].each do |file|
21
+ File.delete file if File.read(file).include? "NoMethodError : undefined method `columns' for nil:NilClass"
22
+ end
@@ -132,40 +132,46 @@ Send {Enter}
132
132
  Sleep 2000
133
133
 
134
134
  Click right 380, 595 ; TEMP1 details
135
- Sleep 500
135
+ Sleep 1000
136
136
  Send {Tab}{Enter}
137
137
  WinWaitActive TEMP1
138
+ Sleep 1000
139
+ ; Leave this window open because we use it later
138
140
 
139
141
  WinActivate Packet Viewer
140
142
  WinWaitActive Packet Viewer
141
143
  Click right 380, 685 ; ARY details
142
- Sleep 500
144
+ Sleep 1000
143
145
  Send {Tab}{Enter}
144
146
  WinWaitActive ARY
147
+ Sleep 1000
148
+ Send {Enter} ; Close the window
145
149
 
146
150
  WinActivate Packet Viewer
147
151
  WinWaitActive Packet Viewer
148
152
  Click right 380, 735 ; COLLECT_TYPE details
149
- Sleep 500
153
+ Sleep 1000
150
154
  Send {Tab}{Enter}
151
155
  WinWaitActive COLLECT_TYPE
156
+ Sleep 1000
157
+ Send {Enter} ; Close the window
152
158
 
153
159
  WinActivate TEMP1
154
160
  WinWaitActive TEMP1
155
- Sleep 5000
161
+ Sleep 2000
156
162
 
157
163
  Run ruby.exe %A_ScriptDir%/ScriptRunner -w 600 -t 600
158
164
  Sleep 2000
159
165
  WinActivate Script Runner
160
- Sleep 500
166
+ Sleep 1000
161
167
  Send set_limits("INST","HEALTH_STATUS","TEMP1",-110,-105,105,110,-100,100){ENTER}
162
168
  Send set_limits_set("CUSTOM"){ENTER}
163
- Sleep 500
169
+ Sleep 1000
164
170
  Click 400, 88 ; Start
165
171
 
166
172
  WinActivate TEMP1
167
173
  WinWaitActive TEMP1
168
- Sleep 1000
174
+ Sleep 3000
169
175
 
170
176
  WinActivate Script Runner
171
177
  WinWaitActive Script Runner
@@ -13,6 +13,7 @@ Click 400 90 ; Start
13
13
  WinWaitActive Telemetry Viewer
14
14
  Sleep 6000
15
15
  WinActivate Script Runner
16
+ WinWaitActive Script Runner
16
17
  Sleep 6000
17
18
  Click 400 90 ; Go
18
19
  Sleep 500
@@ -22,12 +23,15 @@ Click 400 90 ; Go
22
23
  Sleep 3000
23
24
 
24
25
  WinActivate Telemetry Viewer
26
+ WinWaitActive Telemetry Viewer
25
27
  Sleep 1000
26
28
  Send ^q ; File Quit
27
29
  WinWaitActive Confirm
28
30
  Send {Enter}
31
+ Sleep 500
29
32
 
30
33
  WinActivate Script Runner
34
+ WinWaitActive Script Runner
31
35
  Sleep 2000
32
36
  Send ^q ; File Quit
33
37
  Sleep 500
data/cosmos.gemspec CHANGED
@@ -78,7 +78,7 @@ spec = Gem::Specification.new do |s|
78
78
  s.add_runtime_dependency 'opengl', '>= 0.7', '< 0.10'
79
79
  s.add_runtime_dependency 'snmp', '~> 1'
80
80
  s.add_runtime_dependency 'rubyzip', '~> 1.1'
81
- s.add_runtime_dependency 'qtbindings', '~> 4.8', '>= 4.8.5.2'
81
+ s.add_runtime_dependency 'qtbindings', '~> 4.8', '>= 4.8.6.2'
82
82
 
83
83
  # Development Dependencies
84
84
  s.add_development_dependency 'rspec', '~> 3'
data/data/crc.txt CHANGED
@@ -53,7 +53,7 @@
53
53
  "lib/cosmos/gui/dialogs/tlm_details_dialog.rb" 0x18B1DB71
54
54
  "lib/cosmos/gui/dialogs/calendar_dialog.rb" 0x688D3D3B
55
55
  "lib/cosmos/gui/qt_tool.rb" 0x840EF801
56
- "lib/cosmos/gui/utilities/script_module_gui.rb" 0x0FFA7712
56
+ "lib/cosmos/gui/utilities/script_module_gui.rb" 0xBFDD40DD
57
57
  "lib/cosmos/gui/utilities/screenshot.rb" 0x65F75371
58
58
  "lib/cosmos/gui/widgets/full_text_search_line_edit.rb" 0x7AAF694C
59
59
  "lib/cosmos/gui/widgets/realtime_button_bar.rb" 0xEB0CE858
@@ -83,10 +83,10 @@
83
83
  "lib/cosmos/gui/opengl/texture_mapped_sphere.rb" 0x12D03C0E
84
84
  "lib/cosmos/gui/opengl/gl_viewport.rb" 0x49CAD811
85
85
  "lib/cosmos/gui/opengl/opengl.rb" 0xBE4A454D
86
- "lib/cosmos/gui/choosers/integer_chooser.rb" 0xCC73344D
86
+ "lib/cosmos/gui/choosers/integer_chooser.rb" 0x0CCB26E3
87
87
  "lib/cosmos/gui/choosers/string_chooser.rb" 0x0A60837D
88
88
  "lib/cosmos/gui/choosers/file_chooser.rb" 0x575A4333
89
- "lib/cosmos/gui/choosers/telemetry_chooser.rb" 0x5E7D492D
89
+ "lib/cosmos/gui/choosers/telemetry_chooser.rb" 0x26375593
90
90
  "lib/cosmos/gui/choosers/combobox_chooser.rb" 0xAD5383D5
91
91
  "lib/cosmos/gui/choosers/float_chooser.rb" 0x23B2FA77
92
92
  "lib/cosmos/tools/script_runner/script_runner_config.rb" 0x1E46E8AA
@@ -104,7 +104,7 @@
104
104
  "lib/cosmos/tools/replay/replay_server.rb" 0x307A7329
105
105
  "lib/cosmos/tools/replay/replay.rb" 0xE9D02C47
106
106
  "lib/cosmos/tools/tlm_extractor/tlm_extractor_processor.rb" 0x2AA9C2F5
107
- "lib/cosmos/tools/tlm_extractor/tlm_extractor.rb" 0x4CC8203A
107
+ "lib/cosmos/tools/tlm_extractor/tlm_extractor.rb" 0xDA3CEF74
108
108
  "lib/cosmos/tools/tlm_extractor/tlm_extractor_config.rb" 0x7779DCEC
109
109
  "lib/cosmos/tools/tlm_extractor/text_item_chooser.rb" 0x587768C6
110
110
  "lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_config.rb" 0xA1C38662
@@ -137,10 +137,10 @@
137
137
  "lib/cosmos/tools/cmd_sender/cmd_sender.rb" 0xCE30B8BE
138
138
  "lib/cosmos/tools/cmd_sender/cmd_sender_item_delegate.rb" 0x8297CC9D
139
139
  "lib/cosmos/tools/cmd_sender/cmd_sender_text_edit.rb" 0xB192AF6E
140
- "lib/cosmos/tools/test_runner/test_runner_chooser.rb" 0x182F00C6
140
+ "lib/cosmos/tools/test_runner/test_runner_chooser.rb" 0xB2BC3115
141
141
  "lib/cosmos/tools/test_runner/results_writer.rb" 0x25101A48
142
- "lib/cosmos/tools/test_runner/test_runner.rb" 0x22470AF1
143
- "lib/cosmos/tools/test_runner/test.rb" 0xD2BE7F1C
142
+ "lib/cosmos/tools/test_runner/test_runner.rb" 0xA498E23D
143
+ "lib/cosmos/tools/test_runner/test.rb" 0x27942572
144
144
  "lib/cosmos/tools/tlm_grapher/plots/xy_plot.rb" 0x98F7712F
145
145
  "lib/cosmos/tools/tlm_grapher/plots/singlexy_plot.rb" 0xA01649EC
146
146
  "lib/cosmos/tools/tlm_grapher/plots/linegraph_plot.rb" 0xF0F6A243
@@ -158,7 +158,7 @@
158
158
  "lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_tab.rb" 0xD0AC7888
159
159
  "lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_config.rb" 0x08E6FA35
160
160
  "lib/cosmos/tools/tlm_grapher/tlm_grapher.rb" 0xBBFC2272
161
- "lib/cosmos/tools/tlm_grapher/tabbed_plots/overview_tabbed_plots.rb" 0x3D4DB4F2
161
+ "lib/cosmos/tools/tlm_grapher/tabbed_plots/overview_tabbed_plots.rb" 0xB0994B7A
162
162
  "lib/cosmos/tools/tlm_grapher/plot_editors/plot_editor.rb" 0x0C92BBB8
163
163
  "lib/cosmos/tools/tlm_grapher/plot_editors/xy_plot_editor.rb" 0x724D9469
164
164
  "lib/cosmos/tools/tlm_grapher/plot_editors/singlexy_plot_editor.rb" 0xA9B7CD4C
@@ -234,7 +234,7 @@
234
234
  "lib/cosmos/tools/tlm_viewer/tlm_viewer.rb" 0x1D2090F6
235
235
  "lib/cosmos/system.rb" 0x735DFB42
236
236
  "lib/cosmos/conversions.rb" 0x43679D05
237
- "lib/cosmos/version.rb" 0x23E689C5
237
+ "lib/cosmos/version.rb" 0x2945A487
238
238
  "lib/cosmos/core_ext.rb" 0x1951B346
239
239
  "lib/cosmos/interfaces.rb" 0x7E3EA326
240
240
  "lib/cosmos/processors.rb" 0x5241327D
@@ -37,7 +37,7 @@ module Cosmos
37
37
  if minimum_value or maximum_value
38
38
  validator = Qt::IntValidator.new(@integer_value)
39
39
  validator.setBottom(minimum_value) if minimum_value
40
- validator.setTop(minimum_value) if maximum_value
40
+ validator.setTop(maximum_value) if maximum_value
41
41
  @integer_value.setValidator(validator)
42
42
  end
43
43
  @callback_in_progress = false
@@ -102,6 +102,7 @@ module Cosmos
102
102
  @packet_layout.addWidget(@packet_combobox)
103
103
  @overall_frame.addLayout(@packet_layout)
104
104
 
105
+ @item_combobox = nil
105
106
  if choose_item
106
107
  # Item Selection
107
108
  @item_layout = Qt::HBoxLayout.new
@@ -142,7 +143,7 @@ module Cosmos
142
143
  current_packet_name = packet_name()
143
144
  current_item_name = item_name()
144
145
  update_targets()
145
- if current_target_name and current_packet_name and current_item_name
146
+ if current_target_name and current_packet_name and (current_item_name or !@item_combobox)
146
147
  begin
147
148
  set_item(current_target_name, current_packet_name, current_item_name)
148
149
  rescue Exception
@@ -168,7 +169,11 @@ module Cosmos
168
169
 
169
170
  # Returns the selected item name
170
171
  def item_name
171
- @item_combobox.text
172
+ if @item_combobox
173
+ @item_combobox.text
174
+ else
175
+ nil
176
+ end
172
177
  end
173
178
 
174
179
  # Returns the list of all target names in the target combobox
@@ -188,7 +193,9 @@ module Cosmos
188
193
  # Returns the list of all item names in the item combobox
189
194
  def item_names
190
195
  item_names_array = []
191
- @item_combobox.each {|item_text, item_data| item_names_array << item_text}
196
+ if @item_combobox
197
+ @item_combobox.each {|item_text, item_data| item_names_array << item_text}
198
+ end
192
199
  item_names_array
193
200
  end
194
201
 
@@ -229,17 +236,19 @@ module Cosmos
229
236
  set_packet(target_name, packet_name)
230
237
 
231
238
  # Select desired item
232
- index = 0
233
- found = false
234
- @item_combobox.each do |item_text, item_data|
235
- if item_name.upcase == item_text.upcase
236
- found = true
237
- break
239
+ if @item_combobox
240
+ index = 0
241
+ found = false
242
+ @item_combobox.each do |item_text, item_data|
243
+ if item_name.upcase == item_text.upcase
244
+ found = true
245
+ break
246
+ end
247
+ index += 1
238
248
  end
239
- index += 1
249
+ Kernel.raise "TelemetryChooser unknown item_name #{item_name}" unless found
250
+ @item_combobox.setCurrentIndex(index)
240
251
  end
241
- Kernel.raise "TelemetryChooser unknown item_name #{item_name}" unless found
242
- @item_combobox.setCurrentIndex(index)
243
252
  end
244
253
 
245
254
  protected
@@ -297,16 +306,18 @@ module Cosmos
297
306
  # Updates the item names based on a change
298
307
  def update_items
299
308
  return unless target_name() and packet_name()
300
- @item_combobox.clearItems()
301
- item_names = System.telemetry.item_names(target_name(), packet_name())
302
- item_names.sort!
303
- item_names.each do |name|
304
- @item_combobox.addItem(name)
305
- end
306
- if item_names.length > 20
307
- @item_combobox.setMaxVisibleItems(20)
308
- else
309
- @item_combobox.setMaxVisibleItems(item_names.length)
309
+ if @item_combobox
310
+ @item_combobox.clearItems()
311
+ item_names = System.telemetry.item_names(target_name(), packet_name())
312
+ item_names.sort!
313
+ item_names.each do |name|
314
+ @item_combobox.addItem(name)
315
+ end
316
+ if item_names.length > 20
317
+ @item_combobox.setMaxVisibleItems(20)
318
+ else
319
+ @item_combobox.setMaxVisibleItems(item_names.length)
320
+ end
310
321
  end
311
322
  end
312
323
 
@@ -61,13 +61,13 @@ module Cosmos
61
61
  return answer.to_s
62
62
  end
63
63
 
64
- def prompt_dialog_box(title, message, icon = Qt::MessageBox::NoIcon)
64
+ def prompt_dialog_box(title, message)
65
65
  result = nil
66
66
  Qt.execute_in_main_thread(true, 0.05) do
67
67
  window = nil
68
68
  window = get_cmd_tlm_gui_window() if get_cmd_tlm_gui_window()
69
69
  msg = Qt::MessageBox.new(window)
70
- msg.setIcon(icon)
70
+ msg.setIcon(Qt::MessageBox::Warning)
71
71
  msg.setText(message)
72
72
  msg.setWindowTitle(title)
73
73
  msg.setStandardButtons(Qt::MessageBox::Yes | Qt::MessageBox::No)
@@ -89,7 +89,7 @@ module Cosmos
89
89
  message = "Warning: Command #{target_name} #{cmd_name} is Hazardous. "
90
90
  message << "\n#{hazardous_description}\n" if hazardous_description
91
91
  message << "Send?"
92
- return prompt_dialog_box('Hazardous Command', message, Qt::MessageBox::Warning)
92
+ return prompt_dialog_box('Hazardous Command', message)
93
93
  end
94
94
 
95
95
  def prompt_for_script_abort
@@ -31,7 +31,7 @@ module Cosmos
31
31
  @total = 1
32
32
  end
33
33
 
34
- def total= (new_total)
34
+ def total=(new_total)
35
35
  if new_total <= 0
36
36
  @total = 1
37
37
  else
@@ -141,12 +141,12 @@ module Cosmos
141
141
  end
142
142
 
143
143
  # Run a specific test case
144
- def run_test_case (test_case)
144
+ def run_test_case(test_case)
145
145
  TestStatus.instance.status = "#{self.class} : #{test_case}"
146
146
  run_function(self, test_case)
147
147
  end
148
148
 
149
- def run_function (object, method_name)
149
+ def run_function(object, method_name)
150
150
  # Convert to a symbol to use as a method_name
151
151
  method_name = method_name.to_s.intern unless method_name.class == Symbol
152
152
 
@@ -265,7 +265,7 @@ module Cosmos
265
265
  num_tests
266
266
  end
267
267
 
268
- def self.puts (string)
268
+ def self.puts(string)
269
269
  $stdout.puts string
270
270
  if @@current_test_result
271
271
  @@current_test_result.message ||= ''
@@ -284,7 +284,7 @@ module Cosmos
284
284
  @plans = []
285
285
  end
286
286
 
287
- def <=> (other_test_suite)
287
+ def <=>(other_test_suite)
288
288
  self.name <=> other_test_suite.name
289
289
  end
290
290
 
@@ -298,35 +298,35 @@ module Cosmos
298
298
  end
299
299
 
300
300
  # Add a test to the suite
301
- def add_test (test_class)
301
+ def add_test(test_class)
302
302
  test_class = Object.const_get(test_class.to_s.intern) unless test_class.class == Class
303
303
  @tests[test_class] = test_class.new unless @tests[test_class]
304
304
  @plans << [:TEST, test_class, nil]
305
305
  end
306
306
 
307
307
  # Add a test case to the suite
308
- def add_test_case (test_class, test_case)
308
+ def add_test_case(test_class, test_case)
309
309
  test_class = Object.const_get(test_class.to_s.intern) unless test_class.class == Class
310
310
  @tests[test_class] = test_class.new unless @tests[test_class]
311
311
  @plans << [:TEST_CASE, test_class, test_case]
312
312
  end
313
313
 
314
314
  # Add a test setup to the suite
315
- def add_test_setup (test_class)
315
+ def add_test_setup(test_class)
316
316
  test_class = Object.const_get(test_class.to_s.intern) unless test_class.class == Class
317
317
  @tests[test_class] = test_class.new unless @tests[test_class]
318
318
  @plans << [:TEST_SETUP, test_class, nil]
319
319
  end
320
320
 
321
321
  # Add a test teardown to the suite
322
- def add_test_teardown (test_class)
322
+ def add_test_teardown(test_class)
323
323
  test_class = Object.const_get(test_class.to_s.intern) unless test_class.class == Class
324
324
  @tests[test_class] = test_class.new unless @tests[test_class]
325
325
  @plans << [:TEST_TEARDOWN, test_class, nil]
326
326
  end
327
327
 
328
328
  # Run all the tests
329
- def run (&block)
329
+ def run(&block)
330
330
  TestStatus.instance.total = get_num_tests()
331
331
  results = []
332
332
 
@@ -374,7 +374,7 @@ module Cosmos
374
374
  end
375
375
 
376
376
  # Run a specific test
377
- def run_test (test_class, internal = false, &block)
377
+ def run_test(test_class, internal = false, &block)
378
378
  # Determine if this test_class is in the plan and the number of tests associated with this test_class
379
379
  in_plan = false
380
380
  num_tests = 0
@@ -426,12 +426,12 @@ module Cosmos
426
426
  end
427
427
 
428
428
  # Run a specific test case
429
- def run_test_case (test_class, test_case, internal = false)
429
+ def run_test_case(test_class, test_case, internal = false)
430
430
  TestStatus.instance.total = 1 unless internal
431
431
  @tests[test_class].run_test_case(test_case)
432
432
  end
433
433
 
434
- def run_setup (internal = false)
434
+ def run_setup(internal = false)
435
435
  result = nil
436
436
  if self.class.method_defined?(:setup) and @tests.length > 0
437
437
  TestStatus.instance.total = 1 unless internal
@@ -441,7 +441,7 @@ module Cosmos
441
441
  result
442
442
  end
443
443
 
444
- def run_teardown (internal = false)
444
+ def run_teardown(internal = false)
445
445
  result = nil
446
446
  if self.class.method_defined?(:teardown) and @tests.length > 0
447
447
  TestStatus.instance.total = 1 unless internal
@@ -451,12 +451,12 @@ module Cosmos
451
451
  result
452
452
  end
453
453
 
454
- def run_test_setup (test_class, internal = false)
454
+ def run_test_setup(test_class, internal = false)
455
455
  TestStatus.instance.total = 1 unless internal
456
456
  @tests[test_class].run_setup
457
457
  end
458
458
 
459
- def run_test_teardown (test_class, internal = false)
459
+ def run_test_teardown(test_class, internal = false)
460
460
  TestStatus.instance.total = 1 unless internal
461
461
  @tests[test_class].run_teardown
462
462
  end
@@ -72,6 +72,12 @@ module Cosmos
72
72
  Splash.execute(self) do |splash|
73
73
  ConfigParser.splash = splash
74
74
  process_config(options.config_file)
75
+ if options.test_suite
76
+ Qt.execute_in_main_thread do
77
+ # Start the test and don't warn the user about their options
78
+ handle_start(options.test_suite, options.test_group, options.test_case, false)
79
+ end
80
+ end
75
81
  ConfigParser.splash = nil
76
82
  end
77
83
 
@@ -422,9 +428,11 @@ module Cosmos
422
428
  # Callbacks
423
429
  ###########################################
424
430
 
425
- def generic_handler(test_suite, test = nil, test_case = nil)
426
- return unless continue_without_pausing_on_errors?
427
- return unless continue_loop_testing?()
431
+ def generic_handler(test_suite, test = nil, test_case = nil, warnings = true)
432
+ if warnings
433
+ return unless continue_without_pausing_on_errors?
434
+ return unless continue_loop_testing?()
435
+ end
428
436
 
429
437
  # TODO: This can take a while depending on the number of tests and their
430
438
  # complexity. Consider making a progress bar for this.
@@ -439,8 +447,8 @@ module Cosmos
439
447
  end
440
448
  end
441
449
 
442
- def handle_start(test_suite, test = nil, test_case = nil)
443
- generic_handler(test_suite, test, test_case) do
450
+ def handle_start(test_suite, test = nil, test_case = nil, warnings = true)
451
+ generic_handler(test_suite, test, test_case, warnings) do
444
452
  if test_case
445
453
  @script_runner_frame.set_text("TestRunner.start(#{test_suite}, #{test}, '#{test_case}')", "#{test_suite}_#{test}_#{test_case}")
446
454
  elsif test
@@ -514,10 +522,12 @@ module Cosmos
514
522
  end
515
523
 
516
524
  def handle_error(script_runner_frame)
517
- if @continue_test_case_after_error.isChecked()
518
- script_runner_frame.enable_retry()
519
- else
520
- script_runner_frame.disable_retry()
525
+ Qt.execute_in_main_thread(true) do
526
+ if @@settings['Continue Test Case after Error']
527
+ script_runner_frame.enable_retry()
528
+ else
529
+ script_runner_frame.disable_retry()
530
+ end
521
531
  end
522
532
  end
523
533
 
@@ -1152,6 +1162,23 @@ module Cosmos
1152
1162
  option_parser.on("-s", "--server FILE", "Use the specified server configuration file for disconnect mode") do |arg|
1153
1163
  options.server_config_file = arg
1154
1164
  end
1165
+ option_parser.on("--suite SUITE", "Start the specified test suite.") do |arg|
1166
+ options.test_suite = arg
1167
+ end
1168
+ option_parser.on("--group GROUP", "Start the specified test group. Requires the --suite option.") do |arg|
1169
+ unless options.test_suite
1170
+ puts option_parser
1171
+ exit
1172
+ end
1173
+ options.test_group = arg
1174
+ end
1175
+ option_parser.on("--case CASE", "Start the specified test case. Requires the --suite and --group options.") do |arg|
1176
+ unless options.test_suite && options.test_group
1177
+ puts option_parser
1178
+ exit
1179
+ end
1180
+ options.test_case = arg
1181
+ end
1155
1182
  end
1156
1183
 
1157
1184
  super(option_parser, options)
@@ -12,10 +12,13 @@ require 'cosmos'
12
12
 
13
13
  module Cosmos
14
14
 
15
- # TestRunnerChooser class
16
- #
17
- # This class implements the TestRunnerChooser
18
- #
15
+ # Qt Widget used by the Cosmos::TestRunner application.
16
+ # It constructs a list of Test Suites, Test Groups, and
17
+ # Test Cases in combo box choosers. All combo boxes are folowed by
18
+ # Start buttons and Suites and Groups also have Setup and Teardown
19
+ # buttons. When a new Test Suite is choosen the Test Group and
20
+ # Test Case combo boxes update. When a Test Group is changed the
21
+ # Test Case combo box is updated.
19
22
  class TestRunnerChooser < Qt::Widget
20
23
 
21
24
  # Width of the button in the Combobox
@@ -510,7 +510,9 @@ module Cosmos
510
510
  @input_filenames = @packet_log_frame.filenames.sort
511
511
  @batch_filenames = []
512
512
  output_extension = '.txt'
513
+ batch_name = nil
513
514
  if @batch_mode_check.checked?
515
+ batch_name = @batch_name_entry.text
514
516
  @batch_filenames_entry.each {|list_item| @batch_filenames << list_item.text}
515
517
  if @packet_log_frame.output_filename_filter == Cosmos::CSV_FILE_PATTERN
516
518
  output_extension = '.csv'
@@ -539,7 +541,7 @@ module Cosmos
539
541
  process_args = [@input_filenames, [@tlm_extractor_config], @packet_log_frame.time_start, @packet_log_frame.time_end]
540
542
  else
541
543
  process_method = :process_batch
542
- process_args = [@batch_name_entry.text, @input_filenames, @log_dir, output_extension, @batch_filenames, @packet_log_frame.time_start, @packet_log_frame.time_end]
544
+ process_args = [batch_name, @input_filenames, @log_dir, output_extension, @batch_filenames, @packet_log_frame.time_start, @packet_log_frame.time_end]
543
545
  end
544
546
 
545
547
  @tlm_extractor_processor.send(process_method, *process_args) do |input_file_index, packet_count, file_progress|
@@ -269,10 +269,13 @@ module Cosmos
269
269
 
270
270
  # Returns the index of the current tab or nil if no tabs exist
271
271
  def current_tab_index
272
+ tab_index = -1
272
273
  unless @tabbed_plots_config.tabs.empty?
273
- tab_index = @tab_book.currentIndex
274
- return tab_index if tab_index >= 0
274
+ Qt.execute_in_main_thread(true) do
275
+ tab_index = @tab_book.currentIndex
276
+ end
275
277
  end
278
+ return tab_index if tab_index >= 0
276
279
  nil
277
280
  end # def current_tab_index
278
281
 
@@ -444,14 +447,16 @@ module Cosmos
444
447
 
445
448
  # Exports data objects on a plot - defaults to selected plot on the current tab
446
449
  def export_plot(filename, progress, tab_index = nil, plot_index = nil)
447
- # Select the current tab by default
448
- tab_index = current_tab_index() unless tab_index
450
+ Qt.execute_in_main_thread(true) do
451
+ # Select the current tab by default
452
+ tab_index = current_tab_index() unless tab_index
449
453
 
450
- # Select selected plot by default
451
- plot_index = selected_plot_index(tab_index) if tab_index and not plot_index
452
- unless plot_index
453
- Qt::MessageBox.information(self, 'Information', 'Please select a plot')
454
- return
454
+ # Select selected plot by default
455
+ plot_index = selected_plot_index(tab_index) if tab_index and not plot_index
456
+ unless plot_index
457
+ Qt::MessageBox.information(self, 'Information', 'Please select a plot')
458
+ return
459
+ end
455
460
  end
456
461
 
457
462
  export_data_objects(filename, progress, tab_index, plot_index)
@@ -486,12 +491,18 @@ module Cosmos
486
491
  # Select the current tab by default
487
492
  tab_index = current_tab_index() unless tab_index
488
493
 
494
+ plot_index = nil
489
495
  if tab_index
490
- @tabbed_plots_config.tabs[tab_index].plots.each_with_index do |plot, index|
491
- return index if plot.gui_object.selected?
496
+ Qt.execute_in_main_thread(true) do
497
+ @tabbed_plots_config.tabs[tab_index].plots.each_with_index do |plot, index|
498
+ if plot.gui_object.selected?
499
+ plot_index = index
500
+ break
501
+ end
502
+ end
492
503
  end
493
504
  end
494
- nil
505
+ return plot_index
495
506
  end # def selected_plot_index
496
507
 
497
508
  # Indicates if the plot has any data objects
@@ -703,9 +714,11 @@ module Cosmos
703
714
  def selected_data_object_indexes
704
715
  selected = []
705
716
  index = 0
706
- @data_object_list.each do |list_item|
707
- selected << index if list_item.selected? and @data_object_list.item(index).text != 'No Plot Selected'
708
- index += 1
717
+ Qt.execute_in_main_thread(true) do
718
+ @data_object_list.each do |list_item|
719
+ selected << index if list_item.selected? and @data_object_list.item(index).text != 'No Plot Selected'
720
+ index += 1
721
+ end
709
722
  end
710
723
  selected
711
724
  end # def selected_data_object_indexes
@@ -1,12 +1,12 @@
1
1
  # encoding: ascii-8bit
2
2
 
3
- COSMOS_VERSION = '3.4.1'
3
+ COSMOS_VERSION = '3.4.2'
4
4
  module Cosmos
5
5
  module Version
6
6
  MAJOR = '3'
7
7
  MINOR = '4'
8
- PATCH = '1'
9
- BUILD = '2ce089801e159a76caad0b207042e289c6ab3367'
8
+ PATCH = '2'
9
+ BUILD = 'd7b8067e652f11393629c9e8e1708cb846c5d233'
10
10
  end
11
- VERSION = '3.4.1'
11
+ VERSION = '3.4.2'
12
12
  end
data/run_gui_tests.bat CHANGED
@@ -17,6 +17,8 @@ call bundle exec ruby autohotkey\tools\TestRunnerAHK -w 800 -t 800
17
17
  call bundle exec ruby autohotkey\tools\TestRunnerAHK2 -w 800 -t 800 -c test_runner2.txt
18
18
  call bundle exec ruby autohotkey\tools\TestRunnerAHK3 -w 800 -t 800 -c test_runner3.txt
19
19
  call bundle exec ruby autohotkey\tools\TestRunnerAHK4 -w 800 -t 800 -c test_runner4.txt
20
+ call bundle exec ruby autohotkey\tools\TestRunnerAHK5 -w 800 -t 800 --suite ExampleTestSuite --group ExampleTest --case test_3xx
21
+ call bundle exec ruby autohotkey\tools\TestRunnerAHK6 --group ExampleTest --case test_3xx
20
22
  call bundle exec ruby autohotkey\tools\TlmGrapherAHK -w 800 -t 800
21
23
  call bundle exec ruby autohotkey\tools\TlmGrapherAHK2 -s -c test2.txt -w 1200 -t 800
22
24
  call bundle exec ruby autohotkey\tools\TlmGrapherAHK3 -i 'INST HEALTH_STATUS TEMP1'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cosmos
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.1
4
+ version: 3.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Melton
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-05-01 00:00:00.000000000 Z
12
+ date: 2015-05-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -216,7 +216,7 @@ dependencies:
216
216
  version: '4.8'
217
217
  - - ">="
218
218
  - !ruby/object:Gem::Version
219
- version: 4.8.5.2
219
+ version: 4.8.6.2
220
220
  type: :runtime
221
221
  prerelease: false
222
222
  version_requirements: !ruby/object:Gem::Requirement
@@ -226,7 +226,7 @@ dependencies:
226
226
  version: '4.8'
227
227
  - - ">="
228
228
  - !ruby/object:Gem::Version
229
- version: 4.8.5.2
229
+ version: 4.8.6.2
230
230
  - !ruby/object:Gem::Dependency
231
231
  name: rspec
232
232
  requirement: !ruby/object:Gem::Requirement