cuesmash 0.2.0.0 → 0.3.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 +4 -4
- data/.cuesmash.yml +5 -0
- data/Gemfile.lock +29 -30
- data/cuesmash.gemspec +6 -7
- data/lib/cuesmash/command.rb +0 -12
- data/lib/cuesmash/jsonconf.rb +87 -0
- data/lib/cuesmash/start.rb +22 -5
- data/lib/cuesmash.rb +2 -3
- data/spec/command_spec.rb +17 -57
- data/spec/jsonconf_spec.rb +42 -0
- data/spec/spec_helper.rb +6 -2
- data/spec/test.json +1 -0
- metadata +17 -30
- data/lib/cuesmash/plist.rb +0 -107
- data/spec/plist_spec.rb +0 -78
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2c36e405e7913aac8f74cfead621aed03042e134
|
|
4
|
+
data.tar.gz: 92cf770512a727db44de69656ae2be89c0ccfa12
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 95c7053653f4301113b695ab165e31497a5ba57dfdd85cd871234feab371684e9400b74ef08edebe53e18c5efd0999fc1821616f4e440238f3340604f73456fe
|
|
7
|
+
data.tar.gz: d65680d7d616249ae8ee301e12ea7411bd8691da122d75d30c9e3bc812e45257ab2ae0abb32615181e179c6311bff4d0aaa322e33662521c0b6b071c86127d8b
|
data/.cuesmash.yml
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,25 +1,20 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
cuesmash (0.
|
|
5
|
-
CFPropertyList (>= 2.2.8)
|
|
4
|
+
cuesmash (0.3.0)
|
|
6
5
|
rest-client (~> 1.7.2)
|
|
7
6
|
thor (>= 0.19.1)
|
|
8
|
-
xcpretty (>= 0.1.
|
|
7
|
+
xcpretty (>= 0.1.10)
|
|
9
8
|
|
|
10
9
|
GEM
|
|
11
10
|
remote: https://rubygems.org/
|
|
12
11
|
specs:
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
columnize (~> 0.8)
|
|
16
|
-
debugger-linecache (~> 1.2)
|
|
17
|
-
slop (~> 3.6)
|
|
12
|
+
byebug (5.0.0)
|
|
13
|
+
columnize (= 0.9.0)
|
|
18
14
|
celluloid (0.16.0)
|
|
19
15
|
timers (~> 4.0.0)
|
|
20
16
|
coderay (1.1.0)
|
|
21
|
-
columnize (0.
|
|
22
|
-
debugger-linecache (1.2.0)
|
|
17
|
+
columnize (0.9.0)
|
|
23
18
|
diff-lcs (1.2.5)
|
|
24
19
|
docile (1.1.5)
|
|
25
20
|
ffi (1.9.5)
|
|
@@ -34,6 +29,7 @@ GEM
|
|
|
34
29
|
guard (~> 2.1)
|
|
35
30
|
rspec (>= 2.14, < 4.0)
|
|
36
31
|
hitimes (1.2.2)
|
|
32
|
+
json (1.8.3)
|
|
37
33
|
listen (2.7.11)
|
|
38
34
|
celluloid (>= 0.15.2)
|
|
39
35
|
rb-fsevent (>= 0.9.3)
|
|
@@ -41,7 +37,6 @@ GEM
|
|
|
41
37
|
lumberjack (1.0.9)
|
|
42
38
|
method_source (0.8.2)
|
|
43
39
|
mime-types (2.4.3)
|
|
44
|
-
multi_json (1.10.1)
|
|
45
40
|
netrc (0.10.3)
|
|
46
41
|
pry (0.10.1)
|
|
47
42
|
coderay (~> 1.1.0)
|
|
@@ -54,38 +49,42 @@ GEM
|
|
|
54
49
|
rest-client (1.7.3)
|
|
55
50
|
mime-types (>= 1.16, < 3.0)
|
|
56
51
|
netrc (~> 0.7)
|
|
57
|
-
rspec (3.
|
|
58
|
-
rspec-core (~> 3.
|
|
59
|
-
rspec-expectations (~> 3.
|
|
60
|
-
rspec-mocks (~> 3.
|
|
61
|
-
rspec-core (3.1
|
|
62
|
-
rspec-support (~> 3.
|
|
63
|
-
rspec-expectations (3.
|
|
52
|
+
rspec (3.3.0)
|
|
53
|
+
rspec-core (~> 3.3.0)
|
|
54
|
+
rspec-expectations (~> 3.3.0)
|
|
55
|
+
rspec-mocks (~> 3.3.0)
|
|
56
|
+
rspec-core (3.3.1)
|
|
57
|
+
rspec-support (~> 3.3.0)
|
|
58
|
+
rspec-expectations (3.3.0)
|
|
64
59
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
65
|
-
rspec-support (~> 3.
|
|
66
|
-
rspec-mocks (3.1
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
60
|
+
rspec-support (~> 3.3.0)
|
|
61
|
+
rspec-mocks (3.3.1)
|
|
62
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
63
|
+
rspec-support (~> 3.3.0)
|
|
64
|
+
rspec-support (3.3.0)
|
|
65
|
+
simplecov (0.10.0)
|
|
70
66
|
docile (~> 1.1.0)
|
|
71
|
-
|
|
72
|
-
simplecov-html (~> 0.
|
|
73
|
-
simplecov-html (0.
|
|
67
|
+
json (~> 1.8)
|
|
68
|
+
simplecov-html (~> 0.10.0)
|
|
69
|
+
simplecov-html (0.10.0)
|
|
74
70
|
slop (3.6.0)
|
|
75
71
|
thor (0.19.1)
|
|
76
72
|
timers (4.0.1)
|
|
77
73
|
hitimes
|
|
78
|
-
xcpretty (0.1.
|
|
74
|
+
xcpretty (0.1.10)
|
|
79
75
|
|
|
80
76
|
PLATFORMS
|
|
81
77
|
ruby
|
|
82
78
|
|
|
83
79
|
DEPENDENCIES
|
|
84
80
|
bundler (~> 1.3)
|
|
85
|
-
byebug (>=
|
|
81
|
+
byebug (>= 5.0.0)
|
|
86
82
|
cuesmash!
|
|
87
83
|
guard-rspec (>= 4.3.1)
|
|
88
84
|
pry (>= 0.10.1)
|
|
89
85
|
rake (>= 10.3.2)
|
|
90
|
-
rspec (>= 3.
|
|
91
|
-
simplecov (~> 0.
|
|
86
|
+
rspec (>= 3.3.0)
|
|
87
|
+
simplecov (~> 0.10.0)
|
|
88
|
+
|
|
89
|
+
BUNDLED WITH
|
|
90
|
+
1.10.4
|
data/cuesmash.gemspec
CHANGED
|
@@ -4,11 +4,11 @@ $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.
|
|
7
|
+
spec.version = "0.3.0"
|
|
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"
|
|
11
|
-
spec.summary = "Compile an app
|
|
11
|
+
spec.summary = "Compile an app, point the app at sinatra, run cucumber with appium"
|
|
12
12
|
spec.homepage = "https://github.com/ustwo/cuesmash"
|
|
13
13
|
spec.license = "MIT"
|
|
14
14
|
|
|
@@ -21,15 +21,14 @@ Gem::Specification.new do |spec|
|
|
|
21
21
|
|
|
22
22
|
spec.add_development_dependency "bundler", "~> 1.3"
|
|
23
23
|
spec.add_development_dependency 'rake', '>= 10.3.2'
|
|
24
|
-
spec.add_development_dependency 'rspec', '>= 3.
|
|
24
|
+
spec.add_development_dependency 'rspec', '>= 3.3.0'
|
|
25
25
|
spec.add_development_dependency 'guard-rspec', '>= 4.3.1'
|
|
26
26
|
spec.add_development_dependency 'pry', '>= 0.10.1'
|
|
27
|
-
spec.add_development_dependency 'byebug', '>=
|
|
28
|
-
spec.add_development_dependency 'simplecov', '~> 0.
|
|
27
|
+
spec.add_development_dependency 'byebug', '>= 5.0.0'
|
|
28
|
+
spec.add_development_dependency 'simplecov', '~> 0.10.0'
|
|
29
29
|
|
|
30
|
-
spec.add_runtime_dependency 'CFPropertyList', '>= 2.2.8'
|
|
31
30
|
spec.add_runtime_dependency 'thor', '>= 0.19.1'
|
|
32
|
-
spec.add_runtime_dependency 'xcpretty', '>= 0.1.
|
|
31
|
+
spec.add_runtime_dependency 'xcpretty', '>= 0.1.10'
|
|
33
32
|
spec.add_runtime_dependency 'rest-client', '~> 1.7.2'
|
|
34
33
|
|
|
35
34
|
spec.executables << "cuesmash"
|
data/lib/cuesmash/command.rb
CHANGED
|
@@ -61,18 +61,6 @@ module Cuesmash
|
|
|
61
61
|
# app_server.stop_server
|
|
62
62
|
end # execute
|
|
63
63
|
|
|
64
|
-
#
|
|
65
|
-
# Update the applications plist so that the application
|
|
66
|
-
# connects to sinatra
|
|
67
|
-
#
|
|
68
|
-
# @param scheme [String] The scheme related to the application
|
|
69
|
-
# @param app_path [String] The path to the app
|
|
70
|
-
#
|
|
71
|
-
def self.update_plist(scheme, app_path)
|
|
72
|
-
plist = Cuesmash::Plist.new(scheme, app_path)
|
|
73
|
-
plist.execute
|
|
74
|
-
end
|
|
75
|
-
|
|
76
64
|
#
|
|
77
65
|
# Run the cucumber tests, that's why we're here afterall
|
|
78
66
|
#
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# coding: utf-8
|
|
3
|
+
|
|
4
|
+
require 'json'
|
|
5
|
+
|
|
6
|
+
module Cuesmash
|
|
7
|
+
#
|
|
8
|
+
# Cuesmash needs to create a json file in the iOS or Android project to trick the simulator into connecting
|
|
9
|
+
# to a sinatra server instead
|
|
10
|
+
#
|
|
11
|
+
# @author [jarod]
|
|
12
|
+
#
|
|
13
|
+
class JsonConf
|
|
14
|
+
# Public: the Scheme the json is related to
|
|
15
|
+
attr_accessor :file_name
|
|
16
|
+
attr_accessor :app_path
|
|
17
|
+
attr_accessor :port
|
|
18
|
+
|
|
19
|
+
#
|
|
20
|
+
# Create a new json instance
|
|
21
|
+
# @param scheme [String] The scheme related to the json
|
|
22
|
+
# @param app_path [String] The dir where the app is going to be placed.
|
|
23
|
+
# @param file_name [String] Default: server_config. The name of the file with the server configurations.
|
|
24
|
+
#
|
|
25
|
+
# @return [JsonConf] A JsonConf instance
|
|
26
|
+
def initialize(app_path:, file_name: 'server_config', port:)
|
|
27
|
+
@file_name = file_name
|
|
28
|
+
@app_path = app_path
|
|
29
|
+
@port = port
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
#
|
|
33
|
+
# Executes the json tasks update and clear the old jsons
|
|
34
|
+
#
|
|
35
|
+
def execute
|
|
36
|
+
started
|
|
37
|
+
update
|
|
38
|
+
|
|
39
|
+
completed
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
private
|
|
43
|
+
|
|
44
|
+
#
|
|
45
|
+
# Output a nice message for starting
|
|
46
|
+
#
|
|
47
|
+
def started
|
|
48
|
+
Logger.info 'Updating json'
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
#
|
|
52
|
+
# Output a nice message for completing
|
|
53
|
+
#
|
|
54
|
+
def completed
|
|
55
|
+
Logger.info 'json updated 👌'
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
#
|
|
59
|
+
# Update the Xcode applications server.json file
|
|
60
|
+
# with sinatras port and URL
|
|
61
|
+
#
|
|
62
|
+
def update
|
|
63
|
+
data = {
|
|
64
|
+
url_preference: "#{server_ip}",
|
|
65
|
+
port_preference: "#{@port}"
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
File.write(server_json_path, data.to_json)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
#
|
|
72
|
+
# The local IP address of the mock backend server
|
|
73
|
+
#
|
|
74
|
+
# @return [String] The mock backends IP
|
|
75
|
+
def server_ip
|
|
76
|
+
Socket.ip_address_list.find { |a| a.ipv4? && !a.ipv4_loopback? }.ip_address
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
#
|
|
80
|
+
# The path to the server config json
|
|
81
|
+
#
|
|
82
|
+
# @return [String] The full path to the server config json
|
|
83
|
+
def server_json_path
|
|
84
|
+
@app_path + "/#{@file_name}.json"
|
|
85
|
+
end
|
|
86
|
+
end # class json
|
|
87
|
+
end
|
data/lib/cuesmash/start.rb
CHANGED
|
@@ -9,6 +9,7 @@ require 'cuesmash/android_compiler'
|
|
|
9
9
|
require 'cuesmash/android_command'
|
|
10
10
|
require 'cuesmash/setup'
|
|
11
11
|
require 'byebug'
|
|
12
|
+
require 'json'
|
|
12
13
|
|
|
13
14
|
module Cuesmash
|
|
14
15
|
CONFIG_FILE = '.cuesmash.yml'
|
|
@@ -22,7 +23,8 @@ module Cuesmash
|
|
|
22
23
|
|
|
23
24
|
desc 'test OPTIONS', 'run the tests'
|
|
24
25
|
long_desc <<-LONGDESC
|
|
25
|
-
--tags -t the tags to pass to cucumber, for multiple tags pass one per tag.
|
|
26
|
+
--tags -t the tags to pass to cucumber, for multiple tags pass one per tag.
|
|
27
|
+
See cucumber tags for more info. https://github.com/cucumber/cucumber/wiki/Tags\n
|
|
26
28
|
--output -o The output directory for the test report --not yet implemented--\n
|
|
27
29
|
--format -f The format of the test report --not yet implemented--\n
|
|
28
30
|
--scheme -s iOS only: the Xcode scheme to build\n
|
|
@@ -46,11 +48,18 @@ module Cuesmash
|
|
|
46
48
|
aliases: '-c', desc: 'turn on settings for building on Travis CI'
|
|
47
49
|
method_option :profile, type: :string, aliases: '-p', desc: 'which cucumber.yml profile to use'
|
|
48
50
|
method_option :quiet, type: :boolean, aliases: '-q', desc: 'cucumber quiet mode'
|
|
49
|
-
# method_option :server, type: :string, aliases: "-r", desc: ""
|
|
50
51
|
def test
|
|
51
52
|
# get the cuesmash.yml config
|
|
52
53
|
@config = load_config
|
|
53
54
|
|
|
55
|
+
unless @config['mock_server_conf'].nil?
|
|
56
|
+
mock_server = JsonConf.new(app_path: @config['mock_server_conf']['path'],
|
|
57
|
+
file_name: @config['mock_server_conf']['name'],
|
|
58
|
+
port: @config['mock_server_conf']['port'])
|
|
59
|
+
|
|
60
|
+
mock_server.execute
|
|
61
|
+
end
|
|
62
|
+
|
|
54
63
|
# Compile the project
|
|
55
64
|
if @config['platform'] == 'iOS'
|
|
56
65
|
|
|
@@ -110,7 +119,6 @@ module Cuesmash
|
|
|
110
119
|
timeout: @config['default']['test_timeout'].to_s)
|
|
111
120
|
end # device each
|
|
112
121
|
end
|
|
113
|
-
|
|
114
122
|
else
|
|
115
123
|
say "please set platform: 'iOS' or 'Android' in your .cuesmash.yml file", :red
|
|
116
124
|
return
|
|
@@ -124,7 +132,6 @@ module Cuesmash
|
|
|
124
132
|
LONGDESC
|
|
125
133
|
method_option :scheme, type: :array, aliases: '-s', desc: 'the Xcode scheme to build'
|
|
126
134
|
method_option :app_name, type: :string, aliases: '-n', desc: 'Android only: the name of the app'
|
|
127
|
-
|
|
128
135
|
def build
|
|
129
136
|
# get the cuesmash.yml config
|
|
130
137
|
@config = load_config
|
|
@@ -135,6 +142,14 @@ module Cuesmash
|
|
|
135
142
|
return
|
|
136
143
|
end
|
|
137
144
|
|
|
145
|
+
unless @config['mock_server_conf'].nil?
|
|
146
|
+
mock_server = JsonConf.new(app_path: @config['mock_server_conf']['path'],
|
|
147
|
+
file_name: @config['mock_server_conf']['name'],
|
|
148
|
+
port: @config['mock_server_conf']['port'])
|
|
149
|
+
|
|
150
|
+
mock_server.execute
|
|
151
|
+
end
|
|
152
|
+
|
|
138
153
|
if @config['platform'] == 'iOS'
|
|
139
154
|
setup_ios
|
|
140
155
|
elsif @config['platform'] == 'Android'
|
|
@@ -167,7 +182,9 @@ module Cuesmash
|
|
|
167
182
|
# helper methods
|
|
168
183
|
#
|
|
169
184
|
def setup_ios
|
|
170
|
-
@app = IosApp.new(file_name: options[:scheme].join(' '),
|
|
185
|
+
@app = IosApp.new(file_name: options[:scheme].join(' '),
|
|
186
|
+
build_configuration: @config['build_configuration'],
|
|
187
|
+
app_name: @config['app_name'])
|
|
171
188
|
|
|
172
189
|
# Compile the project
|
|
173
190
|
compiler = Cuesmash::IosCompiler.new(scheme: options[:scheme].join(' '),
|
data/lib/cuesmash.rb
CHANGED
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
# coding: utf-8
|
|
3
3
|
|
|
4
4
|
require 'optparse'
|
|
5
|
-
require
|
|
6
|
-
require 'cfpropertylist'
|
|
5
|
+
require 'open3'
|
|
7
6
|
require 'find'
|
|
8
7
|
require 'socket'
|
|
9
8
|
require 'fileutils'
|
|
@@ -13,11 +12,11 @@ require 'yaml'
|
|
|
13
12
|
|
|
14
13
|
require 'cuesmash/command'
|
|
15
14
|
require 'cuesmash/compiler'
|
|
16
|
-
require 'cuesmash/plist'
|
|
17
15
|
require 'cuesmash/cucumber'
|
|
18
16
|
require 'cuesmash/appium_text'
|
|
19
17
|
require 'cuesmash/ios_app'
|
|
20
18
|
require 'cuesmash/appium_server'
|
|
19
|
+
require 'cuesmash/jsonconf'
|
|
21
20
|
|
|
22
21
|
module Cuesmash
|
|
23
22
|
PORT = 4567
|
data/spec/command_spec.rb
CHANGED
|
@@ -1,86 +1,46 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
describe Cuesmash::Command do
|
|
4
|
-
|
|
5
|
-
describe "when executing" do
|
|
6
|
-
|
|
4
|
+
describe 'when executing' do
|
|
7
5
|
before(:each) do
|
|
8
6
|
Cuesmash::Command.stub(:compile)
|
|
9
|
-
Cuesmash::Command.stub(:parse){nil}
|
|
7
|
+
Cuesmash::Command.stub(:parse) { nil }
|
|
10
8
|
end
|
|
11
9
|
end
|
|
12
10
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
# @mock = double(Cuesmash::Compiler)
|
|
17
|
-
# @mock.stub(:compile)
|
|
18
|
-
# Cuesmash::Compiler.stub(:new){@mock}
|
|
19
|
-
# end
|
|
20
|
-
#
|
|
21
|
-
# it "should set the compilers scheme and tmp dir" do
|
|
22
|
-
# Cuesmash::Compiler.should_receive(:new).with("scheme", "/tmp")
|
|
23
|
-
# Cuesmash::Command.compile("scheme", "/tmp")
|
|
24
|
-
# end
|
|
25
|
-
#
|
|
26
|
-
# it "should start compiling" do
|
|
27
|
-
# @mock.should_receive(:compile)
|
|
28
|
-
# Cuesmash::Command.compile("scheme", "/tmp")
|
|
29
|
-
# end
|
|
30
|
-
# end
|
|
31
|
-
|
|
32
|
-
describe "when updating the plist" do
|
|
33
|
-
|
|
34
|
-
before(:each ) do
|
|
35
|
-
@mock = double(Cuesmash::Plist)
|
|
36
|
-
@mock.stub(:execute)
|
|
37
|
-
Cuesmash::Plist.stub(:new){@mock}
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
it "should set the plists scheme" do
|
|
41
|
-
Cuesmash::Plist.should_receive(:new).with("scheme", "/tmp")
|
|
42
|
-
Cuesmash::Command.update_plist("scheme", "/tmp")
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
it "should execute the plist update" do
|
|
46
|
-
@mock.should_receive(:execute)
|
|
47
|
-
Cuesmash::Command.update_plist("scheme", "/tmp")
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
describe "when running the cucumber tests" do
|
|
51
|
-
|
|
52
|
-
before(:each ) do
|
|
11
|
+
describe 'when updating the plist' do
|
|
12
|
+
describe 'when running the cucumber tests' do
|
|
13
|
+
before(:each) do
|
|
53
14
|
@mock = double(Cuesmash::Cucumber)
|
|
54
15
|
@mock.stub(:test)
|
|
55
|
-
Cuesmash::Cucumber.stub(:new){@mock}
|
|
16
|
+
Cuesmash::Cucumber.stub(:new) { @mock }
|
|
56
17
|
end
|
|
57
18
|
|
|
58
|
-
it
|
|
59
|
-
Cuesmash::Cucumber.should_receive(:new).with(
|
|
60
|
-
Cuesmash::Command.run_tests(tags:
|
|
19
|
+
it 'should set the cucumber tags' do
|
|
20
|
+
Cuesmash::Cucumber.should_receive(:new).with('tags', anything, anything)
|
|
21
|
+
Cuesmash::Command.run_tests(tags: 'tags', profile: 'profile', quiet: true)
|
|
61
22
|
end
|
|
62
23
|
|
|
63
|
-
it
|
|
24
|
+
it 'should set the format' do
|
|
64
25
|
@cucumber = Cuesmash::Cucumber.new
|
|
65
|
-
Cuesmash::Cucumber.stub(:new){@cucumber}
|
|
26
|
+
Cuesmash::Cucumber.stub(:new) { @cucumber }
|
|
66
27
|
|
|
67
28
|
@cucumber.should_receive(:format=)
|
|
68
|
-
Cuesmash::Command.run_tests(tags: nil, profile: nil, format:
|
|
29
|
+
Cuesmash::Command.run_tests(tags: nil, profile: nil, format: 'format', quiet: anything)
|
|
69
30
|
end
|
|
70
31
|
|
|
71
|
-
it
|
|
32
|
+
it 'should set the output' do
|
|
72
33
|
@cucumber = Cuesmash::Cucumber.new
|
|
73
|
-
Cuesmash::Cucumber.stub(:new){@cucumber}
|
|
34
|
+
Cuesmash::Cucumber.stub(:new) { @cucumber }
|
|
74
35
|
|
|
75
36
|
@cucumber.should_receive(:output=)
|
|
76
|
-
Cuesmash::Command.run_tests(tags: nil, profile: nil, format: nil, output:
|
|
37
|
+
Cuesmash::Command.run_tests(tags: nil, profile: nil, format: nil, output: 'output', quiet: anything)
|
|
77
38
|
end
|
|
78
39
|
|
|
79
|
-
it
|
|
40
|
+
it 'should start the tests' do
|
|
80
41
|
@mock.should_receive(:test)
|
|
81
|
-
Cuesmash::Command.run_tests(tags:
|
|
42
|
+
Cuesmash::Command.run_tests(tags: 'tags', profile: 'profile', quiet: true)
|
|
82
43
|
end
|
|
83
|
-
|
|
84
44
|
end # describe "when running the cucumber tests"
|
|
85
45
|
end # describe "when updating the plist"
|
|
86
46
|
end # describe Cuesmash::Command
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Cuesmash::JsonConf do
|
|
4
|
+
describe 'when executed' do
|
|
5
|
+
before(:each) do
|
|
6
|
+
@json = Cuesmash::JsonConf.new(app_path: 'spec', file_name: 'test', port: '4567')
|
|
7
|
+
@json.stub(:update)
|
|
8
|
+
@json.stub(:clear)
|
|
9
|
+
@json.stub(:completed)
|
|
10
|
+
@json.stub(:started)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it 'should update' do
|
|
14
|
+
@json.should_receive(:update)
|
|
15
|
+
@json.execute
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
describe 'when updating' do
|
|
20
|
+
before(:each) do
|
|
21
|
+
@file_write = double(File)
|
|
22
|
+
@file_write.stub(:write)
|
|
23
|
+
|
|
24
|
+
@json = Cuesmash::JsonConf.new(app_path: 'spec', file_name: 'test', port: '4567')
|
|
25
|
+
@json.stub(:clear)
|
|
26
|
+
@json.stub(:completed)
|
|
27
|
+
@json.stub(:started)
|
|
28
|
+
@json.stub(:app_path) { 'app_path' }
|
|
29
|
+
@json.stub(:file_name)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it 'should set the server ip and port' do
|
|
33
|
+
@json.stub(:server_ip) { 'server_ip' }
|
|
34
|
+
|
|
35
|
+
@json.execute
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it 'should write the app server plist' do
|
|
39
|
+
@json.execute
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
data/spec/spec_helper.rb
CHANGED
data/spec/test.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"url_preference":"10.1.20.99","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
|
+
version: 0.3.0
|
|
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-06-
|
|
13
|
+
date: 2015-06-30 00:00:00.000000000 Z
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: bundler
|
|
@@ -46,14 +46,14 @@ dependencies:
|
|
|
46
46
|
requirements:
|
|
47
47
|
- - ">="
|
|
48
48
|
- !ruby/object:Gem::Version
|
|
49
|
-
version: 3.
|
|
49
|
+
version: 3.3.0
|
|
50
50
|
type: :development
|
|
51
51
|
prerelease: false
|
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
|
53
53
|
requirements:
|
|
54
54
|
- - ">="
|
|
55
55
|
- !ruby/object:Gem::Version
|
|
56
|
-
version: 3.
|
|
56
|
+
version: 3.3.0
|
|
57
57
|
- !ruby/object:Gem::Dependency
|
|
58
58
|
name: guard-rspec
|
|
59
59
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -88,42 +88,28 @@ dependencies:
|
|
|
88
88
|
requirements:
|
|
89
89
|
- - ">="
|
|
90
90
|
- !ruby/object:Gem::Version
|
|
91
|
-
version:
|
|
91
|
+
version: 5.0.0
|
|
92
92
|
type: :development
|
|
93
93
|
prerelease: false
|
|
94
94
|
version_requirements: !ruby/object:Gem::Requirement
|
|
95
95
|
requirements:
|
|
96
96
|
- - ">="
|
|
97
97
|
- !ruby/object:Gem::Version
|
|
98
|
-
version:
|
|
98
|
+
version: 5.0.0
|
|
99
99
|
- !ruby/object:Gem::Dependency
|
|
100
100
|
name: simplecov
|
|
101
101
|
requirement: !ruby/object:Gem::Requirement
|
|
102
102
|
requirements:
|
|
103
103
|
- - "~>"
|
|
104
104
|
- !ruby/object:Gem::Version
|
|
105
|
-
version: 0.
|
|
105
|
+
version: 0.10.0
|
|
106
106
|
type: :development
|
|
107
107
|
prerelease: false
|
|
108
108
|
version_requirements: !ruby/object:Gem::Requirement
|
|
109
109
|
requirements:
|
|
110
110
|
- - "~>"
|
|
111
111
|
- !ruby/object:Gem::Version
|
|
112
|
-
version: 0.
|
|
113
|
-
- !ruby/object:Gem::Dependency
|
|
114
|
-
name: CFPropertyList
|
|
115
|
-
requirement: !ruby/object:Gem::Requirement
|
|
116
|
-
requirements:
|
|
117
|
-
- - ">="
|
|
118
|
-
- !ruby/object:Gem::Version
|
|
119
|
-
version: 2.2.8
|
|
120
|
-
type: :runtime
|
|
121
|
-
prerelease: false
|
|
122
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
123
|
-
requirements:
|
|
124
|
-
- - ">="
|
|
125
|
-
- !ruby/object:Gem::Version
|
|
126
|
-
version: 2.2.8
|
|
112
|
+
version: 0.10.0
|
|
127
113
|
- !ruby/object:Gem::Dependency
|
|
128
114
|
name: thor
|
|
129
115
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -144,14 +130,14 @@ dependencies:
|
|
|
144
130
|
requirements:
|
|
145
131
|
- - ">="
|
|
146
132
|
- !ruby/object:Gem::Version
|
|
147
|
-
version: 0.1.
|
|
133
|
+
version: 0.1.10
|
|
148
134
|
type: :runtime
|
|
149
135
|
prerelease: false
|
|
150
136
|
version_requirements: !ruby/object:Gem::Requirement
|
|
151
137
|
requirements:
|
|
152
138
|
- - ">="
|
|
153
139
|
- !ruby/object:Gem::Version
|
|
154
|
-
version: 0.1.
|
|
140
|
+
version: 0.1.10
|
|
155
141
|
- !ruby/object:Gem::Dependency
|
|
156
142
|
name: rest-client
|
|
157
143
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -201,7 +187,7 @@ files:
|
|
|
201
187
|
- lib/cuesmash/cucumber.rb
|
|
202
188
|
- lib/cuesmash/ios_app.rb
|
|
203
189
|
- lib/cuesmash/ios_compiler.rb
|
|
204
|
-
- lib/cuesmash/
|
|
190
|
+
- lib/cuesmash/jsonconf.rb
|
|
205
191
|
- lib/cuesmash/setup.rb
|
|
206
192
|
- lib/cuesmash/start.rb
|
|
207
193
|
- spec/android_compiler_spec.rb
|
|
@@ -210,8 +196,9 @@ files:
|
|
|
210
196
|
- spec/cucumber_spec.rb
|
|
211
197
|
- spec/ios_app_spec.rb
|
|
212
198
|
- spec/ios_compiler_spec.rb
|
|
213
|
-
- spec/
|
|
199
|
+
- spec/jsonconf_spec.rb
|
|
214
200
|
- spec/spec_helper.rb
|
|
201
|
+
- spec/test.json
|
|
215
202
|
homepage: https://github.com/ustwo/cuesmash
|
|
216
203
|
licenses:
|
|
217
204
|
- MIT
|
|
@@ -232,10 +219,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
232
219
|
version: '0'
|
|
233
220
|
requirements: []
|
|
234
221
|
rubyforge_project:
|
|
235
|
-
rubygems_version: 2.4.
|
|
222
|
+
rubygems_version: 2.4.6
|
|
236
223
|
signing_key:
|
|
237
224
|
specification_version: 4
|
|
238
|
-
summary: Compile an app
|
|
225
|
+
summary: Compile an app, point the app at sinatra, run cucumber with appium
|
|
239
226
|
test_files:
|
|
240
227
|
- spec/android_compiler_spec.rb
|
|
241
228
|
- spec/appium_text_spec.rb
|
|
@@ -243,6 +230,6 @@ test_files:
|
|
|
243
230
|
- spec/cucumber_spec.rb
|
|
244
231
|
- spec/ios_app_spec.rb
|
|
245
232
|
- spec/ios_compiler_spec.rb
|
|
246
|
-
- spec/
|
|
233
|
+
- spec/jsonconf_spec.rb
|
|
247
234
|
- spec/spec_helper.rb
|
|
248
|
-
|
|
235
|
+
- spec/test.json
|
data/lib/cuesmash/plist.rb
DELETED
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
# coding: utf-8
|
|
3
|
-
|
|
4
|
-
module Cuesmash
|
|
5
|
-
#
|
|
6
|
-
# Does some fun stuff with Xcode plists, cuesmash needs to update
|
|
7
|
-
# the Xcode projects plist to trick the simulator into connecting
|
|
8
|
-
# to a sinatra server instead
|
|
9
|
-
#
|
|
10
|
-
# @author [alexfish]
|
|
11
|
-
#
|
|
12
|
-
class Plist
|
|
13
|
-
# include Logging
|
|
14
|
-
|
|
15
|
-
# Public: the Scheme the plist is related to
|
|
16
|
-
attr_accessor :scheme
|
|
17
|
-
attr_accessor :tmp_dir
|
|
18
|
-
attr_accessor :plist_name
|
|
19
|
-
|
|
20
|
-
#
|
|
21
|
-
# Create a new plist instance
|
|
22
|
-
# @param scheme [String] The scheme related to the plist
|
|
23
|
-
# @param app_path [String] The dir where the app is going to be placed.
|
|
24
|
-
# @param plist_name [String] Default: server_config. The name of the file with the server configurations.
|
|
25
|
-
#
|
|
26
|
-
# @return [Plist] A plist instance
|
|
27
|
-
def initialize(scheme, app_path, plist_name = 'server_config')
|
|
28
|
-
@scheme = scheme
|
|
29
|
-
@tmp_dir = tmp_dir
|
|
30
|
-
@plist_name = plist_name
|
|
31
|
-
@app_path = app_path
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
#
|
|
35
|
-
# Executes the plist tasks update and clear the old plists
|
|
36
|
-
#
|
|
37
|
-
def execute
|
|
38
|
-
started
|
|
39
|
-
update
|
|
40
|
-
clear
|
|
41
|
-
|
|
42
|
-
completed
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
private
|
|
46
|
-
|
|
47
|
-
#
|
|
48
|
-
# Output a nice message for starting
|
|
49
|
-
#
|
|
50
|
-
def started
|
|
51
|
-
Logger.info 'Updating plist'
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
#
|
|
55
|
-
# Output a nice message for completing
|
|
56
|
-
#
|
|
57
|
-
def completed
|
|
58
|
-
Logger.info 'Plist updated 👌'
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
#
|
|
62
|
-
# Update the Xcode applications server.plist file
|
|
63
|
-
# with sinatras port and URL
|
|
64
|
-
#
|
|
65
|
-
def update
|
|
66
|
-
plist_file = CFPropertyList::List.new(file: server_plist_path)
|
|
67
|
-
plist = CFPropertyList.native_types(plist_file.value)
|
|
68
|
-
|
|
69
|
-
plist['url_preference'] = server_ip
|
|
70
|
-
plist['port_preference'] = Cuesmash::PORT
|
|
71
|
-
|
|
72
|
-
plist_file.value = CFPropertyList.guess(plist)
|
|
73
|
-
plist_file.save(server_plist_path, CFPropertyList::List::FORMAT_XML)
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
#
|
|
77
|
-
# Clear the existing plist from the iOS simulator
|
|
78
|
-
#
|
|
79
|
-
def clear
|
|
80
|
-
FileUtils.rm(simulator_plist_path, force: true)
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
#
|
|
84
|
-
# The local IP address of the mock backend server
|
|
85
|
-
#
|
|
86
|
-
# @return [String] The mock backends IP
|
|
87
|
-
def server_ip
|
|
88
|
-
Socket.ip_address_list.find { |a| a.ipv4? && !a.ipv4_loopback? }.ip_address
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
#
|
|
92
|
-
# The path to the iOS simulators plist
|
|
93
|
-
#
|
|
94
|
-
# @return [String] The path to the plist
|
|
95
|
-
def simulator_plist_path
|
|
96
|
-
"#{File.expand_path('~')}/Library/Preferences/com.apple.iphonesimulator.plist"
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
#
|
|
100
|
-
# The path to the server config plist
|
|
101
|
-
#
|
|
102
|
-
# @return [String] The full path to the server config plist
|
|
103
|
-
def server_plist_path
|
|
104
|
-
@app_path + "/#{@plist_name}.plist"
|
|
105
|
-
end
|
|
106
|
-
end
|
|
107
|
-
end
|
data/spec/plist_spec.rb
DELETED
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
describe Cuesmash::Plist do
|
|
4
|
-
|
|
5
|
-
describe "when executed" do
|
|
6
|
-
|
|
7
|
-
before(:each) do
|
|
8
|
-
@plist = Cuesmash::Plist.new("scheme", "/tmp")
|
|
9
|
-
@plist.stub(:update)
|
|
10
|
-
@plist.stub(:clear)
|
|
11
|
-
@plist.stub(:completed)
|
|
12
|
-
@plist.stub(:started)
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
it "should update" do
|
|
16
|
-
@plist.should_receive(:update)
|
|
17
|
-
@plist.execute
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
it "should clear" do
|
|
21
|
-
@plist.should_receive(:clear)
|
|
22
|
-
@plist.execute
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
describe "when clearing" do
|
|
27
|
-
|
|
28
|
-
before(:each) do
|
|
29
|
-
@plist = Cuesmash::Plist.new("scheme", "/tmp")
|
|
30
|
-
@plist.stub(:update)
|
|
31
|
-
@plist.stub(:completed)
|
|
32
|
-
@plist.stub(:started)
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
it "should delete the simulator plist" do
|
|
36
|
-
@plist.stub(:simulator_plist_path){"plist_path"}
|
|
37
|
-
FileUtils.should_receive(:rm).with("plist_path", anything)
|
|
38
|
-
@plist.execute
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
describe "when updating" do
|
|
43
|
-
|
|
44
|
-
before(:each) do
|
|
45
|
-
@cfplist = double(CFPropertyList::List)
|
|
46
|
-
@cfplist.stub(:value)
|
|
47
|
-
@cfplist.stub(:value=)
|
|
48
|
-
@cfplist.stub(:save)
|
|
49
|
-
CFPropertyList::List.stub(:new){@cfplist}
|
|
50
|
-
CFPropertyList.stub(:native_types){@cfplist}
|
|
51
|
-
CFPropertyList.stub(:guess)
|
|
52
|
-
|
|
53
|
-
@plist = Cuesmash::Plist.new("scheme", "app_path")
|
|
54
|
-
@plist.stub(:clear)
|
|
55
|
-
@plist.stub(:completed)
|
|
56
|
-
@plist.stub(:started)
|
|
57
|
-
@plist.stub(:app_path){"app_path"}
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
it "should set the server ip and port" do
|
|
61
|
-
@plist.stub(:server_ip){"server_ip"}
|
|
62
|
-
stub_const("Cuesmash::PORT", 123)
|
|
63
|
-
|
|
64
|
-
@cfplist.should_receive(:[]=).with("url_preference", "server_ip")
|
|
65
|
-
@cfplist.should_receive(:[]=).with("port_preference", 123)
|
|
66
|
-
|
|
67
|
-
@plist.execute
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
it "should write the app server plist" do
|
|
71
|
-
@cfplist.should_receive(:save).with("app_path/server_config.plist", anything)
|
|
72
|
-
@cfplist.stub(:[]=)
|
|
73
|
-
|
|
74
|
-
@plist.execute
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
end
|
|
78
|
-
end
|