cuesmash 0.1.9.7 → 0.1.9.8

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2244008a2a82ab3d841eeb6aad059845f51ed2d0
4
- data.tar.gz: e957ef861ff401b811ed75114764f51489ac587b
3
+ metadata.gz: 067457f9c6c472d3454a377bf4ac0e5cae11e64f
4
+ data.tar.gz: 6aacdaf46ff9f6ff7377d62db8807f15afca6863
5
5
  SHA512:
6
- metadata.gz: 8a74afd9d48022dad0976adfad88b577a82713f809611545e4699ce114138ceeebc90367237276fcf5b9dc8cae29216909f2c6a50f8e7c5c2ddd0137c6ba2b38
7
- data.tar.gz: d6a513d450bd2be86d3b95ebd45cb18926487b273ee2d739057c38ab656bc901f54e37b796bc6cbb65997e27c754adcf343ce9971de4fec386dfd44def293788
6
+ metadata.gz: 6a758e3b2ce774ec53a2b6c83a32bcdd77c11d48622a01827f113d1c8640f2482500fea1972e42b786d25e0cc5df7a5078e6bfc22490080d716ae98020af185c
7
+ data.tar.gz: 44b6537513e85b2ca66e1c4bc0016b1a417c5fa72808edfa5ba7426cf5ceb0dfe7dedb9054419609ee375c3067c608f3ca2cb9a66690c39c10bd91da6034fee5
data/.gitignore CHANGED
@@ -17,3 +17,12 @@ tmp
17
17
  .yardoc
18
18
  _yardoc
19
19
  doc/
20
+ .idea/.name
21
+ .idea/.rakeTasks
22
+ .idea/cuesmash.iml
23
+ .idea/encodings.xml
24
+ .idea/misc.xml
25
+ .idea/modules.xml
26
+ .idea/vcs.xml
27
+ .idea/workspace.xml
28
+ .idea/scopes/scope_settings.xml
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cuesmash (0.1.9.7)
4
+ cuesmash (0.1.9.8)
5
5
  CFPropertyList (>= 2.2.8)
6
6
  rest-client (~> 1.7.2)
7
7
  thor (>= 0.19.1)
@@ -10,7 +10,7 @@ PATH
10
10
  GEM
11
11
  remote: https://rubygems.org/
12
12
  specs:
13
- CFPropertyList (2.3.0)
13
+ CFPropertyList (2.3.1)
14
14
  byebug (3.5.1)
15
15
  columnize (~> 0.8)
16
16
  debugger-linecache (~> 1.2)
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.1.9.7"
7
+ spec.version = "0.1.9.8"
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"
@@ -2,12 +2,10 @@
2
2
  # coding: utf-8
3
3
 
4
4
  module Cuesmash
5
-
6
5
  #
7
6
  # Provides an object to get information about the ios app that is being built.
8
7
  #
9
8
  class AndroidApp < App
10
-
11
9
  # app/build/outputs/apk/
12
10
  attr_reader :app_dir
13
11
 
@@ -25,12 +23,9 @@ module Cuesmash
25
23
  #
26
24
  # @return [App] A app instance
27
25
  def initialize(project_name:, build_configuration:)
28
- @app_name = "#{project_name}-#{build_configuration}" << ".apk"
29
-
30
- @app_dir = File.expand_path("./app/build/outputs/apk/")
31
-
26
+ @app_name = "#{project_name}-#{build_configuration}" << '.apk'
27
+ @app_dir = File.expand_path('./app/build/outputs/apk/')
32
28
  @app_path = "#{@app_dir}/" << "#{@app_name}"
33
29
  end
34
-
35
30
  end # class AndroidApp
36
- end # module Cuesmash
31
+ end # module Cuesmash
@@ -2,27 +2,25 @@
2
2
  # coding: utf-8
3
3
 
4
4
  module Cuesmash
5
-
6
5
  #
7
6
  # Creates the appium.txt file that is needed by appium
8
7
  #
9
8
  # @author [jarod]
10
9
  #
11
10
  class AndroidAppiumText
12
-
13
11
  attr_accessor :appium_avd
14
12
  attr_accessor :appium_app
15
13
  attr_accessor :appium_platform_name
16
14
  attr_accessor :appium_new_command_timeout
17
15
  attr_accessor :appium_text_for_file
18
16
 
19
- #
17
+ #
20
18
  # [initialize description]
21
19
  # @param platform_name: [type] [description]
22
20
  # @param avd: [type] [description]
23
21
  # @param app: [type] [description]
24
22
  # @param new_command_timeout: 60 [type] [description]
25
- #
23
+ #
26
24
  # @return [type] [description]
27
25
  def initialize(platform_name:, avd:, app:, new_command_timeout: 60)
28
26
  @appium_platform_name = platform_name
@@ -40,16 +38,16 @@ module Cuesmash
40
38
  private
41
39
 
42
40
  def started
43
- Logger.info "Updating appium.txt"
41
+ Logger.info 'Updating appium.txt'
44
42
  end
45
43
 
46
44
  def update
47
45
  @appium_text_for_file = file_text
48
- IO.write("features/support/appium.txt", @appium_text_for_file)
46
+ IO.write('features/support/appium.txt', @appium_text_for_file)
49
47
  end
50
48
 
51
49
  def completed
52
- Logger.info "appium.txt updated 👌"
50
+ Logger.info 'appium.txt updated 👌'
53
51
  end
54
52
 
55
53
  # [caps]
@@ -3,7 +3,6 @@
3
3
  require 'cuesmash/android_appium_text'
4
4
 
5
5
  module Cuesmash
6
-
7
6
  #
8
7
  # The main point of entry for all commands, Command parses command line arguments
9
8
  # and decides what to do about them.
@@ -11,12 +10,11 @@ module Cuesmash
11
10
  # @author [alexfish]
12
11
  #
13
12
  class AndroidCommand
14
-
15
13
  #
16
14
  # Execute a command with some arguments
17
15
  # then figure out what we're supposed to be doing with
18
16
  # the arguments
19
- #
17
+ #
20
18
  # @param avd: [type] [description]
21
19
  # @param server: [type] [description]
22
20
  # @param tags: [type] [description]
@@ -27,13 +25,12 @@ module Cuesmash
27
25
  # @param profile: [type] [description]
28
26
  # @param quiet: false [type] [description]
29
27
  # @param timeout: [type] [description]
30
- #
28
+ #
31
29
  # @return [type] [description]
32
30
  def self.execute(avd:, server:, tags:, debug: false, format: nil, output: nil, app:, profile:, quiet: false, timeout:)
33
-
34
31
  if debug
35
32
  Logger.level = ::Logger::DEBUG
36
- Logger.formatter = proc do |serverity, time, progname, msg|
33
+ Logger.formatter = proc do |serverity, time, _progname, msg|
37
34
  "\n#{time}\t#{serverity}\t#{msg.rstrip}"
38
35
  end
39
36
  end
@@ -47,10 +44,6 @@ module Cuesmash
47
44
 
48
45
  # Run the tests
49
46
  run_tests(tags: tags, profile: profile, format: format, output: output, quiet: quiet)
50
-
51
- # Stop the Appium server
52
- # app_server.stop_server
53
-
54
47
  end # execute
55
48
 
56
49
  #
@@ -78,8 +71,11 @@ module Cuesmash
78
71
  # @param app [String] path to built .app file
79
72
  # @param timeout [String] time in seconds to set the newCommandTimeout to.
80
73
  #
81
- def self.create_appium_txt(platform_name: "Android", app:, timeout:, avd:)
82
- appium = Cuesmash::AndroidAppiumText.new(platform_name: platform_name, avd: avd, app: app, new_command_timeout: timeout)
74
+ def self.create_appium_txt(platform_name: 'Android', app:, timeout:, avd:)
75
+ appium = Cuesmash::AndroidAppiumText.new(platform_name: platform_name,
76
+ avd: avd,
77
+ app: app,
78
+ new_command_timeout: timeout)
83
79
  appium.execute
84
80
  end
85
81
  end # class Command
@@ -1,13 +1,11 @@
1
1
  # coding: utf-8
2
2
 
3
3
  module Cuesmash
4
-
5
4
  #
6
5
  # iOS Specific compiler
7
- #
6
+ #
8
7
  class AndroidCompiler < Compiler
9
-
10
- OUTPUT_PATH = "app/build/outputs/apk"
8
+ OUTPUT_PATH = 'app/build/outputs/apk'
11
9
 
12
10
  attr_accessor :project_name
13
11
  attr_accessor :build_configuration
@@ -23,18 +21,18 @@ module Cuesmash
23
21
  #
24
22
  # @return [String] The full gradle build command with args
25
23
  def command
26
-
27
24
  case
28
- when @build_configuration == 'debug'
29
- gradle_command = './gradlew assembleDebug'
30
- when @build_configuration == 'release'
31
- gradle_command = './gradlew assemble'
32
- else
33
- puts '/nBuild configuration not found or invalid build configuration'
25
+ when @build_configuration == 'debug'
26
+ gradle_assemble_command = './gradlew assembleDebug'
27
+ when @build_configuration == 'bdd-debug'
28
+ gradle_assemble_command = './gradlew assembleBddDebug'
29
+ when @build_configuration == 'release'
30
+ gradle_assemble_command = './gradlew assemble'
31
+ else
32
+ puts '/nBuild configuration not found or invalid build configuration'
34
33
  end
35
-
36
- Logger.info "gradle_command == #{gradle_command}"
37
- gradle_command
34
+ Logger.info "gradle_assemble_command == #{gradle_assemble_command}"
35
+ gradle_assemble_command
38
36
  end # command
39
37
  end # class AndroidCompiler
40
- end # module Cuesmash
38
+ end # module Cuesmash
data/lib/cuesmash/app.rb CHANGED
@@ -2,12 +2,10 @@
2
2
  # coding: utf-8
3
3
 
4
4
  module Cuesmash
5
-
6
5
  #
7
6
  # Provides an object to get information about the ios app that is being built
8
7
  #
9
8
  class App
10
-
11
9
  # Public: the xcode Derived Data temp directory
12
10
  attr_reader :tmp_dir
13
11
 
@@ -15,7 +13,7 @@ module Cuesmash
15
13
  # Create a new App instance
16
14
  #
17
15
  # @return [App] A app instance
18
- def initialize()
16
+ def initialize
19
17
  @tmp_dir = Dir.mktmpdir(file_name)
20
18
  end
21
19
  end
@@ -2,14 +2,12 @@
2
2
  # coding: utf-8
3
3
 
4
4
  module Cuesmash
5
-
6
5
  #
7
6
  # Provides an interface for starting the appium server
8
7
  #
9
8
  # @author [jarod]
10
9
  #
11
10
  class AppiumServer
12
-
13
11
  # Public: the output directory for the tests
14
12
  attr_accessor :output
15
13
 
@@ -19,7 +17,7 @@ module Cuesmash
19
17
  #
20
18
  # Create a new instance of AppiumServer
21
19
  #
22
- def initialize()
20
+ def initialize
23
21
  end
24
22
 
25
23
  #
@@ -28,7 +26,7 @@ module Cuesmash
28
26
  def start_server
29
27
  started
30
28
 
31
- command = "appium --log-level debug"
29
+ command = 'appium --log-level debug'
32
30
 
33
31
  @stdin, @stdout, @stderr, @wait_thr = Open3.popen3(command)
34
32
  Logger.info "Appium running with pid: #{@wait_thr.pid}"
@@ -36,7 +34,7 @@ module Cuesmash
36
34
  if Logger.debug?
37
35
  [@stdout, @stderr].each do |stream|
38
36
  Thread.new do
39
- until (line = stream.gets).nil? do
37
+ until (line = stream.gets).nil?
40
38
  Logger.debug line
41
39
  end
42
40
  end
@@ -62,14 +60,14 @@ module Cuesmash
62
60
  # Output a nice message for starting
63
61
  #
64
62
  def started
65
- Logger.info "Starting Appium Server"
63
+ Logger.info 'Starting Appium Server'
66
64
  end
67
65
 
68
66
  #
69
67
  # Output a nice message for completing
70
68
  #
71
69
  def completed
72
- Logger.info "Stopping Appium server 👌"
70
+ Logger.info 'Stopping Appium server 👌'
73
71
  end
74
72
  end
75
73
  end
@@ -2,14 +2,12 @@
2
2
  # coding: utf-8
3
3
 
4
4
  module Cuesmash
5
-
6
5
  #
7
6
  # Creates the appium.txt file that is needed by appium
8
7
  #
9
8
  # @author [jarod]
10
9
  #
11
10
  class AppiumText
12
-
13
11
  attr_accessor :platform_version
14
12
  attr_accessor :app
15
13
  attr_accessor :platform_name
@@ -44,28 +42,28 @@ module Cuesmash
44
42
  private
45
43
 
46
44
  def started
47
- Logger.info "Updating appium.txt"
45
+ Logger.info 'Updating appium.txt'
48
46
  end
49
47
 
50
48
  def update
51
49
  @appium_text_for_file = file_text
52
- IO.write("features/support/appium.txt", @appium_text_for_file)
50
+ IO.write('features/support/appium.txt', @appium_text_for_file)
53
51
  end
54
52
 
55
53
  def completed
56
- Logger.info "appium.txt updated 👌"
54
+ Logger.info 'appium.txt updated 👌'
57
55
  end
58
56
 
59
57
  # [caps]
60
58
  # platformName = "iOS"
61
59
  # deviceName = "iPhone Simulator"
62
60
  # platformVersion = "7.1"
63
- # app = "/Users/jarod/Library/Developer/Xcode/DerivedData/laterooms-fnlioqzgtpowdmezkwdzsyicgjiz/Build/Products/Debug-iphonesimulator/laterooms.app"
61
+ # app = "/Users/name/Library/Developer/Xcode/DerivedData/proj-xxx/Build/Products/Debug-iphonesimulator/proj.app"
64
62
  def file_text
65
63
  text = "[caps]\n"
66
64
  text << "platformName = \"#{platform_name}\"\n"
67
65
  text << "deviceName = \"#{device_name}\"\n"
68
- text << "platformVersion = \"#{platform_version}\"\n" unless platform_version == nil
66
+ text << "platformVersion = \"#{platform_version}\"\n" unless platform_version.nil?
69
67
  text << "app = \"#{app}\"\n"
70
68
  text << "newCommandTimeout = \"#{new_command_timeout}\"\n"
71
69
  Logger.debug "appium.text == #{text}"
@@ -2,7 +2,6 @@
2
2
  # coding: utf-8
3
3
 
4
4
  module Cuesmash
5
-
6
5
  #
7
6
  # The main point of entry for all commands, Command parses command line arguments
8
7
  # and decides what to do about them.
@@ -10,98 +9,102 @@ module Cuesmash
10
9
  # @author [alexfish]
11
10
  #
12
11
  class Command
13
-
14
- class << self
15
-
16
- #
17
- # Execute a command with some arguments
18
- # then figure out what we're supposed to be doing with
19
- # the arguments
20
- #
21
- # @param device [String]
22
- # @param os [String]
23
- # @param server [String]
24
- # @param tags [Array]
25
- # @param scheme [String]
26
- # @param debug [Boolean]
27
- # @param format [String]
28
- # @param output [String]
29
- # @param travis [Boolean]
30
- # @param app [IosApp Object]
31
- # @param profile [String]
32
- # @param quiet [String]
33
- # @param timeout [String] newCommandTimeout for appium in seconds
34
- #
35
- # @return [type] [description]
36
- def execute(device:, os:, server:, tags:, scheme:, debug: false, format: nil, output: nil, travis: nil, app:, profile:, quiet: false, timeout:)
37
-
38
- if debug
39
- Logger.level = ::Logger::DEBUG
40
- Logger.formatter = proc do |serverity, time, progname, msg|
41
- "\n#{time}\t#{serverity}\t#{msg.rstrip}"
42
- end
12
+ #
13
+ # Execute a command with some arguments
14
+ # then figure out what we're supposed to be doing with
15
+ # the arguments
16
+ #
17
+ # @param device [String]
18
+ # @param os [String]
19
+ # @param tags [Array]
20
+ # @param debug [Boolean]
21
+ # @param format [String]
22
+ # @param output [String]
23
+ # @param app [IosApp Object]
24
+ # @param profile [String]
25
+ # @param quiet [String]
26
+ # @param timeout [String] newCommandTimeout for appium in seconds
27
+ #
28
+ # @return [type] [description]
29
+ def self.execute(device:,
30
+ os:,
31
+ tags:,
32
+ debug: false,
33
+ format: nil,
34
+ output: nil,
35
+ app:,
36
+ profile:,
37
+ quiet: false,
38
+ timeout:)
39
+ if debug
40
+ Logger.level = ::Logger::DEBUG
41
+ Logger.formatter = proc do |serverity, time, _progname, msg|
42
+ "\n#{time}\t#{serverity}\t#{msg.rstrip}"
43
43
  end
44
+ end
44
45
 
45
- # Update the plist
46
- # update_plist(scheme, app.app_path)
47
-
48
- # Update the appium.txt file
49
- create_appium_txt(app: app.app_path, device_name: device, platform_version: os, timeout: timeout)
46
+ # Update the plist
47
+ # update_plist(scheme, app.app_path)
50
48
 
51
- # start the appium server
52
- app_server = AppiumServer.new
53
- app_server.start_server
49
+ # Update the appium.txt file
50
+ create_appium_txt(app: app.app_path, device_name: device, platform_version: os, timeout: timeout)
54
51
 
55
- # Run the tests
56
- run_tests(tags: tags, profile: profile, format: format, output: output, quiet: quiet)
52
+ # start the appium server
53
+ app_server = AppiumServer.new
54
+ app_server.start_server
57
55
 
58
- # Stop the Appium server
59
- # app_server.stop_server
56
+ # Run the tests
57
+ run_tests(tags: tags, profile: profile, format: format, output: output, quiet: quiet)
60
58
 
61
- end # execute
59
+ # Stop the Appium server
60
+ # app_server.stop_server
61
+ end # execute
62
62
 
63
- #
64
- # Update the applications plist so that the application
65
- # connects to sinatra
66
- #
67
- # @param scheme [String] The scheme related to the application
68
- # @param app_path [String] The path to the app
69
- #
70
- def update_plist(scheme, app_path)
71
- plist = Cuesmash::Plist.new(scheme, app_path)
72
- plist.execute
73
- end
63
+ #
64
+ # Update the applications plist so that the application
65
+ # connects to sinatra
66
+ #
67
+ # @param scheme [String] The scheme related to the application
68
+ # @param app_path [String] The path to the app
69
+ #
70
+ def self.update_plist(scheme, app_path)
71
+ plist = Cuesmash::Plist.new(scheme, app_path)
72
+ plist.execute
73
+ end
74
74
 
75
- #
76
- # Run the cucumber tests, that's why we're here afterall
77
- #
78
- # @param ios [String] The iOS version to test with
79
- # @param tags [Array] The cucumber tags to test with
80
- # @param profile [String] cucumber profile to use
81
- # @param format [String] The output format for the cucumber tests, Optional
82
- # @param output [String] The path to the output directory to output test reports to, Optional
83
- # @param quiet [Boolean] quiet flag for cucumber
84
- #
85
- def run_tests(tags:, profile:, format: nil, output: nil, quiet: false)
86
- cucumber = Cuesmash::Cucumber.new(tags, profile, quiet)
87
- cucumber.format = format if format
88
- cucumber.output = output if output
89
- cucumber.test
90
- end
75
+ #
76
+ # Run the cucumber tests, that's why we're here afterall
77
+ #
78
+ # @param ios [String] The iOS version to test with
79
+ # @param tags [Array] The cucumber tags to test with
80
+ # @param profile [String] cucumber profile to use
81
+ # @param format [String] The output format for the cucumber tests, Optional
82
+ # @param output [String] The path to the output directory to output test reports to, Optional
83
+ # @param quiet [Boolean] quiet flag for cucumber
84
+ #
85
+ def self.run_tests(tags:, profile:, format: nil, output: nil, quiet: false)
86
+ cucumber = Cuesmash::Cucumber.new(tags, profile, quiet)
87
+ cucumber.format = format if format
88
+ cucumber.output = output if output
89
+ cucumber.test
90
+ end
91
91
 
92
- #
93
- # Update appium.txt file with the directory of the build product
94
- #
95
- # @param platform_name [String] default 'iOS' name of platform to test on (Android or iOS)
96
- # @param device_name [String] deviceName = "iPhone Simulator"
97
- # @param platform_version [String] platformVersion = "7.1"
98
- # @param app [String] path to built .app file
99
- # @param timeout [String] time in seconds to set the newCommandTimeout to.
100
- #
101
- def create_appium_txt(platform_name: "iOS", device_name:, platform_version:, app:, timeout:)
102
- appium = AppiumText.new(platform_name: platform_name, device_name: device_name, platform_version: platform_version, app: app, new_command_timeout: timeout)
103
- appium.execute
104
- end
105
- end # self
92
+ #
93
+ # Update appium.txt file with the directory of the build product
94
+ #
95
+ # @param platform_name [String] default 'iOS' name of platform to test on (Android or iOS)
96
+ # @param device_name [String] deviceName = "iPhone Simulator"
97
+ # @param platform_version [String] platformVersion = "7.1"
98
+ # @param app [String] path to built .app file
99
+ # @param timeout [String] time in seconds to set the newCommandTimeout to.
100
+ #
101
+ def self.create_appium_txt(platform_name: 'iOS', device_name:, platform_version:, app:, timeout:)
102
+ appium = AppiumText.new(platform_name: platform_name,
103
+ device_name: device_name,
104
+ platform_version: platform_version,
105
+ app: app,
106
+ new_command_timeout: timeout)
107
+ appium.execute
108
+ end
106
109
  end # class Command
107
110
  end # module Cuesmash
@@ -1,13 +1,11 @@
1
1
  # coding: utf-8
2
2
 
3
3
  module Cuesmash
4
-
5
4
  #
6
5
  # The calamsash compiler will compiles the Xcode project with the
7
6
  # scheme it's told to compile with.
8
7
  #
9
8
  class Compiler
10
-
11
9
  # Public: the Scheme the compiler is compiling
12
10
  attr_accessor :scheme
13
11
  attr_accessor :tmp_dir
@@ -25,11 +23,11 @@ module Cuesmash
25
23
  started
26
24
  status = nil
27
25
 
28
- Open3.popen3 command do |stdin, out, err, wait_thr|
26
+ Open3.popen3 command do |_stdin, out, err, wait_thr|
29
27
  print "\n"
30
28
  [out, err].each do |stream|
31
29
  Thread.new do
32
- until (line = stream.gets).nil? do
30
+ until (line = stream.gets).nil?
33
31
  Logger.info line
34
32
  end
35
33
  end
@@ -53,14 +51,14 @@ module Cuesmash
53
51
  # Output a nice message for starting
54
52
  #
55
53
  def started
56
- Logger.info "Compiling"
54
+ Logger.info 'Compiling'
57
55
  end
58
56
 
59
57
  #
60
58
  # Output a nice message for completing
61
59
  #
62
60
  def completed
63
- Logger.info "Compiled 👌"
61
+ Logger.info 'Compiled 👌'
64
62
  end
65
63
  end # class compiler
66
64
  end # module cuesmash
@@ -2,7 +2,6 @@
2
2
  # coding: utf-8
3
3
 
4
4
  module Cuesmash
5
-
6
5
  #
7
6
  # Provides a nice interface to cucumber, allowing
8
7
  # us to run the cucumber test suite
@@ -10,7 +9,6 @@ module Cuesmash
10
9
  # @author [alexfish]
11
10
  #
12
11
  class Cucumber
13
-
14
12
  # Public: the output directory for the tests
15
13
  attr_accessor :output
16
14
 
@@ -43,16 +41,13 @@ module Cuesmash
43
41
  started
44
42
 
45
43
  status = nil
46
- output = ""
47
-
48
- cucumber_command = command
49
- Logger.debug "cucumber_command == #{cucumber_command}"
50
44
 
51
- Open3.popen3 cucumber_command do |stdin, out, err, wait_thr|
45
+ Logger.debug "cucumber_command == #{command}"
52
46
 
47
+ Open3.popen3 command do |_stdin, out, err, wait_thr|
53
48
  [out, err].each do |stream|
54
49
  Thread.new do
55
- until (line = stream.gets).nil? do
50
+ until (line = stream.gets).nil?
56
51
  Logger.info line
57
52
  end
58
53
  end
@@ -63,8 +58,7 @@ module Cuesmash
63
58
  end
64
59
 
65
60
  if status != 0
66
- Logger.info "Cucumber failed"
67
- # exit status
61
+ Logger.info 'Cucumber failed'
68
62
  status
69
63
  else
70
64
  completed
@@ -77,14 +71,14 @@ module Cuesmash
77
71
  # Output a nice message for starting
78
72
  #
79
73
  def started
80
- Logger.info "Running Cucumber"
74
+ Logger.info 'Running Cucumber'
81
75
  end
82
76
 
83
77
  #
84
78
  # Output a nice message for completing
85
79
  #
86
80
  def completed
87
- Logger.info "Cucumber Completed 👌"
81
+ Logger.info 'Cucumber Completed 👌'
88
82
  end
89
83
 
90
84
  #
@@ -93,13 +87,13 @@ module Cuesmash
93
87
  #
94
88
  # @return [String] The cucumber command string
95
89
  def command
96
- command_string = "cucumber"
97
- command_string += " --format #{self.format}" if self.format
98
- command_string += " --out #{self.output}" if self.output
99
- command_string += " --profile #{self.profile}" if self.profile
100
- command_string += @tags.to_a.empty? ? "" : tag_arguments
101
- command_string += " --quiet" if self.quiet
102
- command_string += " -c"
90
+ command_string = 'cucumber'
91
+ command_string += " --format #{format}" if format
92
+ command_string += " --out #{output}" if output
93
+ command_string += " --profile #{profile}" if profile
94
+ command_string += @tags.to_a.empty? ? '' : tag_arguments
95
+ command_string += ' --quiet' if quiet
96
+ command_string += ' -c'
103
97
 
104
98
  Logger.debug "cucumber command == #{command_string}"
105
99
 
@@ -112,9 +106,9 @@ module Cuesmash
112
106
  #
113
107
  # @return [String] The --tags commands ready to go
114
108
  def tag_arguments
115
- command_tag = ""
109
+ command_tag = ''
116
110
  @tags.each do |tag_set|
117
- command_tag = "" unless command_tag
111
+ command_tag = '' unless command_tag
118
112
  command_tag += " --tags #{tag_set}"
119
113
  end
120
114
 
@@ -4,12 +4,10 @@
4
4
  require 'cuesmash/app'
5
5
 
6
6
  module Cuesmash
7
-
8
7
  #
9
8
  # Provides an object to get information about the ios app that is being built.
10
9
  #
11
10
  class IosApp < App
12
-
13
11
  # Public: the path to the dir containing the built app i.e. /tmp/MyAppQWERQW/Build/Products/Debug-iphonesimulator/
14
12
  attr_reader :app_dir
15
13
 
@@ -30,13 +28,13 @@ module Cuesmash
30
28
  #
31
29
  # @return [App] A app instance
32
30
  def initialize(file_name:, build_configuration:)
33
- @app_name = "#{file_name}" << ".app"
31
+ @app_name = "#{file_name}" << '.app'
34
32
  @tmp_dir = Dir.mktmpdir(file_name)
35
33
  @build_configuration = build_configuration
36
34
 
37
35
  @app_dir = "#{@tmp_dir}" << "/#{@build_configuration}-iphonesimulator/"
38
-
36
+
39
37
  @app_path = "#{@app_dir}" << "#{@app_name}"
40
38
  end
41
39
  end # class IosApp
42
- end # module Cuesmash
40
+ end # module Cuesmash
@@ -1,14 +1,12 @@
1
1
  # coding: utf-8
2
2
 
3
3
  module Cuesmash
4
-
5
4
  require 'shellwords'
6
5
 
7
6
  #
8
7
  # iOS Specific compiler
9
8
  #
10
9
  class IosCompiler < Compiler
11
-
12
10
  attr_accessor :scheme
13
11
  attr_accessor :tmp_dir
14
12
  attr_accessor :build_configuration
@@ -37,13 +35,13 @@ module Cuesmash
37
35
  #
38
36
  # @return [String] The name of the workspace file that was found along with the -workspace flag
39
37
  def workspace
40
- wp = Dir["*.xcworkspace"].first
38
+ wp = Dir['*.xcworkspace'].first
41
39
  if wp
42
40
  flag = "-workspace #{wp}"
43
41
  Logger.debug "workspace == #{wp}"
44
42
  return flag
45
43
  else
46
- Logger.debug "no workspace found"
44
+ Logger.debug 'no workspace found'
47
45
  return wp
48
46
  end
49
47
  end # workspace
@@ -2,7 +2,6 @@
2
2
  # coding: utf-8
3
3
 
4
4
  module Cuesmash
5
-
6
5
  #
7
6
  # Does some fun stuff with Xcode plists, cuesmash needs to update
8
7
  # the Xcode projects plist to trick the simulator into connecting
@@ -25,7 +24,7 @@ module Cuesmash
25
24
  # @param plist_name [String] Default: server_config. The name of the file with the server configurations.
26
25
  #
27
26
  # @return [Plist] A plist instance
28
- def initialize(scheme, app_path, plist_name="server_config")
27
+ def initialize(scheme, app_path, plist_name = 'server_config')
29
28
  @scheme = scheme
30
29
  @tmp_dir = tmp_dir
31
30
  @plist_name = plist_name
@@ -49,14 +48,14 @@ module Cuesmash
49
48
  # Output a nice message for starting
50
49
  #
51
50
  def started
52
- Logger.info "Updating plist"
51
+ Logger.info 'Updating plist'
53
52
  end
54
53
 
55
54
  #
56
55
  # Output a nice message for completing
57
56
  #
58
57
  def completed
59
- Logger.info "Plist updated 👌"
58
+ Logger.info 'Plist updated 👌'
60
59
  end
61
60
 
62
61
  #
@@ -64,11 +63,11 @@ module Cuesmash
64
63
  # with sinatras port and URL
65
64
  #
66
65
  def update
67
- plist_file = CFPropertyList::List.new(:file => server_plist_path)
66
+ plist_file = CFPropertyList::List.new(file: server_plist_path)
68
67
  plist = CFPropertyList.native_types(plist_file.value)
69
68
 
70
- plist["url_preference"] = server_ip
71
- plist["port_preference"] = Cuesmash::PORT
69
+ plist['url_preference'] = server_ip
70
+ plist['port_preference'] = Cuesmash::PORT
72
71
 
73
72
  plist_file.value = CFPropertyList.guess(plist)
74
73
  plist_file.save(server_plist_path, CFPropertyList::List::FORMAT_XML)
@@ -78,7 +77,7 @@ module Cuesmash
78
77
  # Clear the existing plist from the iOS simulator
79
78
  #
80
79
  def clear
81
- FileUtils.rm(simulator_plist_path, :force => true)
80
+ FileUtils.rm(simulator_plist_path, force: true)
82
81
  end
83
82
 
84
83
  #
@@ -86,7 +85,7 @@ module Cuesmash
86
85
  #
87
86
  # @return [String] The mock backends IP
88
87
  def server_ip
89
- Socket.ip_address_list.find {|a| a.ipv4? && !a.ipv4_loopback?}.ip_address
88
+ Socket.ip_address_list.find { |a| a.ipv4? && !a.ipv4_loopback? }.ip_address
90
89
  end
91
90
 
92
91
  #
@@ -104,6 +103,5 @@ module Cuesmash
104
103
  def server_plist_path
105
104
  @app_path + "/#{@plist_name}.plist"
106
105
  end
107
-
108
106
  end
109
107
  end
@@ -38,22 +38,22 @@ module Cuesmash
38
38
  # come find me and I'll beat you with a ruby hammer.
39
39
  #
40
40
  def install_cucumber
41
- command_runner(command: "gem install --no-rdoc --no-ri cucumber")
41
+ command_runner(command: 'gem install --no-rdoc --no-ri cucumber')
42
42
  end
43
43
 
44
44
  # TODO: check if these exist already
45
45
  def create_features_dir
46
- command_runner(command: "mkdir -p features/{support,step_definitions}")
46
+ command_runner(command: 'mkdir -p features/{support,step_definitions}')
47
47
  end
48
48
 
49
49
  # TODO: check if this file exists already. If so ask if you want to overwrite it.
50
50
  def create_env_rb
51
- download_gist(gist_id:"9fa5e495758463ee5340", final_file:"features/support/env.rb")
51
+ download_gist(gist_id: '9fa5e495758463ee5340', final_file: 'features/support/env.rb')
52
52
  end
53
53
 
54
54
  # TODO: this is failing.
55
55
  def install_appium_console
56
- command_runner(command: "gem install --no-rdoc --no-ri appium_console")
56
+ command_runner(command: 'gem install --no-rdoc --no-ri appium_console')
57
57
  end
58
58
 
59
59
  def install_brew
@@ -61,33 +61,33 @@ module Cuesmash
61
61
  if brew_path == 0
62
62
  command_runner(command: "ruby -e \"$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)\"")
63
63
  else
64
- Logger.info "Brew already installed."
64
+ Logger.info 'Brew already installed.'
65
65
  end
66
66
  end
67
67
 
68
68
  def install_node
69
- command_runner(command: "brew update; brew upgrade node; brew install node")
69
+ command_runner(command: 'brew update; brew upgrade node; brew install node')
70
70
  end
71
71
 
72
72
  def create_travis_yml
73
- download_gist(gist_id:"74cc418331bd81651746", final_file:".travis.yml")
73
+ download_gist(gist_id: '74cc418331bd81651746', final_file: '.travis.yml')
74
74
  end
75
75
 
76
76
  def create_scripts_dir
77
- puts "creating scripts dir"
78
- command_runner(command: "mkdir -p scripts")
77
+ puts 'creating scripts dir'
78
+ command_runner(command: 'mkdir -p scripts')
79
79
  end
80
80
 
81
81
  def create_build_sh
82
- download_gist(gist_id:"8df9762a103c694f5773", final_file:"scripts/build.sh")
82
+ download_gist(gist_id: '8df9762a103c694f5773', final_file: 'scripts/build.sh')
83
83
  end
84
84
 
85
85
  def create_gemfile
86
- download_gist(gist_id:"ea786f1cf0fdbe0febb3", final_file:"Gemfile")
86
+ download_gist(gist_id: 'ea786f1cf0fdbe0febb3', final_file: 'Gemfile')
87
87
  end
88
88
 
89
89
  def create_cuesmash_yml
90
- download_gist(gist_id:"146a3b40991e68cb261b", final_file:".cuesmash.yml")
90
+ download_gist(gist_id: '146a3b40991e68cb261b', final_file: '.cuesmash.yml')
91
91
  end
92
92
 
93
93
  #
@@ -98,10 +98,10 @@ module Cuesmash
98
98
  def command_runner(command:)
99
99
  status = nil
100
100
  Logger.info "Starting: #{command}"
101
- Open3.popen3 command do |stdin, out, err, wait_thr|
101
+ Open3.popen3 command do |_stdin, out, err, wait_thr|
102
102
  [out, err].each do |stream|
103
103
  Thread.new do
104
- until (line = stream.gets).nil? do
104
+ until (line = stream.gets).nil?
105
105
  Logger.info line
106
106
  end # until
107
107
  end # Thread.new
@@ -116,7 +116,6 @@ module Cuesmash
116
116
  else
117
117
  Logger.info "Finished: #{command}"
118
118
  end
119
- return
120
119
  end # command_runner
121
120
 
122
121
  #
@@ -125,7 +124,7 @@ module Cuesmash
125
124
  # @param final_file: [String] where the final file gets saved in relationship to the directory where the script is run.
126
125
  #
127
126
  def download_gist(gist_id:, final_file:)
128
- base_url = URI("https://api.github.com/gists/")
127
+ base_url = URI('https://api.github.com/gists/')
129
128
  json = JSON.parse(RestClient.get(URI.join(base_url, gist_id).to_s))
130
129
  file_name = json['files'].keys[0]
131
130
  raw_url = json['files'][file_name]['raw_url']
@@ -11,18 +11,16 @@ require 'cuesmash/setup'
11
11
  require 'byebug'
12
12
 
13
13
  module Cuesmash
14
-
15
14
  CONFIG_FILE = '.cuesmash.yml'
16
15
 
17
16
  # For information on how this class works see the thor documentation https://github.com/erikhuda/thor/wiki
18
17
  class Start < Thor
19
-
20
18
  desc 'init', 'set up the project'
21
19
  def init
22
20
  Cuesmash::Setup.setup
23
21
  end
24
22
 
25
- desc "test OPTIONS", "run the tests"
23
+ desc 'test OPTIONS', 'run the tests'
26
24
  long_desc <<-LONGDESC
27
25
  --tags -t the tags to pass to cucumber, for multiple tags pass one per tag. See cucumber tags for more info. https://github.com/cucumber/cucumber/wiki/Tags\n
28
26
  --output -o The output directory for the test report --not yet implemented--\n
@@ -35,16 +33,21 @@ module Cuesmash
35
33
  --profile -p which cucumber.yml profile to use\n
36
34
  --quiet -q BOOLEAN cucumber quiet mode
37
35
  LONGDESC
38
- method_option :scheme, type: :array, aliases: "-s", desc: "iOS only: the Xcode scheme to build"
39
- method_option :app_name, type: :string, aliases: "-n", desc: "Android only: the name of the app"
40
- method_option :tags, type: :array, aliases: "-t", desc: "the tags to pass to cucumber, for multiple tags pass one per tag"
41
- method_option :debug, type: :boolean, default: false, aliases: "-d", desc: "turn on debug output"
42
- method_option :travis_ci, type: :boolean, default: false, aliases: "-c", desc: "turn on settings for building on Travis CI"
43
- method_option :profile, type: :string, aliases: "-p", desc: "which cucumber.yml profile to use"
44
- method_option :quiet, type: :boolean, aliases: "-q", desc: "cucumber quiet mode"
36
+ method_option :scheme, type: :array, aliases: '-s', desc: 'iOS only: the Xcode scheme to build'
37
+ method_option :app_name, type: :string, aliases: '-n', desc: 'Android only: the name of the app'
38
+ method_option :tags,
39
+ type: :array,
40
+ aliases: '-t',
41
+ desc: 'the tags to pass to cucumber, for multiple tags pass one per tag'
42
+ method_option :debug, type: :boolean, default: false, aliases: '-d', desc: 'turn on debug output'
43
+ method_option :travis_ci,
44
+ type: :boolean,
45
+ default: false,
46
+ aliases: '-c', desc: 'turn on settings for building on Travis CI'
47
+ method_option :profile, type: :string, aliases: '-p', desc: 'which cucumber.yml profile to use'
48
+ method_option :quiet, type: :boolean, aliases: '-q', desc: 'cucumber quiet mode'
45
49
  # method_option :server, type: :string, aliases: "-r", desc: ""
46
50
  def test
47
-
48
51
  # get the cuesmash.yml config
49
52
  @config = load_config
50
53
 
@@ -52,25 +55,25 @@ module Cuesmash
52
55
  if @config['platform'] == 'iOS'
53
56
 
54
57
  # Create new IosApp object
55
- @app = IosApp.new(file_name: options[:scheme].join(" "), build_configuration: @config['build_configuration'])
58
+ @app = IosApp.new(file_name: options[:scheme].join(' '), build_configuration: @config['build_configuration'])
56
59
 
57
60
  setup_ios
58
61
 
59
62
  # enumerate over each device / OS combination and run the tests.
60
63
  @config['devices'].each do |device, oses|
61
64
  oses.each do |os|
62
- say "Cleaning up iOS Simulator"
65
+ say 'Cleaning up iOS Simulator'
63
66
  reset_ios_simulator
64
67
 
65
68
  say "\n============================\ntesting iOS #{os} on #{device}", :green
66
- Cuesmash::Command.execute(device: device,
67
- os: os,
68
- server: options[:server],
69
- tags: options[:tags],
70
- scheme: options[:scheme].join(" "),
71
- debug: options[:debug],
72
- app: @app,
73
- profile: options[:profile],
69
+ Cuesmash::Command.execute(device: device,
70
+ os: os,
71
+ server: options[:server],
72
+ tags: options[:tags],
73
+ scheme: options[:scheme].join(' '),
74
+ debug: options[:debug],
75
+ app: @app,
76
+ profile: options[:profile],
74
77
  quiet: options[:quiet],
75
78
  timeout: @config['default']['test_timeout'].to_s)
76
79
  end
@@ -79,25 +82,26 @@ module Cuesmash
79
82
  # clean up the temp dir
80
83
  Logger.info "Cleaning up tmp dir\n"
81
84
  FileUtils.remove_entry @app.tmp_dir
82
-
85
+
83
86
  elsif @config['platform'] == 'Android'
84
-
85
- say "Setting up android", :red
86
87
 
87
- @app = Cuesmash::AndroidApp.new(project_name: options[:app_name], build_configuration: @config['build_configuration'])
88
+ say 'Setting up android', :red
89
+
90
+ @app = Cuesmash::AndroidApp.new(project_name: options[:app_name],
91
+ build_configuration: @config['build_configuration'])
88
92
  setup_android
89
93
 
90
94
  # enumerate over each device / OS combination and run the tests.
91
95
  @config['devices']['emulators'].each do |emulator|
92
96
  say "\n============================\ntesting Android on #{emulator}", :green
93
- Cuesmash::AndroidCommand.execute( avd: emulator,
94
- server: options[:server],
95
- tags: options[:tags],
96
- debug: options[:debug],
97
- app: @app,
98
- profile: options[:profile],
99
- quiet: options[:quiet],
100
- timeout: @config['default']['test_timeout'].to_s)
97
+ Cuesmash::AndroidCommand.execute(avd: emulator,
98
+ server: options[:server],
99
+ tags: options[:tags],
100
+ debug: options[:debug],
101
+ app: @app,
102
+ profile: options[:profile],
103
+ quiet: options[:quiet],
104
+ timeout: @config['default']['test_timeout'].to_s)
101
105
  end # device each
102
106
  else
103
107
  say "please set platform: 'iOS' or 'Android' in your .cuesmash.yml file", :red
@@ -105,28 +109,27 @@ module Cuesmash
105
109
  end
106
110
  end # test
107
111
 
108
- desc "build OPTIONS", "compile the app and create appium.txt to use for arc"
112
+ desc 'build OPTIONS', 'compile the app and create appium.txt to use for arc'
109
113
  long_desc <<-LONGDESC
110
114
  --scheme -s iOS: the Xcode scheme to build\n
111
115
  --app_name -n Android: the app name
112
116
  LONGDESC
113
- method_option :scheme, type: :array, aliases: "-s", desc: "the Xcode scheme to build"
114
- method_option :app_name, type: :string, aliases: "-n", desc: "Android only: the name of the app"
117
+ method_option :scheme, type: :array, aliases: '-s', desc: 'the Xcode scheme to build'
118
+ method_option :app_name, type: :string, aliases: '-n', desc: 'Android only: the name of the app'
115
119
  def build
116
-
117
120
  # get the cuesmash.yml config
118
121
  @config = load_config
119
122
 
120
123
  # if no default then bail
121
- if @config['default'] == nil
122
- say "add a default device and os version to the .cuesmash.yml", :red
124
+ if @config['default'].nil?
125
+ say 'add a default device and os version to the .cuesmash.yml', :red
123
126
  return
124
127
  end
125
128
 
126
129
  if @config['platform'] == 'iOS'
127
130
  setup_ios
128
131
  elsif @config['platform'] == 'Android'
129
- say "Setting up android"
132
+ say 'Setting up android'
130
133
  setup_android
131
134
  else
132
135
  say "please set platform: 'iOS' or 'Android' in your .cuesmash.yml file", :red
@@ -142,9 +145,8 @@ module Cuesmash
142
145
  #
143
146
  # @return [YAML] yaml loaded from the config_file
144
147
  def load_config
145
-
146
- if File.exists?(CONFIG_FILE)
147
- config = YAML.load_file(CONFIG_FILE) if File.exists?(CONFIG_FILE)
148
+ if File.exist?(CONFIG_FILE)
149
+ config = YAML.load_file(CONFIG_FILE) if File.exist?(CONFIG_FILE)
148
150
  else
149
151
  say "There is no '.cuesmash.yml' file. Please create one and try again.\n", :red
150
152
  return
@@ -154,25 +156,29 @@ module Cuesmash
154
156
 
155
157
  #
156
158
  # helper methods
157
- #
159
+ #
158
160
  def setup_ios
159
- @app = IosApp.new(file_name: options[:scheme].join(" "), build_configuration: @config['build_configuration'])
161
+ @app = IosApp.new(file_name: options[:scheme].join(' '), build_configuration: @config['build_configuration'])
160
162
 
161
163
  # Compile the project
162
- compiler = Cuesmash::IosCompiler.new(scheme: options[:scheme].join(" "), tmp_dir: @app.tmp_dir, build_configuration: @config['build_configuration'])
164
+ compiler = Cuesmash::IosCompiler.new(scheme: options[:scheme].join(' '),
165
+ tmp_dir: @app.tmp_dir,
166
+ build_configuration: @config['build_configuration'])
163
167
  compiler.compile
164
168
 
165
169
  ios_appium_text
166
170
  end
167
171
 
168
- #
172
+ #
169
173
  # helper method for setting up android build
170
- #
174
+ #
171
175
  def setup_android
172
- @app = Cuesmash::AndroidApp.new(project_name: options[:app_name], build_configuration: @config['build_configuration'])
176
+ @app = Cuesmash::AndroidApp.new(project_name: options[:app_name],
177
+ build_configuration: @config['build_configuration'])
173
178
 
174
179
  # Compile the project
175
- compiler = Cuesmash::AndroidCompiler.new(project_name: options[:app_name], build_configuration: @config['build_configuration'])
180
+ compiler = Cuesmash::AndroidCompiler.new(project_name: options[:app_name],
181
+ build_configuration: @config['build_configuration'])
176
182
  compiler.compile
177
183
 
178
184
  android_appium_text
@@ -180,33 +186,32 @@ module Cuesmash
180
186
 
181
187
  #
182
188
  # iOS Appium text file set up
183
- #
189
+ #
184
190
  def ios_appium_text
185
- appium = Cuesmash::AppiumText.new(platform_name: "iOS",
186
- device_name: @config['default']['os'],
187
- platform_version: @config['default']['version'].to_s,
188
- app: @app.app_path,
191
+ appium = Cuesmash::AppiumText.new(platform_name: 'iOS',
192
+ device_name: @config['default']['os'],
193
+ platform_version: @config['default']['version'].to_s,
194
+ app: @app.app_path,
189
195
  new_command_timeout: @config['default']['test_timeout'].to_s)
190
196
  appium.execute
191
197
  end
192
198
 
193
199
  #
194
200
  # Android Appium text file set up
195
- #
201
+ #
196
202
  def android_appium_text
197
- appium = Cuesmash::AndroidAppiumText.new( platform_name: @config['platform'],
198
- avd: @config['default_emulator'],
199
- app: @app.app_path,
200
- new_command_timeout: @config['default']['test_timeout'].to_s)
203
+ appium = Cuesmash::AndroidAppiumText.new(platform_name: @config['platform'],
204
+ avd: @config['default_emulator'],
205
+ app: @app.app_path,
206
+ new_command_timeout: @config['default']['test_timeout'].to_s)
201
207
  appium.execute
202
208
  end # android_appium_text
203
209
 
204
- #
210
+ #
205
211
  # Removes the settings and contents for the iOS simulator.
206
- #
212
+ #
207
213
  # @return [type] [description]
208
214
  def reset_ios_simulator
209
-
210
215
  end
211
216
  end # no_commands
212
217
  end # Start class
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.1.9.7
4
+ version: 0.1.9.8
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-01-15 00:00:00.000000000 Z
13
+ date: 2015-04-17 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
@@ -232,7 +232,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
232
232
  version: '0'
233
233
  requirements: []
234
234
  rubyforge_project:
235
- rubygems_version: 2.2.2
235
+ rubygems_version: 2.4.3
236
236
  signing_key:
237
237
  specification_version: 4
238
238
  summary: Compile an app and run cucumber with appium