mini_autobot 0.0.8 → 0.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dacd23d8eebdf65fb0549156286f4460824205bd
4
- data.tar.gz: d94478218460de224b13010fd35ee19618e1f2f0
3
+ metadata.gz: cd9007c1c01a6cdd18d0ef7c29b0c146d2154ff4
4
+ data.tar.gz: 9bcc8158c3ffca7d0f808bb06900aa6068cf7e11
5
5
  SHA512:
6
- metadata.gz: b299c7dcced9df5673e64c56a8414146999e9c7a014294b8135f37e011ef1ee40445b96baaff278b2c92c7bd21bf54fecfe22d02424d43c7b45f6782bcb7c975
7
- data.tar.gz: aae3e5b7633174273c964b7a4d3c99ea1790b91611a2270741f6bb595f5a3b8d19e04d5bdcf3aeca64e4bff889fe0d5c92eae18b4d0775117dceef94da36926b
6
+ metadata.gz: 206b9e98825f2df89f2546e9d67eb2c5e6fad2dfaf34f8b7678d8c912be820e6fee8875b0c08934fcaea9f47aa43e88a91694f964e57a9c492cd3dcf3e077e91
7
+ data.tar.gz: 910b3d02d88b7d2b8f25983d47205e501b58b86336d649473de5e634031020505291992289d728aa3591672686180a9a88ad2e6bfc8d534b34ae1d2010ca2d5f
@@ -3,8 +3,9 @@ module MiniAutobot
3
3
  # An MiniAutobot-specific test case container, which extends the default ones,
4
4
  # adds convenience helper methods, and manages page objects automatically.
5
5
  class TestCase < Minitest::Test
6
+ @@selected_methods = []
7
+ @@runnables_count = 0
6
8
  @@regression_suite = Array.new
7
- @@already_executed = false
8
9
  @@serials = Array.new
9
10
  @@test_suite_data = if File.exist?(MiniAutobot.root.join("config/mini_autobot/test_suite.yml"))
10
11
  YAML.load_file(MiniAutobot.root.join("config/mini_autobot/test_suite.yml"))
@@ -73,27 +74,50 @@ module MiniAutobot
73
74
 
74
75
  # Filter out anything not matching our tag selection, if any.
75
76
  #
77
+ # If it's parallel run,
78
+ # only add filtered methods from each runnable to a list of to run methods,
79
+ # instead of running them one by one right away,
80
+ # and finally when all runnable methods are traversed, call parallel to run that list of methods.
81
+ #
76
82
  # @return [Enumerable<Symbol>] the methods marked runnable
77
83
  def runnable_methods
78
84
  methods = super
79
85
  selected = MiniAutobot.settings.tags
80
86
 
87
+ filtered_methods = filter_methods(methods, selected)
88
+
81
89
  if MiniAutobot.settings.parallel
82
- # check this because I don't know why this runnable_methods gets called three times consecutively when one starts running tests
83
- if @@already_executed
84
- exit
90
+ unless filtered_methods.empty?
91
+ if selected.nil? || selected.empty?
92
+ @@selected_methods = @@regression_suite
93
+ else
94
+ methods_to_add = filtered_methods.map { |method| method.to_sym if @@regression_suite.include?(method.to_sym) }
95
+ @@selected_methods += methods_to_add
96
+ end
85
97
  end
86
98
 
87
- parallel = Parallel.new(MiniAutobot.settings.parallel, @@regression_suite)
88
- parallel.run_in_parallel!
99
+ @@runnables_count += 1
100
+ mini_autobot_runnables = Minitest::Runnable.runnables - [Minitest::Test, Minitest::Unit::TestCase]
101
+
102
+ if @@runnables_count == mini_autobot_runnables.size
103
+ parallel = Parallel.new(MiniAutobot.settings.parallel, @@selected_methods)
104
+ parallel.run_in_parallel!
105
+ end
89
106
 
90
- @@already_executed = true
107
+ return [] # no test will run
108
+ else
109
+ filtered_methods
91
110
  end
111
+ end
92
112
 
113
+ # Filter methods in a runnable based on our tag selection
114
+ def filter_methods(methods, selected)
93
115
  # If no tags are selected, run all tests
94
- return methods if selected.nil? || selected.empty?
116
+ if selected.nil? || selected.empty?
117
+ return methods
118
+ end
95
119
 
96
- return methods.select do |method|
120
+ selected_methods = methods.select do |method|
97
121
  # If the method's tags match any of the tag sets, allow it to run
98
122
  selected.any? do |tag_set|
99
123
  # Retrieve the tags for that method
@@ -111,6 +135,8 @@ module MiniAutobot
111
135
  end
112
136
  end
113
137
  end
138
+
139
+ selected_methods
114
140
  end
115
141
 
116
142
  # Install a setup method that runs before every test.
@@ -1,3 +1,3 @@
1
1
  module MiniAutobot
2
- VERSION = '0.0.8'
2
+ VERSION = '0.1.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mini_autobot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ripta Pasay
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2015-09-02 00:00:00.000000000 Z
13
+ date: 2015-09-18 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
@@ -291,7 +291,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
291
291
  version: '0'
292
292
  requirements: []
293
293
  rubyforge_project:
294
- rubygems_version: 2.4.6
294
+ rubygems_version: 2.2.2
295
295
  signing_key:
296
296
  specification_version: 4
297
297
  summary: Web automation framework on minitest, selenium webdriver, and page objects.