cuesmash 0.4.0 → 0.4.1
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/.cuesmash.yml +1 -1
- data/.travis.yml +2 -1
- data/Gemfile.lock +3 -3
- data/cuesmash.gemspec +1 -1
- data/lib/cuesmash/appium_server.rb +6 -14
- data/lib/cuesmash/appium_text.rb +4 -1
- data/lib/cuesmash/command.rb +6 -12
- data/lib/cuesmash/cucumber.rb +4 -7
- data/lib/cuesmash/ios_app.rb +1 -1
- data/lib/cuesmash/start.rb +8 -7
- data/spec/appium_text_spec.rb +2 -2
- data/spec/cucumber_spec.rb +31 -54
- data/spec/test.json +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 64fb64cfd64a715d20a245bdd11dab76d43a4d80
|
4
|
+
data.tar.gz: 4698fac6718292286666145a5d374ad9e3d93c06
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fda9f12a26e4f467fdc4fee22e384aa67c53e02be418cdb44da9113f0802f030e1388a2783146e7e33e7a5d2b07fe26dcb3eb755bc91967cda780493ff31c2d6
|
7
|
+
data.tar.gz: b41ec3fc8e42f9ef94ed99062e1abe6a5e5145e22b31df294fd21ed129acc4bbe1b388024b06a01ed9ad85080a65b5de612581a7558368fd8ea26925ad4dd5d1
|
data/.cuesmash.yml
CHANGED
data/.travis.yml
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
cuesmash (0.4.
|
4
|
+
cuesmash (0.4.1)
|
5
5
|
rest-client (~> 1.7.2)
|
6
6
|
thor (>= 0.19.1)
|
7
7
|
xcpretty (>= 0.1.10)
|
@@ -36,7 +36,7 @@ GEM
|
|
36
36
|
rb-inotify (>= 0.9)
|
37
37
|
lumberjack (1.0.9)
|
38
38
|
method_source (0.8.2)
|
39
|
-
mime-types (2.
|
39
|
+
mime-types (2.6.1)
|
40
40
|
netrc (0.10.3)
|
41
41
|
pry (0.10.1)
|
42
42
|
coderay (~> 1.1.0)
|
@@ -87,4 +87,4 @@ DEPENDENCIES
|
|
87
87
|
simplecov (~> 0.10.0)
|
88
88
|
|
89
89
|
BUNDLED WITH
|
90
|
-
1.10.
|
90
|
+
1.10.5
|
data/cuesmash.gemspec
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = "cuesmash"
|
7
|
-
spec.version = "0.4.
|
7
|
+
spec.version = "0.4.1"
|
8
8
|
spec.authors = ["Alex Fish", "Jarod McBride", "Tiago Castro"]
|
9
9
|
spec.email = ["fish@ustwo.co.uk", "jarod@ustwo.com", "castro@ustwo.com"]
|
10
10
|
spec.description = "Appium project manager"
|
@@ -14,37 +14,29 @@ module Cuesmash
|
|
14
14
|
# Public: the output format for the tests
|
15
15
|
attr_accessor :format
|
16
16
|
|
17
|
-
# Public: uuid of ios device to run test on.
|
18
|
-
attr_accessor :ios_uuid
|
19
|
-
|
20
|
-
#
|
21
|
-
# Create a new instance of AppiumServer
|
22
|
-
#
|
23
|
-
def initialize(ios_uuid: nil)
|
24
|
-
@ios_uuid = ios_uuid
|
25
|
-
end
|
26
|
-
|
27
17
|
#
|
28
18
|
# Run the appium server
|
29
19
|
#
|
30
20
|
def start_server
|
31
21
|
started
|
32
22
|
|
33
|
-
command = 'appium --log-level debug
|
34
|
-
command << "--udid #{@ios_uuid} --session-override " unless @ios_uuid.nil?
|
23
|
+
command = 'appium --log-level debug'
|
35
24
|
|
36
25
|
@stdin, @stdout, @stderr, @wait_thr = Open3.popen3(command)
|
37
|
-
Logger.info "Appium
|
26
|
+
Logger.info "Appium started with pid: #{@wait_thr.pid}"
|
38
27
|
|
39
28
|
if Logger.debug?
|
40
29
|
[@stdout, @stderr].each do |stream|
|
41
30
|
Thread.new do
|
42
31
|
until (line = stream.gets).nil?
|
43
|
-
Logger.debug line
|
32
|
+
Logger.debug "[Appium] #{line}"
|
44
33
|
end
|
45
34
|
end
|
46
35
|
end
|
47
36
|
end
|
37
|
+
# looks like the we need to wait for the service to start up
|
38
|
+
# This isn't good, we should create a check to verify first.
|
39
|
+
sleep 3
|
48
40
|
end
|
49
41
|
|
50
42
|
#
|
data/lib/cuesmash/appium_text.rb
CHANGED
@@ -14,6 +14,7 @@ module Cuesmash
|
|
14
14
|
attr_accessor :device_name
|
15
15
|
attr_accessor :new_command_timeout
|
16
16
|
attr_accessor :appium_text_for_file
|
17
|
+
attr_accessor :udid
|
17
18
|
|
18
19
|
#
|
19
20
|
# Create a new appium_text instance. These params are based off the appium.txt
|
@@ -25,12 +26,13 @@ module Cuesmash
|
|
25
26
|
# @param app [String] path to built .app file
|
26
27
|
#
|
27
28
|
# @return [AppiumText] A appiumtext instance
|
28
|
-
def initialize(platform_name:, device_name:, platform_version: nil, app:, new_command_timeout: 60)
|
29
|
+
def initialize(platform_name:, device_name:, platform_version: nil, app:, new_command_timeout: 60, udid: nil)
|
29
30
|
@platform_name = platform_name
|
30
31
|
@device_name = device_name
|
31
32
|
@platform_version = platform_version
|
32
33
|
@app = app
|
33
34
|
@new_command_timeout = new_command_timeout
|
35
|
+
@udid = udid
|
34
36
|
end
|
35
37
|
|
36
38
|
def execute
|
@@ -66,6 +68,7 @@ module Cuesmash
|
|
66
68
|
text << "platformVersion = \"#{platform_version}\"\n" unless platform_version.nil?
|
67
69
|
text << "app = \"#{app}\"\n"
|
68
70
|
text << "newCommandTimeout = \"#{new_command_timeout}\"\n"
|
71
|
+
text << "udid = \"#{udid}\"\n" unless udid.nil?
|
69
72
|
Logger.debug "appium.text == #{text}"
|
70
73
|
text
|
71
74
|
end
|
data/lib/cuesmash/command.rb
CHANGED
@@ -37,7 +37,7 @@ module Cuesmash
|
|
37
37
|
profile:,
|
38
38
|
quiet: false,
|
39
39
|
timeout:,
|
40
|
-
|
40
|
+
ios_udid: nil)
|
41
41
|
if debug
|
42
42
|
Logger.level = ::Logger::DEBUG
|
43
43
|
Logger.formatter = proc do |serverity, time, _progname, msg|
|
@@ -45,18 +45,11 @@ module Cuesmash
|
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
48
|
-
# Update the plist
|
49
|
-
# update_plist(scheme, app.app_path)
|
50
|
-
|
51
48
|
# Update the appium.txt file
|
52
|
-
create_appium_txt(app: app.app_path, device_name: device, platform_version: os, timeout: timeout)
|
49
|
+
create_appium_txt(app: app.app_path, device_name: device, platform_version: os, timeout: timeout, udid: ios_udid)
|
53
50
|
|
54
51
|
# start the appium server
|
55
|
-
|
56
|
-
app_server = AppiumServer.new(ios_uuid: ios_uuid)
|
57
|
-
else
|
58
|
-
app_server = AppiumServer.new
|
59
|
-
end
|
52
|
+
app_server = AppiumServer.new
|
60
53
|
app_server.start_server
|
61
54
|
|
62
55
|
# Run the tests
|
@@ -92,12 +85,13 @@ module Cuesmash
|
|
92
85
|
# @param app [String] path to built .app file
|
93
86
|
# @param timeout [String] time in seconds to set the newCommandTimeout to.
|
94
87
|
#
|
95
|
-
def self.create_appium_txt(platform_name: 'iOS', device_name:, platform_version:, app:, timeout:)
|
88
|
+
def self.create_appium_txt(platform_name: 'iOS', device_name:, platform_version:, app:, timeout:, udid: nil)
|
96
89
|
appium = AppiumText.new(platform_name: platform_name,
|
97
90
|
device_name: device_name,
|
98
91
|
platform_version: platform_version,
|
99
92
|
app: app,
|
100
|
-
new_command_timeout: timeout
|
93
|
+
new_command_timeout: timeout,
|
94
|
+
udid: udid)
|
101
95
|
appium.execute
|
102
96
|
end
|
103
97
|
end # class Command
|
data/lib/cuesmash/cucumber.rb
CHANGED
@@ -42,21 +42,18 @@ module Cuesmash
|
|
42
42
|
|
43
43
|
status = nil
|
44
44
|
|
45
|
-
|
46
|
-
|
47
|
-
Open3.popen3 command do |_stdin, out, err, wait_thr|
|
48
|
-
[out, err].each do |stream|
|
45
|
+
Open3.popen3(command) do |_stdin, stdout, stderr, wait_thr|
|
46
|
+
[stdout, stderr].each do |stream|
|
49
47
|
Thread.new do
|
50
48
|
until (line = stream.gets).nil?
|
51
|
-
Logger.info line
|
49
|
+
Logger.info "[Cucumber] #{line}"
|
52
50
|
end
|
53
51
|
end
|
54
52
|
end
|
55
|
-
|
56
53
|
wait_thr.join
|
57
54
|
status = wait_thr.value.exitstatus
|
58
55
|
end
|
59
|
-
|
56
|
+
|
60
57
|
if status != 0
|
61
58
|
Logger.info 'Cucumber failed'
|
62
59
|
status
|
data/lib/cuesmash/ios_app.rb
CHANGED
@@ -27,7 +27,7 @@ module Cuesmash
|
|
27
27
|
# @param [String] file_name: This usually is the scheme of the xcode project
|
28
28
|
# @param [String] build_configuration: which iOS build configuration to run i.e. Release, Debug
|
29
29
|
# @param [String] app_name: name of the app
|
30
|
-
# @param [String] device: nil the
|
30
|
+
# @param [String] device: nil the UDID of the device to run on or nil if running on simulator
|
31
31
|
#
|
32
32
|
def initialize(file_name:, build_configuration:, app_name:, device: nil)
|
33
33
|
app_name = file_name if app_name.nil?
|
data/lib/cuesmash/start.rb
CHANGED
@@ -67,10 +67,10 @@ module Cuesmash
|
|
67
67
|
if @config['platform'] == 'iOS'
|
68
68
|
# enumerate over each device / OS combination and run the tests.
|
69
69
|
@config['devices'].each do |device, oses|
|
70
|
-
oses.each do |os_number,
|
71
|
-
setup_ios(device:
|
70
|
+
oses.each do |os_number, ios_udid|
|
71
|
+
setup_ios(device: ios_udid)
|
72
72
|
case
|
73
|
-
when
|
73
|
+
when ios_udid.nil?
|
74
74
|
say "\n============================\ntesting iOS #{os_number} on #{device}", :green
|
75
75
|
Cuesmash::Command.execute(device: device,
|
76
76
|
os: os_number,
|
@@ -92,7 +92,7 @@ module Cuesmash
|
|
92
92
|
profile: options[:profile],
|
93
93
|
quiet: options[:quiet],
|
94
94
|
timeout: @config['default']['test_timeout'].to_s,
|
95
|
-
|
95
|
+
ios_udid: ios_udid)
|
96
96
|
end # case
|
97
97
|
end # os each
|
98
98
|
end # device each
|
@@ -164,7 +164,7 @@ module Cuesmash
|
|
164
164
|
end
|
165
165
|
|
166
166
|
if @config['platform'] == 'iOS'
|
167
|
-
setup_ios(device: @config['default']['
|
167
|
+
setup_ios(device: @config['default']['udid'])
|
168
168
|
elsif @config['platform'] == 'Android'
|
169
169
|
say 'Setting up android'
|
170
170
|
setup_android
|
@@ -194,7 +194,7 @@ module Cuesmash
|
|
194
194
|
#
|
195
195
|
# helper method to setup and compile the iOS app
|
196
196
|
#
|
197
|
-
# @param [string] device: nil <the
|
197
|
+
# @param [string] device: nil <the UDID of the device to run on or nil if running on simulator>
|
198
198
|
#
|
199
199
|
def setup_ios(device: nil)
|
200
200
|
@app = IosApp.new(file_name: options[:scheme].join(' '),
|
@@ -235,7 +235,8 @@ module Cuesmash
|
|
235
235
|
device_name: @config['default']['os'],
|
236
236
|
platform_version: @config['default']['version'].to_s,
|
237
237
|
app: @app.app_path,
|
238
|
-
new_command_timeout: @config['default']['test_timeout'].to_s
|
238
|
+
new_command_timeout: @config['default']['test_timeout'].to_s,
|
239
|
+
udid: @config['default']['udid'])
|
239
240
|
appium.execute
|
240
241
|
end # ios_appium_text
|
241
242
|
|
data/spec/appium_text_spec.rb
CHANGED
@@ -4,10 +4,10 @@ describe Cuesmash::AppiumText do
|
|
4
4
|
|
5
5
|
describe "when creating a new instance" do
|
6
6
|
before(:all) do
|
7
|
-
@appiumtext = Cuesmash::AppiumText.new(platform_name: "iOS", device_name: "iPhone Simulator", platform_version: "7.1", app: "MyApp", new_command_timeout: "90")
|
7
|
+
@appiumtext = Cuesmash::AppiumText.new(platform_name: "iOS", device_name: "iPhone Simulator", platform_version: "7.1", app: "MyApp", new_command_timeout: "90", udid: "XXXX")
|
8
8
|
end
|
9
9
|
|
10
|
-
expected = "[caps]\nplatformName = \"iOS\"\ndeviceName = \"iPhone Simulator\"\nplatformVersion = \"7.1\"\napp = \"MyApp\"\nnewCommandTimeout = \"90\"\n"
|
10
|
+
expected = "[caps]\nplatformName = \"iOS\"\ndeviceName = \"iPhone Simulator\"\nplatformVersion = \"7.1\"\napp = \"MyApp\"\nnewCommandTimeout = \"90\"\nudid = \"XXXX\"\n"
|
11
11
|
|
12
12
|
it "should have a platform name" do
|
13
13
|
expect(@appiumtext.platform_name).to match("iOS")
|
data/spec/cucumber_spec.rb
CHANGED
@@ -1,105 +1,82 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Cuesmash::Cucumber do
|
4
|
-
|
5
4
|
before(:each) do
|
6
5
|
Cuesmash::Cucumber.any_instance.stub(:puts)
|
7
6
|
end
|
8
7
|
|
9
|
-
describe
|
10
|
-
|
11
|
-
before(:each) do
|
12
|
-
wait = double
|
13
|
-
@value = double
|
14
|
-
wait.stub(:value){@value}
|
15
|
-
wait.stub(:join)
|
16
|
-
Open3.stub(:popen3).and_yield(nil, nil, nil, wait)
|
17
|
-
|
18
|
-
@cucumber = Cuesmash::Cucumber.new(nil, nil, nil)
|
19
|
-
@cucumber.stub(:command)
|
20
|
-
end
|
21
|
-
|
22
|
-
it "should complete if all is well" do
|
23
|
-
@value.stub(:exitstatus){0}
|
24
|
-
@cucumber.should_receive(:completed)
|
25
|
-
@cucumber.test
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
describe "when generating the command" do
|
30
|
-
|
31
|
-
it "should not add the ios version if missing" do
|
8
|
+
describe 'when generating the command' do
|
9
|
+
it 'should not add the ios version if missing' do
|
32
10
|
@cucumber = Cuesmash::Cucumber.new(nil, nil, nil)
|
33
11
|
@cucumber.stub(:tag_arguments)
|
34
12
|
|
35
|
-
expect(@cucumber.instance_eval{command}).not_to match(/DEVICE_TARGET/)
|
13
|
+
expect(@cucumber.instance_eval { command }).not_to match(/DEVICE_TARGET/)
|
36
14
|
end
|
37
15
|
|
38
|
-
it
|
16
|
+
it 'should add the format' do
|
39
17
|
@cucumber = Cuesmash::Cucumber.new(nil, nil, nil)
|
40
|
-
@cucumber.format =
|
18
|
+
@cucumber.format = 'test-format'
|
41
19
|
|
42
|
-
expect(@cucumber.instance_eval{command}).to match(/--format test-format/)
|
20
|
+
expect(@cucumber.instance_eval { command }).to match(/--format test-format/)
|
43
21
|
end
|
44
22
|
|
45
|
-
it
|
23
|
+
it 'should not add the format if missing' do
|
46
24
|
@cucumber = Cuesmash::Cucumber.new(nil, nil, nil)
|
47
25
|
|
48
|
-
expect(@cucumber.instance_eval{command}).not_to match(/--format/)
|
26
|
+
expect(@cucumber.instance_eval { command }).not_to match(/--format/)
|
49
27
|
end
|
50
28
|
|
51
|
-
it
|
29
|
+
it 'should add the output' do
|
52
30
|
@cucumber = Cuesmash::Cucumber.new(nil, nil, nil)
|
53
|
-
@cucumber.output =
|
31
|
+
@cucumber.output = 'test-output'
|
54
32
|
|
55
|
-
expect(@cucumber.instance_eval{command}).to match(/--out test-output/)
|
33
|
+
expect(@cucumber.instance_eval { command }).to match(/--out test-output/)
|
56
34
|
end
|
57
35
|
|
58
|
-
it
|
36
|
+
it 'should not add the output if missing' do
|
59
37
|
@cucumber = Cuesmash::Cucumber.new(nil, nil, nil)
|
60
38
|
|
61
|
-
expect(@cucumber.instance_eval{command}).not_to match(/--out/)
|
39
|
+
expect(@cucumber.instance_eval { command }).not_to match(/--out/)
|
62
40
|
end
|
63
41
|
|
64
|
-
it
|
65
|
-
@cucumber = Cuesmash::Cucumber.new([
|
66
|
-
expect(@cucumber.instance_eval{command}).to match(/--tags tag1 --tags tag2/)
|
42
|
+
it 'should add the tags' do
|
43
|
+
@cucumber = Cuesmash::Cucumber.new(['tag1', 'tag2'], nil, nil)
|
44
|
+
expect(@cucumber.instance_eval { command }).to match(/--tags tag1 --tags tag2/)
|
67
45
|
end
|
68
46
|
|
69
|
-
it
|
47
|
+
it 'should not add tags if missing' do
|
70
48
|
@cucumber = Cuesmash::Cucumber.new(nil, nil, nil)
|
71
|
-
expect(@cucumber.instance_eval{command}).not_to match(/--tags/)
|
49
|
+
expect(@cucumber.instance_eval { command }).not_to match(/--tags/)
|
72
50
|
end
|
73
51
|
|
74
|
-
it
|
75
|
-
@cucumber = Cuesmash::Cucumber.new(nil,
|
76
|
-
expect(@cucumber.instance_eval{command}).to match(/--profile test/)
|
52
|
+
it 'should add the profile' do
|
53
|
+
@cucumber = Cuesmash::Cucumber.new(nil, 'test', nil)
|
54
|
+
expect(@cucumber.instance_eval { command }).to match(/--profile test/)
|
77
55
|
end
|
78
56
|
|
79
|
-
it
|
57
|
+
it 'should not add tags if missing' do
|
80
58
|
@cucumber = Cuesmash::Cucumber.new(nil, nil, nil)
|
81
|
-
expect(@cucumber.instance_eval{command}).not_to match(/--profile/)
|
59
|
+
expect(@cucumber.instance_eval { command }).not_to match(/--profile/)
|
82
60
|
end
|
83
61
|
|
84
|
-
it
|
62
|
+
it 'should add the color flag' do
|
85
63
|
@cucumber = Cuesmash::Cucumber.new(nil, nil, nil)
|
86
|
-
expect(@cucumber.instance_eval{command}).to match(/-c/)
|
64
|
+
expect(@cucumber.instance_eval { command }).to match(/-c/)
|
87
65
|
end
|
88
66
|
|
89
|
-
it
|
67
|
+
it 'should not add quiet if missing' do
|
90
68
|
@cucumber = Cuesmash::Cucumber.new(nil, nil, nil)
|
91
|
-
expect(@cucumber.instance_eval{command}).not_to match(/--quiet/)
|
69
|
+
expect(@cucumber.instance_eval { command }).not_to match(/--quiet/)
|
92
70
|
end
|
93
71
|
|
94
|
-
it
|
72
|
+
it 'should not add quiet if false' do
|
95
73
|
@cucumber = Cuesmash::Cucumber.new(nil, nil, false)
|
96
|
-
expect(@cucumber.instance_eval{command}).not_to match(/--quiet/)
|
74
|
+
expect(@cucumber.instance_eval { command }).not_to match(/--quiet/)
|
97
75
|
end
|
98
76
|
|
99
|
-
it
|
77
|
+
it 'should add the quiet flag' do
|
100
78
|
@cucumber = Cuesmash::Cucumber.new(nil, nil, true)
|
101
|
-
expect(@cucumber.instance_eval{command}).to match(/--quiet/)
|
79
|
+
expect(@cucumber.instance_eval { command }).to match(/--quiet/)
|
102
80
|
end
|
103
|
-
|
104
81
|
end
|
105
82
|
end
|
data/spec/test.json
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"url_preference":"10.1.
|
1
|
+
{"url_preference":"10.1.19.106","port_preference":"4567"}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cuesmash
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Fish
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2015-07-
|
13
|
+
date: 2015-07-31 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: bundler
|