unobtainium 0.8.0 → 0.8.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +14 -0
- data/.travis.yml +3 -0
- data/Gemfile.lock +16 -19
- data/docs/CONFIGURATION.md +2 -105
- data/lib/unobtainium/drivers/appium.rb +1 -0
- data/lib/unobtainium/version.rb +1 -1
- data/lib/unobtainium/world.rb +12 -1
- data/spec/spec_helper.rb +0 -6
- data/spec/utility_spec.rb +1 -1
- data/spec/world_spec.rb +1 -1
- data/unobtainium.gemspec +6 -4
- metadata +10 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 32ec07edb9ef9b7a1794e3660a6dbaedec57054f
|
4
|
+
data.tar.gz: 36ec4332fb3921acb4e3b723b4fe0f208bc839e6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 140e9dbdc8f5f83d4ff607ffd9fe5381652f710e3a9cf6036ef278daa3da8c792c450883b701395680094997983bd880ee5dc5eb5d0403fd2f690da05b311d13
|
7
|
+
data.tar.gz: 5f6dcef3056e6110c49a6b3fba2913641f43a1c4a15895c5802edf3af8569e6be0ec0f2a66b01a88694937d450b6650683981f456f39d400447ac77e914fdf8e
|
data/.gitignore
CHANGED
@@ -10,10 +10,24 @@
|
|
10
10
|
/test/version_tmp/
|
11
11
|
/tmp/
|
12
12
|
|
13
|
+
# Used by dotenv library to load environment variables.
|
14
|
+
# .env
|
15
|
+
|
13
16
|
## Specific to RubyMotion:
|
14
17
|
.dat*
|
15
18
|
.repl_history
|
16
19
|
build/
|
20
|
+
*.bridgesupport
|
21
|
+
build-iPhoneOS/
|
22
|
+
build-iPhoneSimulator/
|
23
|
+
|
24
|
+
## Specific to RubyMotion (use of CocoaPods):
|
25
|
+
#
|
26
|
+
# We recommend against adding the Pods directory to your .gitignore. However
|
27
|
+
# you should judge for yourself, the pros and cons are mentioned at:
|
28
|
+
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
|
29
|
+
#
|
30
|
+
# vendor/Pods/
|
17
31
|
|
18
32
|
## Documentation cache and generated files:
|
19
33
|
/.yardoc/
|
data/.travis.yml
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
unobtainium (0.8.
|
5
|
-
collapsium (~> 0.
|
6
|
-
collapsium-config (~> 0.
|
4
|
+
unobtainium (0.8.1)
|
5
|
+
collapsium (~> 0.6)
|
6
|
+
collapsium-config (~> 0.4)
|
7
7
|
ptools (~> 1.3)
|
8
8
|
sys-proctable (~> 1.1)
|
9
9
|
|
@@ -26,11 +26,10 @@ GEM
|
|
26
26
|
chromedriver-helper (1.0.0)
|
27
27
|
archive-zip (~> 0.7.0)
|
28
28
|
nokogiri (~> 1.6)
|
29
|
-
codeclimate-test-reporter (0.
|
30
|
-
|
31
|
-
collapsium (0.4.
|
32
|
-
|
33
|
-
collapsium (~> 0.4)
|
29
|
+
codeclimate-test-reporter (1.0.1)
|
30
|
+
collapsium (0.6.1)
|
31
|
+
collapsium-config (0.4.0)
|
32
|
+
collapsium (~> 0.6)
|
34
33
|
cucumber (2.4.0)
|
35
34
|
builder (>= 2.1.2)
|
36
35
|
cucumber-core (~> 1.5.0)
|
@@ -51,22 +50,20 @@ GEM
|
|
51
50
|
mini_portile2 (2.1.0)
|
52
51
|
multi_json (1.12.1)
|
53
52
|
multi_test (0.1.2)
|
54
|
-
nokogiri (1.6.8)
|
53
|
+
nokogiri (1.6.8.1)
|
55
54
|
mini_portile2 (~> 2.1.0)
|
56
|
-
|
57
|
-
parser (2.3.1.2)
|
55
|
+
parser (2.3.1.4)
|
58
56
|
ast (~> 2.2)
|
59
57
|
phantomjs (2.1.1.0)
|
60
|
-
pkg-config (1.1.7)
|
61
58
|
powerpack (0.1.1)
|
62
59
|
ptools (1.3.3)
|
63
60
|
rainbow (2.1.0)
|
64
|
-
rake (11.
|
61
|
+
rake (11.3.0)
|
65
62
|
rspec (3.5.0)
|
66
63
|
rspec-core (~> 3.5.0)
|
67
64
|
rspec-expectations (~> 3.5.0)
|
68
65
|
rspec-mocks (~> 3.5.0)
|
69
|
-
rspec-core (3.5.
|
66
|
+
rspec-core (3.5.4)
|
70
67
|
rspec-support (~> 3.5.0)
|
71
68
|
rspec-expectations (3.5.0)
|
72
69
|
diff-lcs (>= 1.2.0, < 2.0)
|
@@ -75,7 +72,7 @@ GEM
|
|
75
72
|
diff-lcs (>= 1.2.0, < 2.0)
|
76
73
|
rspec-support (~> 3.5.0)
|
77
74
|
rspec-support (3.5.0)
|
78
|
-
rubocop (0.
|
75
|
+
rubocop (0.45.0)
|
79
76
|
parser (>= 2.3.1.1, < 3.0)
|
80
77
|
powerpack (~> 0.1)
|
81
78
|
rainbow (>= 1.99.1, < 3.0)
|
@@ -92,7 +89,7 @@ GEM
|
|
92
89
|
json (>= 1.8, < 3)
|
93
90
|
simplecov-html (~> 0.10.0)
|
94
91
|
simplecov-html (0.10.0)
|
95
|
-
sys-proctable (1.1.
|
92
|
+
sys-proctable (1.1.3)
|
96
93
|
tomlrb (1.2.3)
|
97
94
|
unicode-display_width (1.1.1)
|
98
95
|
websocket (1.2.3)
|
@@ -108,13 +105,13 @@ DEPENDENCIES
|
|
108
105
|
codeclimate-test-reporter
|
109
106
|
cucumber
|
110
107
|
phantomjs
|
111
|
-
rake (~> 11.
|
108
|
+
rake (~> 11.3)
|
112
109
|
rspec (~> 3.5)
|
113
|
-
rubocop (~> 0.
|
110
|
+
rubocop (~> 0.45)
|
114
111
|
selenium-webdriver
|
115
112
|
simplecov (~> 0.12)
|
116
113
|
unobtainium!
|
117
114
|
yard (~> 0.9)
|
118
115
|
|
119
116
|
BUNDLED WITH
|
120
|
-
1.
|
117
|
+
1.13.6
|
data/docs/CONFIGURATION.md
CHANGED
@@ -1,110 +1,7 @@
|
|
1
1
|
# Configuration
|
2
2
|
|
3
|
-
The
|
4
|
-
|
5
|
-
|
6
|
-
## Basic Configuration Features
|
7
|
-
|
8
|
-
### Pathed Access
|
9
|
-
|
10
|
-
`Config` is a `Hash` with pathed access. Take a nested structure such as this
|
11
|
-
as an example:
|
12
|
-
|
13
|
-
```yaml
|
14
|
-
---
|
15
|
-
foo:
|
16
|
-
bar: baz
|
17
|
-
```
|
18
|
-
|
19
|
-
Instead of accessing `config['foo']['bar']`, you can instead use a path such
|
20
|
-
as `config['foo.bar']`. The major benefit is that if *any* of the path components
|
21
|
-
does not exist, nil is returned (and the behaviour is equivalent to other access
|
22
|
-
methods such as `:fetch`, etc.)
|
23
|
-
|
24
|
-
Similarly you can use this type of access for writing: `config['baz.quux'] = 42`
|
25
|
-
will create both the `baz` hash, and it's child the `quux` key.
|
26
|
-
|
27
|
-
### Configuration Loading
|
28
|
-
|
29
|
-
If you're using `World.config`, configuration is automatically loaded at the
|
30
|
-
time it's first invoked from the location specified by `World.config_file`, which
|
31
|
-
defaults to `config/config.yml`.
|
32
|
-
|
33
|
-
This is equivalent to invoking `Config.load_config` with that location manually.
|
34
|
-
|
35
|
-
### Local Configuration Overrides
|
36
|
-
|
37
|
-
For the example file of `config/config.yml`, if a file with the same path and
|
38
|
-
name, and the name postfix `-local` exists (i.e. `config/config-local.yml`), that
|
39
|
-
file will also be loaded. It's keys will be recursively added to the keys from the
|
40
|
-
main configuration file, overwriting only leaves, not entire hashes.
|
41
|
-
|
42
|
-
Example:
|
43
|
-
|
44
|
-
```yaml
|
45
|
-
# config/config.yml
|
46
|
-
---
|
47
|
-
foo:
|
48
|
-
bar: 42
|
49
|
-
baz: quux
|
50
|
-
|
51
|
-
# config/config-local.yml
|
52
|
-
---
|
53
|
-
something: else
|
54
|
-
foo:
|
55
|
-
baz: override
|
56
|
-
|
57
|
-
# result
|
58
|
-
---
|
59
|
-
something: else
|
60
|
-
foo:
|
61
|
-
bar: 42
|
62
|
-
baz: override
|
63
|
-
```
|
64
|
-
|
65
|
-
### Configuration Extension
|
66
|
-
|
67
|
-
An additional feature of the `Config` class is that you can extend individual
|
68
|
-
hashes with values from other hashes.
|
69
|
-
|
70
|
-
```yaml
|
71
|
-
---
|
72
|
-
root:
|
73
|
-
foo: bar
|
74
|
-
derived:
|
75
|
-
baz: quux
|
76
|
-
extends: root
|
77
|
-
```
|
78
|
-
|
79
|
-
This results in:
|
80
|
-
|
81
|
-
```yaml
|
82
|
-
---
|
83
|
-
root:
|
84
|
-
foo: bar
|
85
|
-
derived:
|
86
|
-
baz: quux
|
87
|
-
foo: bar
|
88
|
-
base: root
|
89
|
-
```
|
90
|
-
|
91
|
-
**Notes:**
|
92
|
-
|
93
|
-
- This feature means that `extends` and `base` are reserved configuration keys!
|
94
|
-
- Multiple levels of extension are supported. The `base` keyword will *always
|
95
|
-
name the root-most element*, not the immediate ancestor.
|
96
|
-
- Extending from multiple bases is not supported.
|
97
|
-
- Extending from nonexistent bases is supported; all that happens is that the
|
98
|
-
`base` key is set.
|
99
|
-
|
100
|
-
### Environment Variable Override
|
101
|
-
|
102
|
-
Given a configuration path, any environment variable with the same name (change
|
103
|
-
path to upper case letters and replace `.` with `_`, e.g. `foo.bar` becomes
|
104
|
-
`FOO_BAR`) overrides the values in the configuration file.
|
105
|
-
|
106
|
-
If the environment variable is parseable as JSON, then that parsed JSON will
|
107
|
-
**replace** the original configuration path (i.e. it will not be merged).
|
3
|
+
The main configuration features are best described by [collapsium-config](https://github.com/jfinkhaeuser/collapsium-config)
|
4
|
+
upon which the configuration is based.
|
108
5
|
|
109
6
|
## Configuration Values Interpreted by World
|
110
7
|
|
data/lib/unobtainium/version.rb
CHANGED
data/lib/unobtainium/world.rb
CHANGED
@@ -82,7 +82,18 @@ module Unobtainium
|
|
82
82
|
# The merged/extended options might define a "base"; that's the label
|
83
83
|
# we need to use.
|
84
84
|
if not options.nil? and not options["base"].nil?
|
85
|
-
|
85
|
+
bases = options["base"]
|
86
|
+
|
87
|
+
# Collapsium config returns an Array of bases, but we really only want
|
88
|
+
# one. We'll have to do the sensible thing and only use one of the bases
|
89
|
+
# which also is a driver for the label. Since there's no better choice,
|
90
|
+
# let's default to the first of those.
|
91
|
+
bases.each do |base|
|
92
|
+
if not base.start_with?(".drivers.")
|
93
|
+
next
|
94
|
+
end
|
95
|
+
label = base.gsub(/^\.drivers\./, '')
|
96
|
+
end
|
86
97
|
|
87
98
|
# Unfortunately, the "base" key may not be recognized by the drivers,
|
88
99
|
# which could lead to errors down the road. Let's remove it; it's reserved
|
data/spec/spec_helper.rb
CHANGED
data/spec/utility_spec.rb
CHANGED
@@ -12,7 +12,7 @@ class Tester
|
|
12
12
|
end # class Tester
|
13
13
|
|
14
14
|
describe ::Unobtainium::Support::Utility do
|
15
|
-
it "returns nil for a
|
15
|
+
it "returns nil for a label that can't be matched" do
|
16
16
|
expect(Tester.normalize_label("nomatch")).to be_nil
|
17
17
|
expect(Tester.normalize_label(:nomatch)).to be_nil
|
18
18
|
end
|
data/spec/world_spec.rb
CHANGED
@@ -32,7 +32,7 @@ describe ::Unobtainium::World do
|
|
32
32
|
end
|
33
33
|
|
34
34
|
it "extends driver options, but doesn't pass 'base' on" do
|
35
|
-
expect(@tester.config["drivers.leaf.base"]).to eql
|
35
|
+
expect(@tester.config["drivers.leaf.base"]).to eql %w(.drivers.mock)
|
36
36
|
expect(@tester.driver.passed_options["base"]).to be_nil
|
37
37
|
end
|
38
38
|
end
|
data/unobtainium.gemspec
CHANGED
@@ -13,6 +13,7 @@ require 'unobtainium/version'
|
|
13
13
|
|
14
14
|
# rubocop:disable Style/UnneededPercentQ, Style/ExtraSpacing
|
15
15
|
# rubocop:disable Style/SpaceAroundOperators
|
16
|
+
# rubocop:disable Metrics/BlockLength
|
16
17
|
Gem::Specification.new do |spec|
|
17
18
|
spec.name = "unobtainium"
|
18
19
|
spec.version = Unobtainium::VERSION
|
@@ -43,8 +44,8 @@ Gem::Specification.new do |spec|
|
|
43
44
|
"'phantomjs'"
|
44
45
|
|
45
46
|
spec.add_development_dependency "bundler", "~> 1.12"
|
46
|
-
spec.add_development_dependency "rubocop", "~> 0.
|
47
|
-
spec.add_development_dependency "rake", "~> 11.
|
47
|
+
spec.add_development_dependency "rubocop", "~> 0.45"
|
48
|
+
spec.add_development_dependency "rake", "~> 11.3"
|
48
49
|
spec.add_development_dependency "rspec", "~> 3.5"
|
49
50
|
spec.add_development_dependency "simplecov", "~> 0.12"
|
50
51
|
spec.add_development_dependency "yard", "~> 0.9"
|
@@ -56,8 +57,9 @@ Gem::Specification.new do |spec|
|
|
56
57
|
|
57
58
|
spec.add_dependency "sys-proctable", "~> 1.1"
|
58
59
|
spec.add_dependency "ptools", "~> 1.3"
|
59
|
-
spec.add_dependency "collapsium", "~> 0.
|
60
|
-
spec.add_dependency "collapsium-config", "~> 0.
|
60
|
+
spec.add_dependency "collapsium", "~> 0.6"
|
61
|
+
spec.add_dependency "collapsium-config", "~> 0.4"
|
61
62
|
end
|
63
|
+
# rubocop:enable Metrics/BlockLength
|
62
64
|
# rubocop:enable Style/SpaceAroundOperators
|
63
65
|
# rubocop:enable Style/UnneededPercentQ, Style/ExtraSpacing
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: unobtainium
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jens Finkhaeuser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-11-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -30,28 +30,28 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0.
|
33
|
+
version: '0.45'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '0.
|
40
|
+
version: '0.45'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '11.
|
47
|
+
version: '11.3'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '11.
|
54
|
+
version: '11.3'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rspec
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -198,28 +198,28 @@ dependencies:
|
|
198
198
|
requirements:
|
199
199
|
- - "~>"
|
200
200
|
- !ruby/object:Gem::Version
|
201
|
-
version: '0.
|
201
|
+
version: '0.6'
|
202
202
|
type: :runtime
|
203
203
|
prerelease: false
|
204
204
|
version_requirements: !ruby/object:Gem::Requirement
|
205
205
|
requirements:
|
206
206
|
- - "~>"
|
207
207
|
- !ruby/object:Gem::Version
|
208
|
-
version: '0.
|
208
|
+
version: '0.6'
|
209
209
|
- !ruby/object:Gem::Dependency
|
210
210
|
name: collapsium-config
|
211
211
|
requirement: !ruby/object:Gem::Requirement
|
212
212
|
requirements:
|
213
213
|
- - "~>"
|
214
214
|
- !ruby/object:Gem::Version
|
215
|
-
version: '0.
|
215
|
+
version: '0.4'
|
216
216
|
type: :runtime
|
217
217
|
prerelease: false
|
218
218
|
version_requirements: !ruby/object:Gem::Requirement
|
219
219
|
requirements:
|
220
220
|
- - "~>"
|
221
221
|
- !ruby/object:Gem::Version
|
222
|
-
version: '0.
|
222
|
+
version: '0.4'
|
223
223
|
description: "\n Unobtainium wraps Selenium and Appium in a simple driver abstraction
|
224
224
|
so that\n test code can more easily cover desktop browsers, mobile browsers and
|
225
225
|
mobile\n apps.\n\n Some additional useful functionality for the maintenance
|