run_loop 2.1.10 → 2.1.11
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/lib/run_loop/core.rb +1 -22
 - data/lib/run_loop/device_agent/Frameworks.zip +0 -0
 - data/lib/run_loop/device_agent/app/DeviceAgent-Runner.app.zip +0 -0
 - data/lib/run_loop/device_agent/bin/iOSDeviceManager +0 -0
 - data/lib/run_loop/device_agent/client.rb +81 -10
 - data/lib/run_loop/device_agent/ipa/DeviceAgent-Runner.app.zip +0 -0
 - data/lib/run_loop/dylib_injector.rb +24 -0
 - data/lib/run_loop/version.rb +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: e9ebbfcb0e62aedb6823bf0d20769d04a655e231
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 5e155942b7249c597f43aaa0eea71d571d325778
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: e26d30623d4fd37530c2413032e27b8d23c497b1ff58564a338d2c764d927aff5b43fadfc3f0f09c8f6aa5bd82a4964508fbc9a582f30ef9fd6652aeea21670d
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 4cad181f7d717ec8842b4bd0f64c6906597eefa2bd91a214625021eee0b2b6ed120e24e32efcf50095073ff08a16fea432e298959db7e9e825e0610fc3a0e7ba
         
     | 
    
        data/lib/run_loop/core.rb
    CHANGED
    
    | 
         @@ -279,7 +279,7 @@ Logfile: #{log_file} 
     | 
|
| 
       279 
279 
     | 
    
         | 
| 
       280 
280 
     | 
    
         
             
                  RunLoop::Logging.log_debug(logger, "Launching took #{Time.now-before_instruments_launch} seconds")
         
     | 
| 
       281 
281 
     | 
    
         | 
| 
       282 
     | 
    
         
            -
                  dylib_path =  
     | 
| 
      
 282 
     | 
    
         
            +
                  dylib_path = RunLoop::DylibInjector.dylib_path_from_options(merged_options)
         
     | 
| 
       283 
283 
     | 
    
         | 
| 
       284 
284 
     | 
    
         
             
                  if dylib_path
         
     | 
| 
       285 
285 
     | 
    
         
             
                    if device.physical_device?
         
     | 
| 
         @@ -313,26 +313,6 @@ Logfile: #{log_file} 
     | 
|
| 
       313 
313 
     | 
    
         
             
                  true
         
     | 
| 
       314 
314 
     | 
    
         
             
                end
         
     | 
| 
       315 
315 
     | 
    
         | 
| 
       316 
     | 
    
         
            -
                # Extracts the value of :inject_dylib from options Hash.
         
     | 
| 
       317 
     | 
    
         
            -
                # @param options [Hash] arguments passed to {RunLoop.run}
         
     | 
| 
       318 
     | 
    
         
            -
                # @return [String, nil] If the options contains :inject_dylibs and it is a
         
     | 
| 
       319 
     | 
    
         
            -
                #  path to a dylib that exists, return the path.  Otherwise return nil or
         
     | 
| 
       320 
     | 
    
         
            -
                #  raise an error.
         
     | 
| 
       321 
     | 
    
         
            -
                # @raise [RuntimeError] If :inject_dylib points to a path that does not exist.
         
     | 
| 
       322 
     | 
    
         
            -
                # @raise [ArgumentError] If :inject_dylib is not a String.
         
     | 
| 
       323 
     | 
    
         
            -
                def self.dylib_path_from_options(options)
         
     | 
| 
       324 
     | 
    
         
            -
                  inject_dylib = options.fetch(:inject_dylib, nil)
         
     | 
| 
       325 
     | 
    
         
            -
                  return nil if inject_dylib.nil?
         
     | 
| 
       326 
     | 
    
         
            -
                  unless inject_dylib.is_a? String
         
     | 
| 
       327 
     | 
    
         
            -
                    raise ArgumentError, "Expected :inject_dylib to be a path to a dylib, but found '#{inject_dylib}'"
         
     | 
| 
       328 
     | 
    
         
            -
                  end
         
     | 
| 
       329 
     | 
    
         
            -
                  dylib_path = File.expand_path(inject_dylib)
         
     | 
| 
       330 
     | 
    
         
            -
                  unless File.exist?(dylib_path)
         
     | 
| 
       331 
     | 
    
         
            -
                    raise "Cannot load dylib.  The file '#{dylib_path}' does not exist."
         
     | 
| 
       332 
     | 
    
         
            -
                  end
         
     | 
| 
       333 
     | 
    
         
            -
                  dylib_path
         
     | 
| 
       334 
     | 
    
         
            -
                end
         
     | 
| 
       335 
     | 
    
         
            -
             
     | 
| 
       336 
316 
     | 
    
         
             
                # Returns the a default simulator to target.  This default needs to be one
         
     | 
| 
       337 
317 
     | 
    
         
             
                # that installed by default in the current Xcode version.
         
     | 
| 
       338 
318 
     | 
    
         
             
                #
         
     | 
| 
         @@ -365,7 +345,6 @@ Logfile: #{log_file} 
     | 
|
| 
       365 
345 
     | 
    
         
             
                  end
         
     | 
| 
       366 
346 
     | 
    
         
             
                end
         
     | 
| 
       367 
347 
     | 
    
         | 
| 
       368 
     | 
    
         
            -
             
     | 
| 
       369 
348 
     | 
    
         
             
                def self.create_uia_pipe(repl_path)
         
     | 
| 
       370 
349 
     | 
    
         
             
                  begin
         
     | 
| 
       371 
350 
     | 
    
         
             
                    Timeout::timeout(5, RunLoop::TimeoutError) do
         
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         @@ -13,6 +13,7 @@ module RunLoop 
     | 
|
| 
       13 
13 
     | 
    
         
             
                  include RunLoop::Encoding
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
15 
     | 
    
         
             
                  require "run_loop/cache"
         
     | 
| 
      
 16 
     | 
    
         
            +
                  require "run_loop/dylib_injector"
         
     | 
| 
       16 
17 
     | 
    
         | 
| 
       17 
18 
     | 
    
         
             
                  class HTTPError < RuntimeError; end
         
     | 
| 
       18 
19 
     | 
    
         | 
| 
         @@ -78,6 +79,11 @@ module RunLoop 
     | 
|
| 
       78 
79 
     | 
    
         
             
                    app = app_details[:app]
         
     | 
| 
       79 
80 
     | 
    
         
             
                    bundle_id = app_details[:bundle_id]
         
     | 
| 
       80 
81 
     | 
    
         | 
| 
      
 82 
     | 
    
         
            +
                    # process name and dylib path
         
     | 
| 
      
 83 
     | 
    
         
            +
                    dylib_injection_details = Client.details_for_dylib_injection(device,
         
     | 
| 
      
 84 
     | 
    
         
            +
                                                                                 options,
         
     | 
| 
      
 85 
     | 
    
         
            +
                                                                                 app_details)
         
     | 
| 
      
 86 
     | 
    
         
            +
             
     | 
| 
       81 
87 
     | 
    
         
             
                    if device.simulator? && app
         
     | 
| 
       82 
88 
     | 
    
         
             
                      core_sim = RunLoop::CoreSimulator.new(device, app, :xcode => xcode)
         
     | 
| 
       83 
89 
     | 
    
         
             
                      if reset_options
         
     | 
| 
         @@ -120,7 +126,8 @@ $ xcrun security find-identity -v -p codesigning 
     | 
|
| 
       120 
126 
     | 
    
         
             
                    launcher_options = {
         
     | 
| 
       121 
127 
     | 
    
         
             
                        code_sign_identity: code_sign_identity,
         
     | 
| 
       122 
128 
     | 
    
         
             
                        device_agent_install_timeout: install_timeout,
         
     | 
| 
       123 
     | 
    
         
            -
                        shutdown_device_agent_before_launch: shutdown_before_launch
         
     | 
| 
      
 129 
     | 
    
         
            +
                        shutdown_device_agent_before_launch: shutdown_before_launch,
         
     | 
| 
      
 130 
     | 
    
         
            +
                        dylib_injection_details: dylib_injection_details
         
     | 
| 
       124 
131 
     | 
    
         
             
                    }
         
     | 
| 
       125 
132 
     | 
    
         | 
| 
       126 
133 
     | 
    
         
             
                    xcuitest = RunLoop::DeviceAgent::Client.new(bundle_id, device,
         
     | 
| 
         @@ -135,7 +142,7 @@ $ xcrun security find-identity -v -p codesigning 
     | 
|
| 
       135 
142 
     | 
    
         
             
                        :code_sign_identity => code_sign_identity,
         
     | 
| 
       136 
143 
     | 
    
         
             
                        :launcher => cbx_launcher.name,
         
     | 
| 
       137 
144 
     | 
    
         
             
                        :launcher_pid => xcuitest.launcher_pid,
         
     | 
| 
       138 
     | 
    
         
            -
                        :launcher_options => launcher_options
         
     | 
| 
      
 145 
     | 
    
         
            +
                        :launcher_options => xcuitest.launcher_options
         
     | 
| 
       139 
146 
     | 
    
         
             
                      }
         
     | 
| 
       140 
147 
     | 
    
         
             
                      RunLoop::Cache.default.write(cache)
         
     | 
| 
       141 
148 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -168,6 +175,52 @@ $ xcrun security find-identity -v -p codesigning 
     | 
|
| 
       168 
175 
     | 
    
         
             
                    end
         
     | 
| 
       169 
176 
     | 
    
         
             
                  end
         
     | 
| 
       170 
177 
     | 
    
         | 
| 
      
 178 
     | 
    
         
            +
                  def self.details_for_dylib_injection(device, options, app_details)
         
     | 
| 
      
 179 
     | 
    
         
            +
                    dylib_path = RunLoop::DylibInjector.dylib_path_from_options(options)
         
     | 
| 
      
 180 
     | 
    
         
            +
             
     | 
| 
      
 181 
     | 
    
         
            +
                    return nil if !dylib_path
         
     | 
| 
      
 182 
     | 
    
         
            +
             
     | 
| 
      
 183 
     | 
    
         
            +
                    if device.physical_device?
         
     | 
| 
      
 184 
     | 
    
         
            +
                      raise ArgumentError, %Q[
         
     | 
| 
      
 185 
     | 
    
         
            +
             
     | 
| 
      
 186 
     | 
    
         
            +
            Detected :inject_dylib option when targeting a physical device:
         
     | 
| 
      
 187 
     | 
    
         
            +
             
     | 
| 
      
 188 
     | 
    
         
            +
              #{device}
         
     | 
| 
      
 189 
     | 
    
         
            +
             
     | 
| 
      
 190 
     | 
    
         
            +
            Injecting the Calabash iOS Server is not supported on physical devices.
         
     | 
| 
      
 191 
     | 
    
         
            +
             
     | 
| 
      
 192 
     | 
    
         
            +
            ]
         
     | 
| 
      
 193 
     | 
    
         
            +
                    end
         
     | 
| 
      
 194 
     | 
    
         
            +
             
     | 
| 
      
 195 
     | 
    
         
            +
                    app = app_details[:app]
         
     | 
| 
      
 196 
     | 
    
         
            +
                    bundle_id = app_details[:bundle_id]
         
     | 
| 
      
 197 
     | 
    
         
            +
             
     | 
| 
      
 198 
     | 
    
         
            +
                    details = { dylib_path: dylib_path }
         
     | 
| 
      
 199 
     | 
    
         
            +
             
     | 
| 
      
 200 
     | 
    
         
            +
                    if !app
         
     | 
| 
      
 201 
     | 
    
         
            +
                      # Special case handling of the Settings.app
         
     | 
| 
      
 202 
     | 
    
         
            +
                      if bundle_id == "com.apple.Preferences"
         
     | 
| 
      
 203 
     | 
    
         
            +
                        details[:process_name] = "Preferences"
         
     | 
| 
      
 204 
     | 
    
         
            +
                      else
         
     | 
| 
      
 205 
     | 
    
         
            +
                        raise ArgumentError, %Q[
         
     | 
| 
      
 206 
     | 
    
         
            +
             
     | 
| 
      
 207 
     | 
    
         
            +
            Detected :inject_dylib option, but the target application is a bundle identifier:
         
     | 
| 
      
 208 
     | 
    
         
            +
             
     | 
| 
      
 209 
     | 
    
         
            +
              app: #{bundle_id}
         
     | 
| 
      
 210 
     | 
    
         
            +
             
     | 
| 
      
 211 
     | 
    
         
            +
            To use dylib injection, you must provide a path to an .app bundle.
         
     | 
| 
      
 212 
     | 
    
         
            +
             
     | 
| 
      
 213 
     | 
    
         
            +
            ]
         
     | 
| 
      
 214 
     | 
    
         
            +
                      end
         
     | 
| 
      
 215 
     | 
    
         
            +
                    else
         
     | 
| 
      
 216 
     | 
    
         
            +
                      details[:process_name] = app.executable_name
         
     | 
| 
      
 217 
     | 
    
         
            +
                    end
         
     | 
| 
      
 218 
     | 
    
         
            +
                    details
         
     | 
| 
      
 219 
     | 
    
         
            +
                  end
         
     | 
| 
      
 220 
     | 
    
         
            +
             
     | 
| 
      
 221 
     | 
    
         
            +
            =begin
         
     | 
| 
      
 222 
     | 
    
         
            +
            INSTANCE METHODS
         
     | 
| 
      
 223 
     | 
    
         
            +
            =end
         
     | 
| 
       171 
224 
     | 
    
         
             
                  attr_reader :bundle_id, :device, :cbx_launcher, :launcher_options, :launcher_pid
         
     | 
| 
       172 
225 
     | 
    
         | 
| 
       173 
226 
     | 
    
         
             
                  # @!visibility private
         
     | 
| 
         @@ -461,8 +514,8 @@ Query must contain at least one of these keys: 
     | 
|
| 
       461 
514 
     | 
    
         
             
                  end
         
     | 
| 
       462 
515 
     | 
    
         | 
| 
       463 
516 
     | 
    
         
             
                  # @!visibility private
         
     | 
| 
       464 
     | 
    
         
            -
                  def  
     | 
| 
       465 
     | 
    
         
            -
                    request = request(" 
     | 
| 
      
 517 
     | 
    
         
            +
                  def springboard_alert
         
     | 
| 
      
 518 
     | 
    
         
            +
                    request = request("springboard-alert")
         
     | 
| 
       466 
519 
     | 
    
         
             
                    client = http_client(http_options)
         
     | 
| 
       467 
520 
     | 
    
         
             
                    response = client.get(request)
         
     | 
| 
       468 
521 
     | 
    
         
             
                    hash = expect_300_response(response)
         
     | 
| 
         @@ -470,8 +523,8 @@ Query must contain at least one of these keys: 
     | 
|
| 
       470 
523 
     | 
    
         
             
                  end
         
     | 
| 
       471 
524 
     | 
    
         | 
| 
       472 
525 
     | 
    
         
             
                  # @!visibility private
         
     | 
| 
       473 
     | 
    
         
            -
                  def  
     | 
| 
       474 
     | 
    
         
            -
                    ! 
     | 
| 
      
 526 
     | 
    
         
            +
                  def springboard_alert_visible?
         
     | 
| 
      
 527 
     | 
    
         
            +
                    !springboard_alert.empty?
         
     | 
| 
       475 
528 
     | 
    
         
             
                  end
         
     | 
| 
       476 
529 
     | 
    
         | 
| 
       477 
530 
     | 
    
         
             
                  # @!visibility private
         
     | 
| 
         @@ -1146,9 +1199,6 @@ $ tail -1000 -F #{cbx_launcher.class.log_file} 
     | 
|
| 
       1146 
1199 
     | 
    
         | 
| 
       1147 
1200 
     | 
    
         
             
                  # @!visibility private
         
     | 
| 
       1148 
1201 
     | 
    
         
             
                  def launch_aut(bundle_id = @bundle_id)
         
     | 
| 
       1149 
     | 
    
         
            -
                    client = http_client(http_options)
         
     | 
| 
       1150 
     | 
    
         
            -
                    request = request("session", {:bundleID => bundle_id})
         
     | 
| 
       1151 
     | 
    
         
            -
             
     | 
| 
       1152 
1202 
     | 
    
         
             
                    # This check needs to be done _before_ the DeviceAgent is launched.
         
     | 
| 
       1153 
1203 
     | 
    
         
             
                    if device.simulator?
         
     | 
| 
       1154 
1204 
     | 
    
         
             
                      # Yes, we could use iOSDeviceManager to check, I dont understand the
         
     | 
| 
         @@ -1181,6 +1231,8 @@ Please install it. 
     | 
|
| 
       1181 
1231 
     | 
    
         
             
                    end
         
     | 
| 
       1182 
1232 
     | 
    
         | 
| 
       1183 
1233 
     | 
    
         
             
                    retries = 5
         
     | 
| 
      
 1234 
     | 
    
         
            +
                    client = http_client(http_options)
         
     | 
| 
      
 1235 
     | 
    
         
            +
                    request = request("session", {:bundleID => bundle_id})
         
     | 
| 
       1184 
1236 
     | 
    
         | 
| 
       1185 
1237 
     | 
    
         
             
                    begin
         
     | 
| 
       1186 
1238 
     | 
    
         
             
                      response = client.post(request)
         
     | 
| 
         @@ -1188,6 +1240,15 @@ Please install it. 
     | 
|
| 
       1188 
1240 
     | 
    
         
             
                      RunLoop.log_debug("#{response.body}")
         
     | 
| 
       1189 
1241 
     | 
    
         | 
| 
       1190 
1242 
     | 
    
         
             
                      expect_300_response(response)
         
     | 
| 
      
 1243 
     | 
    
         
            +
             
     | 
| 
      
 1244 
     | 
    
         
            +
                      # Dylib injection.  DeviceAgent.run checks the arguments.
         
     | 
| 
      
 1245 
     | 
    
         
            +
                      dylib_injection_details = launcher_options[:dylib_injection_details]
         
     | 
| 
      
 1246 
     | 
    
         
            +
                      if dylib_injection_details
         
     | 
| 
      
 1247 
     | 
    
         
            +
                        process_name = dylib_injection_details[:process_name]
         
     | 
| 
      
 1248 
     | 
    
         
            +
                        dylib_path = dylib_injection_details[:dylib_path]
         
     | 
| 
      
 1249 
     | 
    
         
            +
                        injector = RunLoop::DylibInjector.new(process_name, dylib_path)
         
     | 
| 
      
 1250 
     | 
    
         
            +
                        injector.retriable_inject_dylib
         
     | 
| 
      
 1251 
     | 
    
         
            +
                      end
         
     | 
| 
       1191 
1252 
     | 
    
         
             
                    rescue => e
         
     | 
| 
       1192 
1253 
     | 
    
         
             
                      retries = retries - 1
         
     | 
| 
       1193 
1254 
     | 
    
         
             
                      if !RunLoop::Environment.xtc?
         
     | 
| 
         @@ -1271,7 +1332,7 @@ Expected JSON response with no error, but found 
     | 
|
| 
       1271 
1332 
     | 
    
         
             
                      raise ArgumentError, %Q[
         
     | 
| 
       1272 
1333 
     | 
    
         
             
            Expected #{position} to be a Symbol or Fixnum but found #{position.class}
         
     | 
| 
       1273 
1334 
     | 
    
         | 
| 
       1274 
     | 
    
         
            -
             
     | 
| 
      
 1335 
     | 
    
         
            +
            ]
         
     | 
| 
       1275 
1336 
     | 
    
         
             
                    end
         
     | 
| 
       1276 
1337 
     | 
    
         
             
                  end
         
     | 
| 
       1277 
1338 
     | 
    
         | 
| 
         @@ -1293,9 +1354,19 @@ Expected #{position} to be a Symbol or Fixnum but found #{position.class} 
     | 
|
| 
       1293 
1354 
     | 
    
         
             
            Could not coerce '#{position}' into a valid orientation.
         
     | 
| 
       1294 
1355 
     | 
    
         | 
| 
       1295 
1356 
     | 
    
         
             
            Valid values are: :down, :up, :right, :left, :bottom, :top
         
     | 
| 
      
 1357 
     | 
    
         
            +
             
     | 
| 
       1296 
1358 
     | 
    
         
             
            ]
         
     | 
| 
       1297 
1359 
     | 
    
         
             
                    end
         
     | 
| 
       1298 
1360 
     | 
    
         
             
                  end
         
     | 
| 
      
 1361 
     | 
    
         
            +
             
     | 
| 
      
 1362 
     | 
    
         
            +
                  # @!visibility private
         
     | 
| 
      
 1363 
     | 
    
         
            +
                  # Private method.  Do not call.
         
     | 
| 
      
 1364 
     | 
    
         
            +
                  def _dismiss_springboard_alerts
         
     | 
| 
      
 1365 
     | 
    
         
            +
                    request = request("dismiss-springboard-alerts")
         
     | 
| 
      
 1366 
     | 
    
         
            +
                    client = http_client(http_options)
         
     | 
| 
      
 1367 
     | 
    
         
            +
                    response = client.post(request)
         
     | 
| 
      
 1368 
     | 
    
         
            +
                    expect_300_response(response)
         
     | 
| 
      
 1369 
     | 
    
         
            +
                  end
         
     | 
| 
       1299 
1370 
     | 
    
         
             
                end
         
     | 
| 
       1300 
1371 
     | 
    
         
             
              end
         
     | 
| 
       1301 
1372 
     | 
    
         
             
            end
         
     | 
| 
         Binary file 
     | 
| 
         @@ -26,6 +26,30 @@ module RunLoop 
     | 
|
| 
       26 
26 
     | 
    
         
             
                  :timeout => RunLoop::Environment.ci? ? 40 : 20
         
     | 
| 
       27 
27 
     | 
    
         
             
                }
         
     | 
| 
       28 
28 
     | 
    
         | 
| 
      
 29 
     | 
    
         
            +
                # Extracts the value of :inject_dylib from options Hash.
         
     | 
| 
      
 30 
     | 
    
         
            +
                # @param options [Hash] arguments passed to {RunLoop.run}
         
     | 
| 
      
 31 
     | 
    
         
            +
                # @return [String, nil] If the options contains :inject_dylibs and it is a
         
     | 
| 
      
 32 
     | 
    
         
            +
                #  path to a dylib that exists, return the path.  Otherwise return nil or
         
     | 
| 
      
 33 
     | 
    
         
            +
                #  raise an error.
         
     | 
| 
      
 34 
     | 
    
         
            +
                # @raise [RuntimeError] If :inject_dylib points to a path that does not exist.
         
     | 
| 
      
 35 
     | 
    
         
            +
                # @raise [ArgumentError] If :inject_dylib is not a String.
         
     | 
| 
      
 36 
     | 
    
         
            +
                def self.dylib_path_from_options(options)
         
     | 
| 
      
 37 
     | 
    
         
            +
                  inject_dylib = options.fetch(:inject_dylib, nil)
         
     | 
| 
      
 38 
     | 
    
         
            +
                  return nil if inject_dylib.nil?
         
     | 
| 
      
 39 
     | 
    
         
            +
                  if !inject_dylib.is_a? String
         
     | 
| 
      
 40 
     | 
    
         
            +
                    raise ArgumentError, %Q[
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
            Expected :inject_dylib to be a path to a dylib, but found '#{inject_dylib}'
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
            ]
         
     | 
| 
      
 45 
     | 
    
         
            +
                  end
         
     | 
| 
      
 46 
     | 
    
         
            +
                  dylib_path = File.expand_path(inject_dylib)
         
     | 
| 
      
 47 
     | 
    
         
            +
                  unless File.exist?(dylib_path)
         
     | 
| 
      
 48 
     | 
    
         
            +
                    raise "Cannot load dylib.  The file '#{dylib_path}' does not exist."
         
     | 
| 
      
 49 
     | 
    
         
            +
                  end
         
     | 
| 
      
 50 
     | 
    
         
            +
                  dylib_path
         
     | 
| 
      
 51 
     | 
    
         
            +
                end
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
       29 
53 
     | 
    
         
             
                # @!attribute [r] process_name
         
     | 
| 
       30 
54 
     | 
    
         
             
                # The name of the process to inject the dylib into.  This should be obtained
         
     | 
| 
       31 
55 
     | 
    
         
             
                #  by inspecting the Info.plist in the app bundle.
         
     | 
    
        data/lib/run_loop/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: run_loop
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 2.1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 2.1.11
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Karl Krukow
         
     | 
| 
         @@ -9,7 +9,7 @@ authors: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       10 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date: 2016-09- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2016-09-12 00:00:00.000000000 Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
14 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
15 
     | 
    
         
             
              name: json
         
     |