moto 0.8.6 → 0.8.7

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: 27bed5f3e97e0b71665d36998dc9398cd93709a1
4
- data.tar.gz: 901dfb04c8ed8b0a652c68345709439c672b46a6
3
+ metadata.gz: 27cd6f4b74db2d52a13daae5accff2c8ced922c8
4
+ data.tar.gz: 7663285aa8ed492aca2f6b68d84945ba99f08c97
5
5
  SHA512:
6
- metadata.gz: 32d5858cd9b538e114d1041750e6e378d5444d3c057ebb186a0505cd01381184879e5e7eb2644c9309aa95deebdd2469380dceb6b2d15088254179f3ce850b5e
7
- data.tar.gz: 674b28b79b55ca89d25e2bddee8f7fc59cfad7b49abac35410296ef94ab4622858471869081aa511573f70e732732bd448dbd92869f5ca344970d8c54caa7820
6
+ metadata.gz: 5a3b7fc313e549842ed32512f3561ca1139c46afa354f114347ba898331fabd97bdaf73547b373eb23ffcc51d14fa8b8a406cf8f45cc351cb55a0e7a13502e68
7
+ data.tar.gz: 8aa3f30d4153fddd5cf10beb930d385607fba3b27167afe502620f8981743c4bee7db2acdec48899e125dbaaccedd630273b9d29edda4791cbd81f9206543b60
data/lib/cli.rb CHANGED
@@ -109,7 +109,7 @@ module Moto
109
109
 
110
110
  test_reporter = Moto::Reporting::TestReporter.new(argv[:listeners], argv[:name])
111
111
 
112
- runner = Moto::Runner::TestRunner.new(test_paths_absolute, test_reporter)
112
+ runner = Moto::Runner::TestRunner.new(test_paths_absolute, test_reporter, argv[:stop_on])
113
113
  runner.run
114
114
  end
115
115
 
data/lib/parser.rb CHANGED
@@ -36,6 +36,7 @@ module Moto
36
36
  options = {}
37
37
  options[:listeners] = []
38
38
  options[:name] = ''
39
+ options[:stop_on] = {error: false, fail: false, skip: false}
39
40
 
40
41
  # Parse arguments
41
42
  OptionParser.new do |opts|
@@ -46,6 +47,9 @@ module Moto
46
47
  opts.on('-e', '--environment Environment') { |v| options[:environment] = v }
47
48
  opts.on('-n', '--name Name') { |v| options[:name] = v }
48
49
  opts.on('-c', '--config Config') { |v| options[:config_name] = v }
50
+ opts.on('--stop-on-error') { options[:stop_on][:error] = true }
51
+ opts.on('--stop-on-fail') { options[:stop_on][:fail] = true }
52
+ opts.on('--stop-on-skip') { options[:stop_on][:skip] = true }
49
53
  end.parse!
50
54
 
51
55
  if options[:name].empty?
@@ -120,6 +124,9 @@ module Moto
120
124
  -e, --environment Mandatory environment. Environment constants and tests parametrized in certain way depend on this.
121
125
  -c, --config Name of the config, without extension, to be loaded from MotoApp/config/CONFIG_NAME.rb
122
126
  Default: moto (which loads: MotoApp/config/moto.rb)
127
+ --stop-on-error Moto will stop test execution when an error is encountered in test results
128
+ --stop-on-fail Moto will stop test execution when a failure is encountered in test results
129
+ --stop-on-skip Moto will stop test execution when a skip is encountered in test results
123
130
 
124
131
 
125
132
  moto generate:
@@ -93,6 +93,31 @@ module Moto
93
93
  when Moto::Test::Result::SKIPPED then return 'SKIPPED'
94
94
  end
95
95
  end
96
+
97
+
98
+ # Inform about presence o errors/failures/skipped tests in current test run as a bitmap
99
+ # errors present: 0b100 & status_as_bitmap
100
+ # fails present: 0b010 & status_as_bitmap
101
+ # skips present: 0b001 & status_as_bitmap
102
+ # all passed: status_as_bitmap == 0
103
+ def bitmap
104
+ status = 0
105
+
106
+ if tests_error.length > 0
107
+ status += 0b100
108
+ end
109
+
110
+ if tests_failed.length > 0
111
+ status += 0b010
112
+ end
113
+
114
+ if tests_skipped.length > 0
115
+ status += 0b001
116
+ end
117
+
118
+ status
119
+ end
120
+
96
121
  end
97
122
  end
98
123
  end
@@ -1,12 +1,14 @@
1
1
  require_relative 'run_status'
2
2
  require_relative 'listeners/base'
3
- require_relative 'listeners/kernel_code'
4
3
 
5
4
  module Moto
6
5
  module Reporting
7
6
 
8
7
  # Manages reporting test and run status' to attached listeners
9
8
  class TestReporter
9
+
10
+ attr_reader :run_status
11
+
10
12
  # @param [Array] listeners An array of strings, which represent qualified names of classes (listeners) that will be instantiated.
11
13
  # empty array is passed then :default_listeners will be taken from config
12
14
  # @param [String] custom_run_name Optional, to be passed to listeners during creation
@@ -25,9 +27,6 @@ module Moto
25
27
  @listeners = []
26
28
  @custom_run_name = custom_run_name
27
29
  listeners.each { |l| add_listener(l) }
28
-
29
- # Special listener used to generate code for Kernel.exit(code)
30
- add_listener(Moto::Reporting::Listeners::KernelCode)
31
30
  end
32
31
 
33
32
  # Adds a listener to the list.
@@ -1,5 +1,4 @@
1
1
  require_relative '../reporting/test_reporter'
2
- require_relative '../reporting/listeners/kernel_code'
3
2
  require_relative './test_provider'
4
3
 
5
4
  module Moto
@@ -8,9 +7,16 @@ module Moto
8
7
 
9
8
  attr_reader :test_reporter
10
9
 
11
- def initialize(test_paths_absolute, test_reporter)
10
+ # @param [Array] test_paths_absolute Absolute paths to files with tests
11
+ # @param [Moto::Reporting::TestReporter] test_reporter Reporter of test/run statuses that communicates with external status listeners
12
+ # @param [Hash] stop_conditions Describe when TestRunner should abnormally stop its execution
13
+ # :error [Boolean]
14
+ # :fail [Boolean]
15
+ # :skip [Boolean]
16
+ def initialize(test_paths_absolute, test_reporter, stop_conditions)
12
17
  @test_paths_absolute = test_paths_absolute
13
18
  @test_reporter = test_reporter
19
+ @stop_conditions = stop_conditions
14
20
  end
15
21
 
16
22
  def run
@@ -41,18 +47,23 @@ module Moto
41
47
  end
42
48
 
43
49
  # Waiting for all threads to run out of work so we can end the application
50
+ # or abonormal termination to be triggered based on options provided by the user
44
51
  loop do
45
- if test_provider.num_waiting == threads_max
52
+ run_status = @test_reporter.run_status
53
+ if (test_provider.num_waiting == threads_max) ||
54
+ (@stop_conditions[:error] && run_status.tests_error.length > 0) ||
55
+ (@stop_conditions[:fail] && run_status.tests_failed.length > 0) ||
56
+ (@stop_conditions[:skip] && run_status.tests_skipped.length > 0)
46
57
  break
47
58
  end
48
59
 
49
- sleep 1
60
+ sleep 2
50
61
  end
51
62
 
52
63
  @test_reporter.report_end_run
53
64
 
54
- # Exit application with appropriate code generated by KernelCode listener
55
- Kernel.exit(Moto::Reporting::Listeners::KernelCode.code)
65
+ # Exit application with code that represents status of test run
66
+ Kernel.exit(@test_reporter.run_status.bitmap)
56
67
  end
57
68
 
58
69
  end
data/lib/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Moto
2
- VERSION = '0.8.6'
2
+ VERSION = '0.8.7'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: moto
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.6
4
+ version: 0.8.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bartek Wilczek
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2016-09-09 00:00:00.000000000 Z
14
+ date: 2016-09-12 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: activesupport
@@ -98,7 +98,6 @@ files:
98
98
  - lib/reporting/listeners/console.rb
99
99
  - lib/reporting/listeners/console_dots.rb
100
100
  - lib/reporting/listeners/junit_xml.rb
101
- - lib/reporting/listeners/kernel_code.rb
102
101
  - lib/reporting/listeners/webui.rb
103
102
  - lib/reporting/run_status.rb
104
103
  - lib/reporting/test_reporter.rb
@@ -1,33 +0,0 @@
1
- module Moto
2
- module Reporting
3
- module Listeners
4
- class KernelCode < Base
5
-
6
- def self.code
7
- @@code
8
- end
9
-
10
- # Invoked when whole batch of tests ends
11
- def end_run(run_status)
12
-
13
- code = 0
14
-
15
- if run_status.tests_error.length > 0
16
- code += 0b100
17
- end
18
-
19
- if run_status.tests_failed.length > 0
20
- code += 0b010
21
- end
22
-
23
- if run_status.tests_skipped.length > 0
24
- code += 0b001
25
- end
26
-
27
- @@code = code
28
- end
29
-
30
- end
31
- end
32
- end
33
- end