testa_appium_driver 0.1.21 → 0.1.24
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/.gitattributes +23 -0
- data/.gitignore +17 -0
- data/.rspec +3 -0
- data/.rubocop.yml +6 -0
- data/Gemfile.lock +1 -1
- data/bin/console +17 -0
- data/bin/setup +8 -0
- data/lib/testa_appium_driver/android/class_selectors.rb +438 -0
- data/lib/testa_appium_driver/android/driver.rb +71 -0
- data/lib/testa_appium_driver/android/locator/attributes.rb +115 -0
- data/lib/testa_appium_driver/android/locator.rb +142 -0
- data/lib/testa_appium_driver/android/scroll_actions/uiautomator_scroll_actions.rb +62 -0
- data/lib/testa_appium_driver/android/selenium_element.rb +12 -0
- data/lib/testa_appium_driver/common/bounds.rb +150 -0
- data/lib/testa_appium_driver/common/constants.rb +38 -0
- data/lib/testa_appium_driver/common/exceptions/strategy_mix_exception.rb +12 -0
- data/lib/testa_appium_driver/common/helpers.rb +272 -0
- data/lib/testa_appium_driver/common/locator/scroll_actions.rb +390 -0
- data/lib/testa_appium_driver/common/locator.rb +640 -0
- data/lib/testa_appium_driver/common/scroll_actions/json_wire_scroll_actions.rb +4 -0
- data/lib/testa_appium_driver/common/scroll_actions/w3c_scroll_actions.rb +380 -0
- data/lib/testa_appium_driver/common/scroll_actions.rb +275 -0
- data/lib/testa_appium_driver/common/selenium_element.rb +19 -0
- data/lib/testa_appium_driver/driver.rb +338 -0
- data/lib/testa_appium_driver/ios/driver.rb +49 -0
- data/lib/testa_appium_driver/ios/locator/attributes.rb +89 -0
- data/lib/testa_appium_driver/ios/locator.rb +73 -0
- data/lib/testa_appium_driver/ios/selenium_element.rb +8 -0
- data/lib/testa_appium_driver/ios/type_selectors.rb +201 -0
- data/lib/testa_appium_driver.rb +4 -0
- data/testa_appium_driver.gemspec +6 -2
- metadata +39 -11
- data/appium-driver.iml +0 -79
@@ -0,0 +1,201 @@
|
|
1
|
+
module ::TestaAppiumDriver
|
2
|
+
#noinspection ALL
|
3
|
+
module TypeSelectors
|
4
|
+
|
5
|
+
# @return [TestaAppiumDriver::Locator]
|
6
|
+
def add_selector(*args, &block)
|
7
|
+
# if class selector is executed from driver, create new locator instance
|
8
|
+
if self.kind_of?(TestaAppiumDriver::Driver) || self.instance_of?(::Selenium::WebDriver::Element) || self.instance_of?(::Appium::Core::Element)
|
9
|
+
args.last[:default_find_strategy] = @default_find_strategy
|
10
|
+
args.last[:default_scroll_strategy] = @default_scroll_strategy
|
11
|
+
if self.instance_of?(::Selenium::WebDriver::Element) || self.instance_of?(::Appium::Core::Element)
|
12
|
+
driver = self.get_driver
|
13
|
+
else
|
14
|
+
driver = self
|
15
|
+
end
|
16
|
+
Locator.new(driver, self, *args)
|
17
|
+
else
|
18
|
+
# class selector is executed from locator, just add child selector criteria
|
19
|
+
self.add_child_selector(*args)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
# @param selectors [Hash]
|
24
|
+
# @return [TestaAppiumDriver::Locator] first element
|
25
|
+
def element(selectors = {})
|
26
|
+
add_selector(selectors)
|
27
|
+
end
|
28
|
+
|
29
|
+
# @param params [Hash]
|
30
|
+
# @return [TestaAppiumDriver::Locator] all elements that match given selectors
|
31
|
+
def elements(params = {})
|
32
|
+
params[:single] = false
|
33
|
+
add_selector(params)
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
# @return [TestaAppiumDriver::Locator]
|
38
|
+
def window(params = {})
|
39
|
+
params[:type] = "XCUIElementTypeWindow"
|
40
|
+
add_selector(params)
|
41
|
+
end
|
42
|
+
|
43
|
+
# @return [TestaAppiumDriver::Locator]
|
44
|
+
def windows(params = {})
|
45
|
+
params[:type] = "XCUIElementTypeWindow"
|
46
|
+
params[:single] = false
|
47
|
+
add_selector(params)
|
48
|
+
end
|
49
|
+
|
50
|
+
# @return [TestaAppiumDriver::Locator]
|
51
|
+
def other(params = {})
|
52
|
+
params[:type] = "XCUIElementTypeOther"
|
53
|
+
add_selector(params)
|
54
|
+
end
|
55
|
+
|
56
|
+
# @return [TestaAppiumDriver::Locator]
|
57
|
+
def others(params = {})
|
58
|
+
params[:type] = "XCUIElementTypeOther"
|
59
|
+
params[:single] = false
|
60
|
+
add_selector(params)
|
61
|
+
end
|
62
|
+
|
63
|
+
|
64
|
+
# @return [TestaAppiumDriver::Locator]
|
65
|
+
def navigation_bar(params = {})
|
66
|
+
params[:type] = "XCUIElementTypeNavigationBar"
|
67
|
+
add_selector(params)
|
68
|
+
end
|
69
|
+
|
70
|
+
# @return [TestaAppiumDriver::Locator]
|
71
|
+
def navigation_bars(params = {})
|
72
|
+
params[:type] = "XCUIElementTypeNavigationBar"
|
73
|
+
params[:single] = false
|
74
|
+
add_selector(params)
|
75
|
+
end
|
76
|
+
|
77
|
+
|
78
|
+
# @return [TestaAppiumDriver::Locator]
|
79
|
+
def button(params = {})
|
80
|
+
params[:type] = "XCUIElementTypeButton"
|
81
|
+
add_selector(params)
|
82
|
+
end
|
83
|
+
|
84
|
+
# @return [TestaAppiumDriver::Locator]
|
85
|
+
def buttons(params = {})
|
86
|
+
params[:type] = "XCUIElementTypeButton"
|
87
|
+
params[:single] = false
|
88
|
+
add_selector(params)
|
89
|
+
end
|
90
|
+
|
91
|
+
# @return [TestaAppiumDriver::Locator]
|
92
|
+
def collection_view(params = {})
|
93
|
+
params[:type] = "XCUIElementTypeCollectionView"
|
94
|
+
add_selector(params)
|
95
|
+
end
|
96
|
+
|
97
|
+
# @return [TestaAppiumDriver::Locator]
|
98
|
+
def collection_views(params = {})
|
99
|
+
params[:type] = "XCUIElementTypeCollectionView"
|
100
|
+
params[:single] = false
|
101
|
+
add_selector(params)
|
102
|
+
end
|
103
|
+
|
104
|
+
|
105
|
+
# @return [TestaAppiumDriver::Locator]
|
106
|
+
def image(params = {})
|
107
|
+
params[:type] = "XCUIElementTypeImage"
|
108
|
+
add_selector(params)
|
109
|
+
end
|
110
|
+
|
111
|
+
# @return [TestaAppiumDriver::Locator]
|
112
|
+
def images(params = {})
|
113
|
+
params[:type] = "XCUIElementTypeImage"
|
114
|
+
params[:single] = false
|
115
|
+
add_selector(params)
|
116
|
+
end
|
117
|
+
|
118
|
+
# @return [TestaAppiumDriver::Locator]
|
119
|
+
def static_text(params = {})
|
120
|
+
params[:type] = "XCUIElementTypeStaticText"
|
121
|
+
add_selector(params)
|
122
|
+
end
|
123
|
+
|
124
|
+
# @return [TestaAppiumDriver::Locator]
|
125
|
+
def static_texts(params = {})
|
126
|
+
params[:type] = "XCUIElementTypeStaticText"
|
127
|
+
params[:single] = false
|
128
|
+
add_selector(params)
|
129
|
+
end
|
130
|
+
|
131
|
+
|
132
|
+
# @return [TestaAppiumDriver::Locator]
|
133
|
+
def scroll_view(params = {})
|
134
|
+
params[:type] = "XCUIElementTypeScrollView"
|
135
|
+
add_selector(params)
|
136
|
+
end
|
137
|
+
|
138
|
+
# @return [TestaAppiumDriver::Locator]
|
139
|
+
def scroll_views(params = {})
|
140
|
+
params[:type] = "XCUIElementTypeScrollView"
|
141
|
+
params[:single] = false
|
142
|
+
add_selector(params)
|
143
|
+
end
|
144
|
+
|
145
|
+
|
146
|
+
# @return [TestaAppiumDriver::Locator]
|
147
|
+
def table(params = {})
|
148
|
+
params[:type] = "XCUIElementTypeTable"
|
149
|
+
add_selector(params)
|
150
|
+
end
|
151
|
+
|
152
|
+
# @return [TestaAppiumDriver::Locator]
|
153
|
+
def tables(params = {})
|
154
|
+
params[:type] = "XCUIElementTypeTable"
|
155
|
+
params[:single] = false
|
156
|
+
add_selector(params)
|
157
|
+
end
|
158
|
+
|
159
|
+
# @return [TestaAppiumDriver::Locator]
|
160
|
+
def cell(params = {})
|
161
|
+
params[:type] = "XCUIElementTypeCell"
|
162
|
+
add_selector(params)
|
163
|
+
end
|
164
|
+
|
165
|
+
# @return [TestaAppiumDriver::Locator]
|
166
|
+
def cells(params = {})
|
167
|
+
params[:type] = "XCUIElementTypeCell"
|
168
|
+
params[:single] = false
|
169
|
+
add_selector(params)
|
170
|
+
end
|
171
|
+
|
172
|
+
|
173
|
+
|
174
|
+
# @return [TestaAppiumDriver::Locator]
|
175
|
+
def text_field(params = {})
|
176
|
+
params[:type] = "XCUIElementTypeTextField"
|
177
|
+
add_selector(params)
|
178
|
+
end
|
179
|
+
|
180
|
+
# @return [TestaAppiumDriver::Locator]
|
181
|
+
def text_fields(params = {})
|
182
|
+
params[:type] = "XCUIElementTypeTextField"
|
183
|
+
params[:single] = false
|
184
|
+
add_selector(params)
|
185
|
+
end
|
186
|
+
|
187
|
+
|
188
|
+
# @return [TestaAppiumDriver::Locator]
|
189
|
+
def secure_text_field(params = {})
|
190
|
+
params[:type] = "XCUIElementTypeSecureTextField"
|
191
|
+
add_selector(params)
|
192
|
+
end
|
193
|
+
|
194
|
+
# @return [TestaAppiumDriver::Locator]
|
195
|
+
def secure_text_fields(params = {})
|
196
|
+
params[:type] = "XCUIElementTypeSecureTextField"
|
197
|
+
params[:single] = false
|
198
|
+
add_selector(params)
|
199
|
+
end
|
200
|
+
end
|
201
|
+
end
|
data/testa_appium_driver.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |spec|
|
4
4
|
spec.name = "testa_appium_driver"
|
5
|
-
spec.version = "0.1.
|
5
|
+
spec.version = "0.1.24"
|
6
6
|
spec.authors = ["karlo.razumovic"]
|
7
7
|
spec.email = ["karlo.razumovic@gmail.com"]
|
8
8
|
|
@@ -20,7 +20,11 @@ Gem::Specification.new do |spec|
|
|
20
20
|
spec.metadata["changelog_uri"] = "https://github.com/Karazum/testa_appium_driver"
|
21
21
|
|
22
22
|
# this can be optimized
|
23
|
-
spec.files = Dir["#{File.dirname(__FILE__)}/*"]
|
23
|
+
# spec.files = Dir["#{File.dirname(__FILE__)}/*"]
|
24
|
+
|
25
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
26
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:test|spec|features)/}) }
|
27
|
+
end
|
24
28
|
|
25
29
|
spec.bindir = "exe"
|
26
30
|
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: testa_appium_driver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.24
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- karlo.razumovic
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-03-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: appium_lib_core
|
@@ -75,15 +75,43 @@ executables: []
|
|
75
75
|
extensions: []
|
76
76
|
extra_rdoc_files: []
|
77
77
|
files:
|
78
|
-
- "
|
79
|
-
- "
|
80
|
-
- "
|
81
|
-
- "
|
82
|
-
-
|
83
|
-
-
|
84
|
-
-
|
85
|
-
-
|
86
|
-
-
|
78
|
+
- ".gitattributes"
|
79
|
+
- ".gitignore"
|
80
|
+
- ".rspec"
|
81
|
+
- ".rubocop.yml"
|
82
|
+
- CHANGELOG.md
|
83
|
+
- CODE_OF_CONDUCT.md
|
84
|
+
- Gemfile
|
85
|
+
- Gemfile.lock
|
86
|
+
- LICENSE.txt
|
87
|
+
- README.md
|
88
|
+
- Rakefile
|
89
|
+
- bin/console
|
90
|
+
- bin/setup
|
91
|
+
- lib/testa_appium_driver.rb
|
92
|
+
- lib/testa_appium_driver/android/class_selectors.rb
|
93
|
+
- lib/testa_appium_driver/android/driver.rb
|
94
|
+
- lib/testa_appium_driver/android/locator.rb
|
95
|
+
- lib/testa_appium_driver/android/locator/attributes.rb
|
96
|
+
- lib/testa_appium_driver/android/scroll_actions/uiautomator_scroll_actions.rb
|
97
|
+
- lib/testa_appium_driver/android/selenium_element.rb
|
98
|
+
- lib/testa_appium_driver/common/bounds.rb
|
99
|
+
- lib/testa_appium_driver/common/constants.rb
|
100
|
+
- lib/testa_appium_driver/common/exceptions/strategy_mix_exception.rb
|
101
|
+
- lib/testa_appium_driver/common/helpers.rb
|
102
|
+
- lib/testa_appium_driver/common/locator.rb
|
103
|
+
- lib/testa_appium_driver/common/locator/scroll_actions.rb
|
104
|
+
- lib/testa_appium_driver/common/scroll_actions.rb
|
105
|
+
- lib/testa_appium_driver/common/scroll_actions/json_wire_scroll_actions.rb
|
106
|
+
- lib/testa_appium_driver/common/scroll_actions/w3c_scroll_actions.rb
|
107
|
+
- lib/testa_appium_driver/common/selenium_element.rb
|
108
|
+
- lib/testa_appium_driver/driver.rb
|
109
|
+
- lib/testa_appium_driver/ios/driver.rb
|
110
|
+
- lib/testa_appium_driver/ios/locator.rb
|
111
|
+
- lib/testa_appium_driver/ios/locator/attributes.rb
|
112
|
+
- lib/testa_appium_driver/ios/selenium_element.rb
|
113
|
+
- lib/testa_appium_driver/ios/type_selectors.rb
|
114
|
+
- testa_appium_driver.gemspec
|
87
115
|
homepage: https://github.com/Karazum/testa_appium_driver
|
88
116
|
licenses:
|
89
117
|
- MIT
|
data/appium-driver.iml
DELETED
@@ -1,79 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<module type="RUBY_MODULE" version="4">
|
3
|
-
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
4
|
-
<exclude-output />
|
5
|
-
<content url="file://$MODULE_DIR$">
|
6
|
-
<sourceFolder url="file://$MODULE_DIR$/spec" isTestSource="true" />
|
7
|
-
</content>
|
8
|
-
<orderEntry type="jdk" jdkName="RVM: ruby-2.7.6" jdkType="RUBY_SDK" />
|
9
|
-
<orderEntry type="sourceFolder" forTests="false" />
|
10
|
-
<orderEntry type="library" scope="PROVIDED" name="appium_lib_core (v5.2.2, RVM: ruby-2.7.6) [gem]" level="application" />
|
11
|
-
<orderEntry type="library" scope="PROVIDED" name="ast (v2.4.2, RVM: ruby-2.7.6) [gem]" level="application" />
|
12
|
-
<orderEntry type="library" scope="PROVIDED" name="bundler (v2.3.14, RVM: ruby-2.7.6) [gem]" level="application" />
|
13
|
-
<orderEntry type="library" scope="PROVIDED" name="childprocess (v4.1.0, RVM: ruby-2.7.6) [gem]" level="application" />
|
14
|
-
<orderEntry type="library" scope="PROVIDED" name="diff-lcs (v1.5.0, RVM: ruby-2.7.6) [gem]" level="application" />
|
15
|
-
<orderEntry type="library" scope="PROVIDED" name="eventmachine (v1.2.7, RVM: ruby-2.7.6) [gem]" level="application" />
|
16
|
-
<orderEntry type="library" scope="PROVIDED" name="faye-websocket (v0.11.1, RVM: ruby-2.7.6) [gem]" level="application" />
|
17
|
-
<orderEntry type="library" scope="PROVIDED" name="json (v2.6.2, RVM: ruby-2.7.6) [gem]" level="application" />
|
18
|
-
<orderEntry type="library" scope="PROVIDED" name="parallel (v1.22.1, RVM: ruby-2.7.6) [gem]" level="application" />
|
19
|
-
<orderEntry type="library" scope="PROVIDED" name="parser (v3.1.2.0, RVM: ruby-2.7.6) [gem]" level="application" />
|
20
|
-
<orderEntry type="library" scope="PROVIDED" name="rainbow (v3.1.1, RVM: ruby-2.7.6) [gem]" level="application" />
|
21
|
-
<orderEntry type="library" scope="PROVIDED" name="rake (v13.0.6, RVM: ruby-2.7.6) [gem]" level="application" />
|
22
|
-
<orderEntry type="library" scope="PROVIDED" name="regexp_parser (v2.4.0, RVM: ruby-2.7.6) [gem]" level="application" />
|
23
|
-
<orderEntry type="library" scope="PROVIDED" name="rexml (v3.2.5, RVM: ruby-2.7.6) [gem]" level="application" />
|
24
|
-
<orderEntry type="library" scope="PROVIDED" name="rspec (v3.11.0, RVM: ruby-2.7.6) [gem]" level="application" />
|
25
|
-
<orderEntry type="library" scope="PROVIDED" name="rspec-core (v3.11.0, RVM: ruby-2.7.6) [gem]" level="application" />
|
26
|
-
<orderEntry type="library" scope="PROVIDED" name="rspec-expectations (v3.11.0, RVM: ruby-2.7.6) [gem]" level="application" />
|
27
|
-
<orderEntry type="library" scope="PROVIDED" name="rspec-mocks (v3.11.1, RVM: ruby-2.7.6) [gem]" level="application" />
|
28
|
-
<orderEntry type="library" scope="PROVIDED" name="rspec-support (v3.11.0, RVM: ruby-2.7.6) [gem]" level="application" />
|
29
|
-
<orderEntry type="library" scope="PROVIDED" name="rubocop (v1.26.0, RVM: ruby-2.7.6) [gem]" level="application" />
|
30
|
-
<orderEntry type="library" scope="PROVIDED" name="rubocop-ast (v1.18.0, RVM: ruby-2.7.6) [gem]" level="application" />
|
31
|
-
<orderEntry type="library" scope="PROVIDED" name="rubocop-performance (v1.15.0, RVM: ruby-2.7.6) [gem]" level="application" />
|
32
|
-
<orderEntry type="library" scope="PROVIDED" name="ruby-progressbar (v1.11.0, RVM: ruby-2.7.6) [gem]" level="application" />
|
33
|
-
<orderEntry type="library" scope="PROVIDED" name="rubyzip (v2.3.2, RVM: ruby-2.7.6) [gem]" level="application" />
|
34
|
-
<orderEntry type="library" scope="PROVIDED" name="selenium-webdriver (v4.3.0, RVM: ruby-2.7.6) [gem]" level="application" />
|
35
|
-
<orderEntry type="library" scope="PROVIDED" name="unicode-display_width (v2.1.0, RVM: ruby-2.7.6) [gem]" level="application" />
|
36
|
-
<orderEntry type="library" scope="PROVIDED" name="websocket (v1.2.9, RVM: ruby-2.7.6) [gem]" level="application" />
|
37
|
-
<orderEntry type="library" scope="PROVIDED" name="websocket-driver (v0.7.5, RVM: ruby-2.7.6) [gem]" level="application" />
|
38
|
-
<orderEntry type="library" scope="PROVIDED" name="websocket-extensions (v0.1.5, RVM: ruby-2.7.6) [gem]" level="application" />
|
39
|
-
</component>
|
40
|
-
<component name="RakeTasksCache">
|
41
|
-
<option name="myRootTask">
|
42
|
-
<RakeTaskImpl id="rake">
|
43
|
-
<subtasks>
|
44
|
-
<RakeTaskImpl description="Build testa_appium_driver-0.1.18.gem into the pkg directory" fullCommand="build" id="build" />
|
45
|
-
<RakeTaskImpl id="build">
|
46
|
-
<subtasks>
|
47
|
-
<RakeTaskImpl description="Generate SHA512 checksum if testa_appium_driver-0.1.18.gem into the checksums directory" fullCommand="build:checksum" id="checksum" />
|
48
|
-
</subtasks>
|
49
|
-
</RakeTaskImpl>
|
50
|
-
<RakeTaskImpl description="Remove any temporary products" fullCommand="clean" id="clean" />
|
51
|
-
<RakeTaskImpl description="Remove any generated files" fullCommand="clobber" id="clobber" />
|
52
|
-
<RakeTaskImpl description="Build and install testa_appium_driver-0.1.18.gem into system gems" fullCommand="install" id="install" />
|
53
|
-
<RakeTaskImpl id="install">
|
54
|
-
<subtasks>
|
55
|
-
<RakeTaskImpl description="Build and install testa_appium_driver-0.1.18.gem into system gems without network access" fullCommand="install:local" id="local" />
|
56
|
-
</subtasks>
|
57
|
-
</RakeTaskImpl>
|
58
|
-
<RakeTaskImpl description="Create tag v0.1.18 and build and push testa_appium_driver-0.1.18.gem to rubygems.org" fullCommand="release[remote]" id="release[remote]" />
|
59
|
-
<RakeTaskImpl description="Run RuboCop" fullCommand="rubocop" id="rubocop" />
|
60
|
-
<RakeTaskImpl id="rubocop">
|
61
|
-
<subtasks>
|
62
|
-
<RakeTaskImpl description="Auto-correct RuboCop offenses" fullCommand="rubocop:auto_correct" id="auto_correct" />
|
63
|
-
</subtasks>
|
64
|
-
</RakeTaskImpl>
|
65
|
-
<RakeTaskImpl description="Run RSpec code examples" fullCommand="spec" id="spec" />
|
66
|
-
<RakeTaskImpl description="" fullCommand="default" id="default" />
|
67
|
-
<RakeTaskImpl description="" fullCommand="release" id="release" />
|
68
|
-
<RakeTaskImpl id="release">
|
69
|
-
<subtasks>
|
70
|
-
<RakeTaskImpl description="" fullCommand="release:guard_clean" id="guard_clean" />
|
71
|
-
<RakeTaskImpl description="" fullCommand="release:rubygem_push" id="rubygem_push" />
|
72
|
-
<RakeTaskImpl description="" fullCommand="release:source_control_push" id="source_control_push" />
|
73
|
-
</subtasks>
|
74
|
-
</RakeTaskImpl>
|
75
|
-
</subtasks>
|
76
|
-
</RakeTaskImpl>
|
77
|
-
</option>
|
78
|
-
</component>
|
79
|
-
</module>
|