class RunLoop::Environment

Constants

WIN_PATTERNS

@visibility private

Public Class Methods

azurepipelines?() click to toggle source
# File lib/run_loop/environment.rb, line 300
def self.azurepipelines?
  value = ENV["AGENT_VERSION"]
  !!value && value != ''
end
bundle_id() click to toggle source

Returns the value of BUNDLE_ID

# File lib/run_loop/environment.rb, line 138
def self.bundle_id
  value = ENV['BUNDLE_ID']
  if !value || value == ''
    nil
  else
    value
  end
end
cbxdevice() click to toggle source

Returns the value of CBXDEVICE

Use this to specify a non-default CBX-Runner for physical devices.

The default CBX-Runner is bundled with this gem.

# File lib/run_loop/environment.rb, line 227
def self.cbxdevice
  value = ENV["CBXDEVICE"]
  if !value || value == ""
    nil
  else
    value
  end
end
cbxsim() click to toggle source

Returns the value of CBXSIM

Use this to specify a non-default CBX-Runner for simulators.

The default CBX-Runner is bundled with this gem.

# File lib/run_loop/environment.rb, line 241
def self.cbxsim
  value = ENV["CBXSIM"]
  if !value || value == ""
    nil
  else
    value
  end
end
ci?() click to toggle source

Returns true if running in a CI environment

# File lib/run_loop/environment.rb, line 306
def self.ci?
  [
    self.ci_var_defined?,
    self.travis?,
    self.jenkins?,
    self.circle_ci?,
    self.teamcity?,
    self.gitlab?,
    self.azurepipelines?
  ].any?
end
circle_ci?() click to toggle source

Returns true if running in Circle CI

Checks the value of CIRCLECI

# File lib/run_loop/environment.rb, line 279
def self.circle_ci?
  value = ENV["CIRCLECI"]
  !!value && value != ''
end
code_sign_identity() click to toggle source

Returns the value of CODE_SIGN_IDENTITY

# File lib/run_loop/environment.rb, line 175
def self.code_sign_identity
  value = ENV["CODE_SIGN_IDENTITY"]
  if !value || value == ""
    nil
  else
    value
  end
end
debug?() click to toggle source

Returns true if debugging is enabled.

# File lib/run_loop/environment.rb, line 26
def self.debug?
  ENV['DEBUG'] == '1'
end
debug_read?() click to toggle source

Returns true if read debugging is enabled.

# File lib/run_loop/environment.rb, line 31
def self.debug_read?
  ENV['DEBUG_READ'] == '1'
end
derived_data() click to toggle source

Returns the value of DERIVED_DATA which can be used to specify an alternative DerivedData directory.

The default is ~/Library/Xcode/DerivedData, but Xcode allows you to change this value.

# File lib/run_loop/environment.rb, line 94
def self.derived_data
  value = ENV["DERIVED_DATA"]
  if value.nil? || value == ""
    nil
  else
    File.expand_path(value)
  end
end
developer_dir() click to toggle source

Returns the value of DEVELOPER_DIR

@note Never call this directly. Always create an Xcode instance

and allow it to derive the path to the Xcode toolchain.
# File lib/run_loop/environment.rb, line 165
def self.developer_dir
  value = ENV['DEVELOPER_DIR']
  if !value || value == ''
    nil
  else
    value
  end
end
device_agent_url() click to toggle source

Returns the value of DEVICE_ENDPOINT

# File lib/run_loop/environment.rb, line 251
def self.device_agent_url
  value = ENV["DEVICE_AGENT_URL"]
  if value.nil? || value == ""
    nil
  else
    value
  end
end
device_endpoint() click to toggle source

Returns the value of DEVICE_ENDPOINT

# File lib/run_loop/environment.rb, line 51
def self.device_endpoint
  value = ENV["DEVICE_ENDPOINT"]
  if value.nil? || value == ""
    nil
  else
    value
  end
end
device_target() click to toggle source

Returns the value of DEVICE_TARGET

# File lib/run_loop/environment.rb, line 41
def self.device_target
  value = ENV["DEVICE_TARGET"]
  if value.nil? || value == ""
    nil
  else
    value
  end
end
gitlab?() click to toggle source

Returns true if running in Teamcity

Checks the value of GITLAB_CI

# File lib/run_loop/environment.rb, line 295
def self.gitlab?
  value = ENV["GITLAB_CI"]
  !!value && value != ''
end
ios_device_manager() click to toggle source

Returns the value of IOS_DEVICE_MANAGER

Use this to specify a non-default ios_device_manager binary.

The default ios_device_manager binary is bundled with this gem.

# File lib/run_loop/environment.rb, line 213
def self.ios_device_manager
  value = ENV["IOS_DEVICE_MANAGER"]
  if !value || value == ""
    nil
  else
    value
  end
end
jenkins?() click to toggle source

Returns true if running in Jenkins CI

Checks the value of JENKINS_HOME

# File lib/run_loop/environment.rb, line 263
def self.jenkins?
  value = ENV["JENKINS_HOME"]
  !!value && value != ''
end
keychain() click to toggle source

Returns the value of KEYCHAIN

Use this to specify a non-default KEYCHAIN for code signing.

The default KEYCHAIN is login.keychain.

# File lib/run_loop/environment.rb, line 199
def self.keychain
  value = ENV["KEYCHAIN"]
  if !value || value == ""
    nil
  else
    value
  end
end
path_to_app_bundle() click to toggle source

Returns to the path to the app bundle (simulator builds).

Both APP_BUNDLE_PATH and APP are checked and in that order.

Use of APP_BUNDLE_PATH is deprecated and will be removed.

# File lib/run_loop/environment.rb, line 152
def self.path_to_app_bundle
  value = ENV['APP_BUNDLE_PATH'] || ENV['APP']
  if !value || value == ''
    nil
  else
    File.expand_path(value)
  end
end
port() click to toggle source
# File lib/run_loop/environment.rb, line 60
def self.port
  value = ENV["CBX_SERVER_PORT"]
  if value.nil? || value == ""
    27753
  else
    value
  end
end
provisioning_profile() click to toggle source

Returns the value of PROVISIONING_PROFILE

# File lib/run_loop/environment.rb, line 185
def self.provisioning_profile
  value = ENV["PROVISIONING_PROFILE"]
  if !value || value == ""
    nil
  else
    value
  end
end
reset_between_scenarios?() click to toggle source

Should the app data be reset between Scenarios?

# File lib/run_loop/environment.rb, line 70
def self.reset_between_scenarios?
  ENV["RESET_BETWEEN_SCENARIOS"] == "1"
end
solution() click to toggle source

Returns the value of SOLUTION which can be used to specify a Xamarin Studio .sln

This is useful if your project has multiple solutions (.sln) and Calabash cannot detect the correct one.

# File lib/run_loop/environment.rb, line 108
def self.solution
  value = ENV["SOLUTION"]
  if value.nil? || value == ""
    nil
  else
    File.expand_path(value)
  end
end
teamcity?() click to toggle source

Returns true if running in Teamcity

Checks the value of TEAMCITY_PROJECT_NAME

# File lib/run_loop/environment.rb, line 287
def self.teamcity?
  value = ENV["TEAMCITY_PROJECT_NAME"]
  !!value && value != ''
end
trace_template() click to toggle source

Returns the value of TRACE_TEMPLATE; the Instruments template to use during testing.

# File lib/run_loop/environment.rb, line 119
def self.trace_template
  value = ENV['TRACE_TEMPLATE']
  if value.nil? || value == ""
    nil
  else
    File.expand_path(value)
  end
end
travis?() click to toggle source

Returns true if running in Travis CI

Checks the value of TRAVIS

# File lib/run_loop/environment.rb, line 271
def self.travis?
  value = ENV["TRAVIS"]
  !!value && value != ''
end
uia_timeout() click to toggle source

Returns the value of UIA_TIMEOUT. Use this control how long to wait for instruments to launch and attach to your application.

Non-empty values are converted to a float.

# File lib/run_loop/environment.rb, line 132
def self.uia_timeout
  timeout = ENV['UIA_TIMEOUT']
  timeout ? timeout.to_f : nil
end
user_home_directory() click to toggle source

Returns the user home directory

# File lib/run_loop/environment.rb, line 5
def self.user_home_directory
  if self.xtc?
     home = File.join("./", "tmp", "home")
     FileUtils.mkdir_p(home)
     home
  else
    require 'etc'
    Etc.getpwuid.dir
  end
end
windows_env?() click to toggle source

Returns true if Windows environment

# File lib/run_loop/environment.rb, line 17
def self.windows_env?
  if @@windows_env.nil?
    @@windows_env = Environment.host_os_is_win?
  end

  @@windows_env
end
with_debugging(debug, &block) click to toggle source

!@visibility private

# File lib/run_loop/environment.rb, line 319
def self.with_debugging(debug, &block)
  if debug
    original_value = ENV['DEBUG']

    begin
      ENV['DEBUG'] = '1'
      block.call
    ensure
      ENV['DEBUG'] = original_value
    end

  else
    block.call
  end
end
xcodeproj() click to toggle source

Returns the value of XCODEPROJ which can be used to specify an Xcode project directory (my.xcodeproj).

This is useful if your project has multiple xcodeproj directories.

Most users should not set this variable.

# File lib/run_loop/environment.rb, line 80
def self.xcodeproj
  value = ENV["XCODEPROJ"]
  if value.nil? || value == ""
    nil
  else
    File.expand_path(value)
  end
end
xtc?() click to toggle source

Returns true if we are running on the XTC

# File lib/run_loop/environment.rb, line 36
def self.xtc?
  ENV['XAMARIN_TEST_CLOUD'] == '1'
end

Private Class Methods

cbxws() click to toggle source

!@visibility private Returns the value of CBXWS. This can be used in conjunction with :cbx_launcher => :xcodebuild to launch the DeviceAgent rather than iOSDeviceManager.

You should only set this if you are actively developing the DeviceAgent.

# File lib/run_loop/environment.rb, line 349
    def self.cbxws
      value = ENV["CBXWS"]
      if value.nil? || value == ""
        nil
      else
        path = File.expand_path(value)
        if !File.directory?(path)
          raise RuntimeError, %Q[
CBXWS is set, but there is no workspace at

#{path}

Only set CBXWS if you are developing new features in the DeviceAgent.

]
        end
        path
      end
    end
ci_var_defined?() click to toggle source

!@visibility private

# File lib/run_loop/environment.rb, line 338
def self.ci_var_defined?
  value = ENV["CI"]
  !!value && value != ''
end
host_os_is_win?() click to toggle source

@!visibility private

# File lib/run_loop/environment.rb, line 385
def self.host_os_is_win?
  ruby_platform = RbConfig::CONFIG["host_os"]
  !!WIN_PATTERNS.find { |r| ruby_platform =~ r }
end