Module: Selenium::WebDriver::Platform Private

Defined in:
lib/selenium/webdriver/common/platform.rb

Overview

This module is part of a private API. You should avoid using this module if possible, as it may be removed or be changed in the future.

API:

  • private

Class Method Summary collapse

Class Method Details

.assert_executable(path) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Raises:

API:

  • private



139
140
141
142
143
144
145
# File 'lib/selenium/webdriver/common/platform.rb', line 139

def assert_executable(path)
  assert_file(path)

  return if File.executable? path

  raise Error::WebDriverError, "not executable: #{path.inspect}"
end

.assert_file(path) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Raises:

API:

  • private



133
134
135
136
137
# File 'lib/selenium/webdriver/common/platform.rb', line 133

def assert_file(path)
  return if File.file? path

  raise Error::WebDriverError, "not a file: #{path.inspect}"
end

.ciObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



53
54
55
56
57
58
59
60
61
# File 'lib/selenium/webdriver/common/platform.rb', line 53

def ci
  if ENV['JENKINS']
    :jenkins
  elsif ENV['APPVEYOR']
    :appveyor
  elsif ENV['GITHUB_ACTIONS']
    :github
  end
end

.cygwin?Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

API:

  • private



100
101
102
# File 'lib/selenium/webdriver/common/platform.rb', line 100

def cygwin?
  RUBY_PLATFORM.include?('cygwin')
end

.cygwin_path(path, only_cygwin: false, **opts) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



112
113
114
115
116
117
118
119
# File 'lib/selenium/webdriver/common/platform.rb', line 112

def cygwin_path(path, only_cygwin: false, **opts)
  return path if only_cygwin && !cygwin?

  flags = []
  opts.each { |k, v| flags << "--#{k}" if v }

  `cygpath #{flags.join ' '} "#{path}"`.strip
end

.engineObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



33
34
35
# File 'lib/selenium/webdriver/common/platform.rb', line 33

def engine
  @engine ||= RUBY_ENGINE.to_sym
end

.exit_hookObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



147
148
149
150
151
# File 'lib/selenium/webdriver/common/platform.rb', line 147

def exit_hook
  pid = Process.pid

  at_exit { yield if Process.pid == pid }
end

.homeObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



29
30
31
# File 'lib/selenium/webdriver/common/platform.rb', line 29

def home
  @home ||= Dir.home
end

.interfacesObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



177
178
179
180
181
182
# File 'lib/selenium/webdriver/common/platform.rb', line 177

def interfaces
  interfaces = Socket.getaddrinfo('localhost', 8080).map { |e| e[3] }
  interfaces += ['0.0.0.0', Platform.ip]

  interfaces.compact.uniq
end

.ipObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
# File 'lib/selenium/webdriver/common/platform.rb', line 161

def ip
  orig = Socket.do_not_reverse_lookup
  Socket.do_not_reverse_lookup = true

  begin
    UDPSocket.open do |s|
      s.connect '8.8.8.8', 53
      return s.addr.last
    end
  ensure
    Socket.do_not_reverse_lookup = orig
  end
rescue Errno::ENETUNREACH, Errno::EHOSTUNREACH
  # no external ip
end

.jruby?Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

API:

  • private



63
64
65
# File 'lib/selenium/webdriver/common/platform.rb', line 63

def jruby?
  engine == :jruby
end

.linux?Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

API:

  • private



83
84
85
# File 'lib/selenium/webdriver/common/platform.rb', line 83

def linux?
  os == :linux
end

.localhostObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Raises:

API:

  • private



153
154
155
156
157
158
159
# File 'lib/selenium/webdriver/common/platform.rb', line 153

def localhost
  info = Socket.getaddrinfo 'localhost', 80, Socket::AF_INET, Socket::SOCK_STREAM

  return info[0][3] unless info.empty?

  raise Error::WebDriverError, "unable to translate 'localhost' for TCP + IPv4"
end

.mac?Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

API:

  • private



79
80
81
# File 'lib/selenium/webdriver/common/platform.rb', line 79

def mac?
  os == :macosx
end

.make_writable(file) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



129
130
131
# File 'lib/selenium/webdriver/common/platform.rb', line 129

def make_writable(file)
  File.chmod 0o766, file
end

.null_deviceObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



104
105
106
# File 'lib/selenium/webdriver/common/platform.rb', line 104

def null_device
  File::NULL
end

.osObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/selenium/webdriver/common/platform.rb', line 37

def os
  host_os = RbConfig::CONFIG['host_os']
  @os ||= case host_os
          when /mswin|msys|mingw|cygwin|bccwin|wince|emc/
            :windows
          when /darwin|mac os/
            :macosx
          when /linux/
            :linux
          when /solaris|bsd/
            :unix
          else
            raise Error::WebDriverError, "unknown os: #{host_os.inspect}"
          end
end

.ruby_versionObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



71
72
73
# File 'lib/selenium/webdriver/common/platform.rb', line 71

def ruby_version
  RUBY_VERSION
end

.truffleruby?Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

API:

  • private



67
68
69
# File 'lib/selenium/webdriver/common/platform.rb', line 67

def truffleruby?
  engine == :truffleruby
end

.unix?Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

API:

  • private



87
88
89
# File 'lib/selenium/webdriver/common/platform.rb', line 87

def unix?
  os == :unix
end

.unix_path(path) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



121
122
123
# File 'lib/selenium/webdriver/common/platform.rb', line 121

def unix_path(path)
  path.tr(File::ALT_SEPARATOR, File::SEPARATOR)
end

.windows?Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

API:

  • private



75
76
77
# File 'lib/selenium/webdriver/common/platform.rb', line 75

def windows?
  os == :windows
end

.windows_path(path) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



125
126
127
# File 'lib/selenium/webdriver/common/platform.rb', line 125

def windows_path(path)
  path.tr(File::SEPARATOR, File::ALT_SEPARATOR)
end

.wrap_in_quotes_if_necessary(str) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



108
109
110
# File 'lib/selenium/webdriver/common/platform.rb', line 108

def wrap_in_quotes_if_necessary(str)
  windows? && !cygwin? ? %("#{str}") : str
end

.wsl?Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

API:

  • private



91
92
93
94
95
96
97
98
# File 'lib/selenium/webdriver/common/platform.rb', line 91

def wsl?
  return false unless linux?

  File.read('/proc/version').downcase.include?('microsoft')
rescue Errno::EACCES
  # the file cannot be accessed on Linux on DeX
  false
end