moto 0.9.11 → 0.9.17
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 +4 -4
- data/bin/moto +10 -2
- data/lib/empty_listener.rb +16 -16
- data/lib/exceptions/{moto.rb → base.rb} +1 -1
- data/lib/exceptions/test_forced_failure.rb +3 -1
- data/lib/exceptions/test_forced_passed.rb +3 -1
- data/lib/exceptions/test_skipped.rb +3 -1
- data/lib/modes/generate/test_template_generator.rb +82 -0
- data/lib/modes/mode_selector.rb +78 -0
- data/lib/modes/run/dry_runner.rb +40 -0
- data/lib/modes/run/test_provider.rb +71 -0
- data/lib/modes/run/test_runner.rb +74 -0
- data/lib/modes/run/thread_context.rb +81 -0
- data/lib/modes/validate/test_validator.rb +87 -0
- data/lib/parameter_parser.rb +282 -0
- data/lib/reporting/test_reporter.rb +0 -1
- data/lib/test/base.rb +0 -2
- data/lib/{runner/test_generator.rb → test/generator.rb} +26 -23
- data/lib/test/metadata.rb +1 -1
- data/lib/test/metadata_generator.rb +78 -0
- data/lib/test/status.rb +0 -3
- data/lib/version.rb +1 -1
- metadata +14 -14
- data/lib/app_generator.rb +0 -80
- data/lib/cli.rb +0 -120
- data/lib/initializer.rb +0 -7
- data/lib/parser.rb +0 -182
- data/lib/reporting/listeners/webui_deprecated.rb +0 -127
- data/lib/runner/dry_runner.rb +0 -37
- data/lib/runner/test_provider.rb +0 -68
- data/lib/runner/test_runner.rb +0 -71
- data/lib/runner/thread_context.rb +0 -77
data/lib/test/base.rb
CHANGED
|
@@ -28,7 +28,6 @@ module Moto
|
|
|
28
28
|
|
|
29
29
|
# Initializes test to be executed with specified params and environment
|
|
30
30
|
def init(params_path)
|
|
31
|
-
@env = Moto::Lib::Config.environment
|
|
32
31
|
@params = []
|
|
33
32
|
@params_path = params_path
|
|
34
33
|
|
|
@@ -40,7 +39,6 @@ module Moto
|
|
|
40
39
|
@status.test_class_name = self.class.name
|
|
41
40
|
@status.display_name = @status.test_class_name.split('::')[2..-2].join(' > ')
|
|
42
41
|
@status.display_name += "_#{@params_path.split('/')[-1].chomp('.param')}" if @params_path
|
|
43
|
-
@status.env = Moto::Lib::Config.environment
|
|
44
42
|
end
|
|
45
43
|
|
|
46
44
|
# Setter for :log_path
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
+
require_relative 'base'
|
|
2
|
+
|
|
1
3
|
module MotoApp
|
|
2
4
|
module Tests
|
|
3
5
|
end
|
|
4
6
|
end
|
|
5
7
|
|
|
6
8
|
module Moto
|
|
7
|
-
module
|
|
8
|
-
class
|
|
9
|
+
module Test
|
|
10
|
+
class Generator
|
|
9
11
|
|
|
10
12
|
def initialize
|
|
11
13
|
@internal_counter = 0
|
|
@@ -16,10 +18,11 @@ module Moto
|
|
|
16
18
|
# Example: A test with a config file and 2 sets of parameters there will be returned as array with two elements.
|
|
17
19
|
#
|
|
18
20
|
# @param [Moto::Test::Metadata] test_metadata Metadata that describes test to be instantiated
|
|
21
|
+
# @param [Integer] variants_limit Limit how many params will be parsed per test. Default: 0 (no limit)
|
|
19
22
|
# @return [Array] An array of [Moto::Test::Base] descendants
|
|
20
23
|
# each entry is a Test with set of parameters injected
|
|
21
|
-
def get_test_with_variants(test_metadata)
|
|
22
|
-
variantize(test_metadata)
|
|
24
|
+
def get_test_with_variants(test_metadata, variants_limit = 0)
|
|
25
|
+
variantize(test_metadata, variants_limit)
|
|
23
26
|
end
|
|
24
27
|
|
|
25
28
|
# Converts test's path to an array of Moto::Base::Test instances that represent all test variants (params)
|
|
@@ -29,36 +32,36 @@ module Moto
|
|
|
29
32
|
# they must be required prior to that. That might be done in overloaded app's initializer.
|
|
30
33
|
#
|
|
31
34
|
# @param [Moto::Test::Metadata] test_metadata Metadata that describes test to be instantiated, contains path to test
|
|
35
|
+
# @param [Integer] variants_limit Limit how many params will be parsed per test.
|
|
32
36
|
# @return [Array] array of already initialized test's variants
|
|
33
|
-
def variantize(test_metadata)
|
|
37
|
+
def variantize(test_metadata, variants_limit)
|
|
34
38
|
variants = []
|
|
35
39
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
40
|
+
# TODO CHANGED TEMPORARY
|
|
41
|
+
#params_path = test_path_absolute.sub(/\.rb\z/, '')
|
|
42
|
+
params_directory = File.dirname(test_metadata.test_path).to_s + '/params/**'
|
|
43
|
+
param_files_paths = Dir.glob(params_directory)
|
|
44
|
+
param_files_paths = [nil] if param_files_paths.empty?
|
|
41
45
|
|
|
42
|
-
|
|
46
|
+
param_files_paths.each do |params_path|
|
|
43
47
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
# end
|
|
48
|
+
# TODO Name/logname/displayname
|
|
49
|
+
test = generate(test_metadata)
|
|
50
|
+
test.init(params_path)
|
|
51
|
+
test.log_path = "#{File.dirname(test_metadata.test_path).to_s}/logs/#{test.name.gsub(/[^0-9A-Za-z.\-]/, '_')}.log"
|
|
52
|
+
@internal_counter += 1
|
|
50
53
|
|
|
51
|
-
|
|
52
|
-
test = generate(test_metadata)
|
|
53
|
-
test.init(params_path)
|
|
54
|
-
test.log_path = "#{File.dirname(test_metadata.test_path).to_s}/logs/#{test.name.gsub(/[^0-9A-Za-z.\-]/, '_')}.log"
|
|
55
|
-
@internal_counter += 1
|
|
54
|
+
variants << test
|
|
56
55
|
|
|
57
|
-
|
|
56
|
+
# Break if limit of parametrized variants has been reached
|
|
57
|
+
if variants_limit > 0 && variants.length == variants_limit
|
|
58
|
+
break
|
|
58
59
|
end
|
|
60
|
+
end
|
|
59
61
|
|
|
60
62
|
variants
|
|
61
63
|
end
|
|
64
|
+
|
|
62
65
|
private :variantize
|
|
63
66
|
|
|
64
67
|
# Generates test instances
|
data/lib/test/metadata.rb
CHANGED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
require 'logger'
|
|
2
|
+
require 'pp'
|
|
3
|
+
require 'yaml'
|
|
4
|
+
|
|
5
|
+
module MotoApp
|
|
6
|
+
DIR = Dir.pwd
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
require_relative 'metadata'
|
|
10
|
+
require_relative '../version'
|
|
11
|
+
require_relative '../config'
|
|
12
|
+
|
|
13
|
+
module Moto
|
|
14
|
+
module Test
|
|
15
|
+
class MetadataGenerator
|
|
16
|
+
|
|
17
|
+
def self.generate(directories = nil, tags = nil, filters = nil)
|
|
18
|
+
tests_metadata = []
|
|
19
|
+
|
|
20
|
+
if directories
|
|
21
|
+
directories.each do |directory|
|
|
22
|
+
Dir.glob("#{MotoApp::DIR}/tests/#{directory}/**/*.rb").each do |test_path|
|
|
23
|
+
tests_metadata << Moto::Test::Metadata.new(test_path)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
if tags
|
|
29
|
+
tests_total = Dir.glob("#{MotoApp::DIR}/tests/**/*.rb")
|
|
30
|
+
tests_total.each do |test_path|
|
|
31
|
+
|
|
32
|
+
metadata = Moto::Test::Metadata.new(test_path)
|
|
33
|
+
tests_metadata << metadata unless (tags & metadata.tags).empty?
|
|
34
|
+
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Make sure there are no repetitions in gathered set
|
|
39
|
+
tests_metadata.uniq! {|metadata| metadata.test_path}
|
|
40
|
+
|
|
41
|
+
# Filter tests by provied tags
|
|
42
|
+
# - test must contain ALL tags specified with -f param
|
|
43
|
+
# - use ~ for negation
|
|
44
|
+
# - test may contain other tags
|
|
45
|
+
if filters
|
|
46
|
+
filters.each do |filter|
|
|
47
|
+
filtered = tests_metadata.select do |metadata|
|
|
48
|
+
next if metadata.tags.empty?
|
|
49
|
+
filter_matches_any_tag?(filter, metadata.tags) || filter_negation_matches_none_tag?(filter, metadata.tags)
|
|
50
|
+
end
|
|
51
|
+
tests_metadata &= filtered
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# TODO: THIS SHOULDN'T BE HERE - REMNANT OF THE PAST
|
|
56
|
+
# Requires custom initializer if provided by application that uses Moto
|
|
57
|
+
if File.exists?("#{MotoApp::DIR}/lib/initializer.rb")
|
|
58
|
+
require("#{MotoApp::DIR}/lib/initializer.rb")
|
|
59
|
+
initializer = MotoApp::Lib::Initializer.new
|
|
60
|
+
initializer.init
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
return tests_metadata
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def self.filter_matches_any_tag?(filter, tags)
|
|
67
|
+
!filter.start_with?('~') && tags.any? {|tag| filter == tag}
|
|
68
|
+
end
|
|
69
|
+
private_class_method :filter_matches_any_tag?
|
|
70
|
+
|
|
71
|
+
def self.filter_negation_matches_none_tag?(filter, tags)
|
|
72
|
+
filter.start_with?('~') && tags.none? {|tag| filter[1..-1] == tag}
|
|
73
|
+
end
|
|
74
|
+
private_class_method :filter_negation_matches_none_tag?
|
|
75
|
+
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
data/lib/test/status.rb
CHANGED
|
@@ -20,9 +20,6 @@ module Moto
|
|
|
20
20
|
# Array of [Moto::Test::Result], each item represents a result of a single attempt to pass the test
|
|
21
21
|
attr_reader :results
|
|
22
22
|
|
|
23
|
-
# Environment on which test was run
|
|
24
|
-
attr_accessor :env
|
|
25
|
-
|
|
26
23
|
# Set of params on which test was based
|
|
27
24
|
attr_accessor :params
|
|
28
25
|
|
data/lib/version.rb
CHANGED
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.9.
|
|
4
|
+
version: 0.9.17
|
|
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: 2017-
|
|
14
|
+
date: 2017-08-17 00:00:00.000000000 Z
|
|
15
15
|
dependencies:
|
|
16
16
|
- !ruby/object:Gem::Dependency
|
|
17
17
|
name: activesupport
|
|
@@ -84,32 +84,32 @@ extensions: []
|
|
|
84
84
|
extra_rdoc_files: []
|
|
85
85
|
files:
|
|
86
86
|
- bin/moto
|
|
87
|
-
- lib/app_generator.rb
|
|
88
|
-
- lib/cli.rb
|
|
89
87
|
- lib/config.rb
|
|
90
88
|
- lib/empty_listener.rb
|
|
91
|
-
- lib/exceptions/
|
|
89
|
+
- lib/exceptions/base.rb
|
|
92
90
|
- lib/exceptions/test_forced_failure.rb
|
|
93
91
|
- lib/exceptions/test_forced_passed.rb
|
|
94
92
|
- lib/exceptions/test_skipped.rb
|
|
95
|
-
- lib/
|
|
96
|
-
- lib/
|
|
93
|
+
- lib/modes/generate/test_template_generator.rb
|
|
94
|
+
- lib/modes/mode_selector.rb
|
|
95
|
+
- lib/modes/run/dry_runner.rb
|
|
96
|
+
- lib/modes/run/test_provider.rb
|
|
97
|
+
- lib/modes/run/test_runner.rb
|
|
98
|
+
- lib/modes/run/thread_context.rb
|
|
99
|
+
- lib/modes/validate/test_validator.rb
|
|
100
|
+
- lib/parameter_parser.rb
|
|
97
101
|
- lib/reporting/listeners/base.rb
|
|
98
102
|
- lib/reporting/listeners/console.rb
|
|
99
103
|
- lib/reporting/listeners/console_dots.rb
|
|
100
104
|
- lib/reporting/listeners/junit_xml.rb
|
|
101
105
|
- lib/reporting/listeners/webui.rb
|
|
102
|
-
- lib/reporting/listeners/webui_deprecated.rb
|
|
103
106
|
- lib/reporting/run_status.rb
|
|
104
107
|
- lib/reporting/test_reporter.rb
|
|
105
|
-
- lib/runner/dry_runner.rb
|
|
106
|
-
- lib/runner/test_generator.rb
|
|
107
|
-
- lib/runner/test_provider.rb
|
|
108
|
-
- lib/runner/test_runner.rb
|
|
109
|
-
- lib/runner/thread_context.rb
|
|
110
108
|
- lib/runner_logging.rb
|
|
111
109
|
- lib/test/base.rb
|
|
110
|
+
- lib/test/generator.rb
|
|
112
111
|
- lib/test/metadata.rb
|
|
112
|
+
- lib/test/metadata_generator.rb
|
|
113
113
|
- lib/test/result.rb
|
|
114
114
|
- lib/test/status.rb
|
|
115
115
|
- lib/test_logging.rb
|
|
@@ -134,7 +134,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
134
134
|
version: '0'
|
|
135
135
|
requirements: []
|
|
136
136
|
rubyforge_project:
|
|
137
|
-
rubygems_version: 2.
|
|
137
|
+
rubygems_version: 2.5.2
|
|
138
138
|
signing_key:
|
|
139
139
|
specification_version: 4
|
|
140
140
|
summary: Moto - yet another web testing framework
|
data/lib/app_generator.rb
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
require 'fileutils'
|
|
2
|
-
|
|
3
|
-
module Moto
|
|
4
|
-
class AppGenerator
|
|
5
|
-
|
|
6
|
-
# Creates directories and file with class template for a test.
|
|
7
|
-
# @param options [Hash] Informations required perfrom the task.
|
|
8
|
-
# options[:app_name] Name of the application that uses Moto Framework.
|
|
9
|
-
# options[:dir] Subdirectories of MotoApp/tests/ where test should be placed.
|
|
10
|
-
# options[:base_class] Path and filename of class from which the test will derive.
|
|
11
|
-
# options[:force] Whether generator should forcibly overwrite previously existing file.
|
|
12
|
-
def self.run(options)
|
|
13
|
-
|
|
14
|
-
# Build list of modules basing on the name of the application and subdirectory provided by the user.
|
|
15
|
-
# Second module is always 'tests' since it's where they should be kept.
|
|
16
|
-
modules = [options[:app_name], 'tests'] + options[:dir].split('/')
|
|
17
|
-
modules.map!(&:camelize)
|
|
18
|
-
|
|
19
|
-
# Name of the class in the template
|
|
20
|
-
class_name = modules.last
|
|
21
|
-
|
|
22
|
-
# Evaluate fully qualified name of the class to derive from or, if not specified
|
|
23
|
-
# use Moto's default one
|
|
24
|
-
if options[:base_class].nil?
|
|
25
|
-
base_class_qualified_name = 'Moto::Test::Base'
|
|
26
|
-
else
|
|
27
|
-
base_class_qualified_name = "#{options[:app_name]}::Lib::Test::#{options[:base_class].split('/').join('::').camelize}"
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
# Where to put finished template
|
|
31
|
-
test_file = File.basename(options[:dir]) + '.rb'
|
|
32
|
-
test_dir = MotoApp::DIR + '/tests/' + options[:dir]
|
|
33
|
-
test_path = "#{test_dir}/#{test_file}"
|
|
34
|
-
|
|
35
|
-
# Create directory
|
|
36
|
-
FileUtils.mkdir_p(test_dir)
|
|
37
|
-
|
|
38
|
-
if !File.exist?(test_path) || options[:force]
|
|
39
|
-
# Create new file in specified location and add class' template to it
|
|
40
|
-
File.open(test_path, 'w+') do |file|
|
|
41
|
-
|
|
42
|
-
indent = 0
|
|
43
|
-
|
|
44
|
-
file << "# FULL_CODE\n"
|
|
45
|
-
|
|
46
|
-
if options[:base_class].nil?
|
|
47
|
-
file << "\n"
|
|
48
|
-
else
|
|
49
|
-
file << "require './lib/test/#{options[:base_class]}.rb'\n\n"
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
modules.each do |m|
|
|
53
|
-
file << (' ' * indent) + "module #{m}\n"
|
|
54
|
-
indent += 2
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
file << (' ' * indent) + "# Class template genereated by 'moto generate'\n"
|
|
58
|
-
file << (' ' * indent) + "class #{class_name} < #{base_class_qualified_name}\n\n"
|
|
59
|
-
indent += 2
|
|
60
|
-
file << (' ' * indent) + "def run\n"
|
|
61
|
-
file << (' ' * indent) + "end\n\n"
|
|
62
|
-
indent -= 2
|
|
63
|
-
file << (' ' * indent) + "end\n"
|
|
64
|
-
|
|
65
|
-
modules.each do
|
|
66
|
-
indent -= 2
|
|
67
|
-
file << (' ' * indent) + "end\n"
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
puts 'Result:'
|
|
73
|
-
puts " File: #{test_path}"
|
|
74
|
-
puts " Class: #{class_name} < #{base_class_qualified_name}"
|
|
75
|
-
else
|
|
76
|
-
raise 'File already exists. Use -f or --force to overwrite existing contents.'
|
|
77
|
-
end
|
|
78
|
-
end
|
|
79
|
-
end
|
|
80
|
-
end
|
data/lib/cli.rb
DELETED
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
require 'logger'
|
|
2
|
-
require 'pp'
|
|
3
|
-
require 'yaml'
|
|
4
|
-
require 'active_support/inflector'
|
|
5
|
-
require 'active_support/core_ext/object/blank'
|
|
6
|
-
|
|
7
|
-
module MotoApp
|
|
8
|
-
DIR = Dir.pwd
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
module Moto
|
|
12
|
-
DIR = File.dirname(File.dirname(__FILE__))
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
require_relative './test_logging'
|
|
16
|
-
require_relative './runner_logging'
|
|
17
|
-
require_relative './runner/dry_runner'
|
|
18
|
-
require_relative './runner/test_runner'
|
|
19
|
-
require_relative './runner/thread_context'
|
|
20
|
-
require_relative './runner/test_generator'
|
|
21
|
-
require_relative './test/base'
|
|
22
|
-
require_relative './test/metadata'
|
|
23
|
-
require_relative './version'
|
|
24
|
-
require_relative './reporting/listeners/base'
|
|
25
|
-
require_relative './reporting/listeners/console'
|
|
26
|
-
require_relative './reporting/listeners/console_dots'
|
|
27
|
-
require_relative './reporting/listeners/junit_xml'
|
|
28
|
-
require_relative './reporting/listeners/webui'
|
|
29
|
-
require_relative './exceptions/moto'
|
|
30
|
-
require_relative './exceptions/test_skipped'
|
|
31
|
-
require_relative './exceptions/test_forced_failure'
|
|
32
|
-
require_relative './exceptions/test_forced_passed'
|
|
33
|
-
require_relative 'config'
|
|
34
|
-
|
|
35
|
-
module Moto
|
|
36
|
-
|
|
37
|
-
class Cli
|
|
38
|
-
def self.run(argv)
|
|
39
|
-
|
|
40
|
-
tests_metadata = []
|
|
41
|
-
directories = argv[:tests]
|
|
42
|
-
tags = argv[:tags]
|
|
43
|
-
filters = argv[:filters]
|
|
44
|
-
|
|
45
|
-
if directories
|
|
46
|
-
directories.each do |directory|
|
|
47
|
-
Dir.glob("#{MotoApp::DIR}/tests/#{directory}/**/*.rb").each do |test_path|
|
|
48
|
-
tests_metadata << Moto::Test::Metadata.new(test_path)
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
if tags
|
|
54
|
-
tests_total = Dir.glob("#{MotoApp::DIR}/tests/**/*.rb")
|
|
55
|
-
tests_total.each do |test_path|
|
|
56
|
-
|
|
57
|
-
metadata = Moto::Test::Metadata.new(test_path)
|
|
58
|
-
tests_metadata << metadata unless (tags & metadata.tags).empty?
|
|
59
|
-
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
# Make sure there are no repetitions in gathered set
|
|
64
|
-
tests_metadata.uniq! { |metadata| metadata.test_path }
|
|
65
|
-
|
|
66
|
-
# Filter tests by provied tags
|
|
67
|
-
# - test must contain ALL tags specified with -f param
|
|
68
|
-
# - use ~ for negation
|
|
69
|
-
# - test may contain other tags
|
|
70
|
-
if filters
|
|
71
|
-
filters.each do |filter|
|
|
72
|
-
filtered = tests_metadata.select do |metadata|
|
|
73
|
-
next if metadata.tags.empty?
|
|
74
|
-
filter_matches_any_tag?(filter, metadata.tags) || filter_negation_matches_none_tag?(filter, metadata.tags)
|
|
75
|
-
end
|
|
76
|
-
tests_metadata &= filtered
|
|
77
|
-
end
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
#TODO Display criteria used
|
|
81
|
-
if tests_metadata.empty?
|
|
82
|
-
puts 'No tests found for given arguments.'
|
|
83
|
-
Kernel.exit(-1)
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
# Requires custom initializer if provided by application that uses Moto
|
|
87
|
-
if File.exists?( "#{MotoApp::DIR}/lib/initializer.rb" )
|
|
88
|
-
require("#{Moto::DIR}/lib/initializer.rb")
|
|
89
|
-
require("#{MotoApp::DIR}/lib/initializer.rb")
|
|
90
|
-
initializer = MotoApp::Lib::Initializer.new(self)
|
|
91
|
-
initializer.init
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
run_params = {}
|
|
95
|
-
run_params[:run_name] = argv[:run_name]
|
|
96
|
-
run_params[:suite_name] = argv[:suite_name]
|
|
97
|
-
run_params[:assignee] = argv[:assignee]
|
|
98
|
-
|
|
99
|
-
test_reporter = Moto::Reporting::TestReporter.new(argv[:listeners], run_params)
|
|
100
|
-
|
|
101
|
-
if Moto::Lib::Config.moto[:test_runner][:dry_run]
|
|
102
|
-
runner = Moto::Runner::DryRunner.new(tests_metadata, test_reporter)
|
|
103
|
-
else
|
|
104
|
-
runner = Moto::Runner::TestRunner.new(tests_metadata, test_reporter, argv[:stop_on])
|
|
105
|
-
end
|
|
106
|
-
runner.run
|
|
107
|
-
end
|
|
108
|
-
|
|
109
|
-
def self.filter_matches_any_tag?(filter, tags)
|
|
110
|
-
!filter.start_with?('~') && tags.any? { |tag| filter == tag }
|
|
111
|
-
end
|
|
112
|
-
private_class_method :filter_matches_any_tag?
|
|
113
|
-
|
|
114
|
-
def self.filter_negation_matches_none_tag?(filter, tags)
|
|
115
|
-
filter.start_with?('~') && tags.none? { |tag| filter[1..-1] == tag }
|
|
116
|
-
end
|
|
117
|
-
private_class_method :filter_negation_matches_none_tag?
|
|
118
|
-
|
|
119
|
-
end
|
|
120
|
-
end
|