Module: Aruba::Api::Core
Overview
Core methods of aruba
Those methods do not depend on any other API method of aruba
Instance Method Summary collapse
-
#aruba ⇒ Object
Aruba Runtime.
-
#cd(dir, &block) ⇒ Object
Switch to directory.
-
#expand_path(file_name, dir_string = nil) ⇒ String
Expand file name.
-
#setup_aruba ⇒ Object
Clean the working directory of aruba.
-
#with_environment(env = {}) { ... } ⇒ Object
Run block with environment.
Methods included from RSpec::Matchers
Instance Method Details
#aruba ⇒ Object
Aruba Runtime
19 20 21 |
# File 'lib/aruba/api/core.rb', line 19 def aruba @_aruba_runtime ||= Runtime.new end |
#cd(dir, &block) ⇒ Object
Switch to directory
rubocop:disable Metrics/MethodLength
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/aruba/api/core.rb', line 49 def cd(dir, &block) if block_given? begin fail ArgumentError, "#{(dir)} is not a directory or does not exist." unless Aruba.platform.directory? (dir) old_directory = ('.') aruba.current_directory << dir new_directory = ('.') aruba.event_bus.notify Events::ChangedWorkingDirectory.new(:old => old_directory, :new => new_directory) old_dir = Aruba.platform.getwd Aruba.platform.chdir File.join(aruba.root_directory, aruba.current_directory) result = Aruba.platform.with_environment( 'OLDPWD' => old_dir, 'PWD' => File.(File.join(aruba.root_directory, aruba.current_directory)), &block ) ensure aruba.current_directory.pop Aruba.platform.chdir old_dir end return result end fail ArgumentError, "#{(dir)} is not a directory or does not exist." unless Aruba.platform.directory? (dir) old_directory = ('.') aruba.current_directory << dir new_directory = ('.') aruba.event_bus.notify Events::ChangedWorkingDirectory.new(:old => old_directory, :new => new_directory) self end |
#expand_path(file_name, dir_string = nil) ⇒ String
Expand file name
rubocop:disable Metrics/MethodLength rubocop:disable Metrics/CyclomaticComplexity
122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 |
# File 'lib/aruba/api/core.rb', line 122 def (file_name, dir_string = nil) check_for_deprecated_variables if Aruba::VERSION < '1' # rubocop:disable Metrics/LineLength = %(Filename "#{file_name}" needs to be a string. It cannot be nil or empty either. Please use `expand_path('.')` if you want the current directory to be expanded.) # rubocop:enable Metrics/LineLength fail ArgumentError, unless file_name.is_a?(String) && !file_name.empty? # rubocop:disable Metrics/LineLength aruba.logger.warn %(`aruba`'s working directory does not exist. Maybe you forgot to run `setup_aruba` before using it's API. This warning will be an error from 1.0.0) unless Aruba.platform.directory? File.join(aruba.config.root_directory, aruba.config.working_directory) # rubocop:enable Metrics/LineLength if RUBY_VERSION < '1.9' prefix = file_name.chars.to_a[0].to_s rest = if file_name.chars.to_a[2..-1].nil? nil else file_name.chars.to_a[2..-1].join end else prefix = file_name[0] rest = file_name[2..-1] end if aruba.config.fixtures_path_prefix == prefix path = File.join(*[aruba.fixtures_directory, rest].compact) # rubocop:disable Metrics/LineLength fail ArgumentError, %(Fixture "#{rest}" does not exist in fixtures directory "#{aruba.fixtures_directory}". This was the one we found first on your system from all possible candidates: #{aruba.config.fixtures_directories.map { |p| format('"%s"', p) }.join(', ')}.) unless Aruba.platform.exist? path # rubocop:enable Metrics/LineLength path elsif '~' == prefix path = with_environment do ArubaPath.new(File.(file_name)) end fail ArgumentError, 'Expanding "~/" to "/" is not allowed' if path.to_s == '/' fail ArgumentError, %(Expanding "~/" to a relative path "#{path}" is not allowed) unless path.absolute? path.to_s else directory = File.join(aruba.root_directory, aruba.current_directory) ArubaPath.new(File.join(*[directory, dir_string, file_name].compact))..to_s end end |
#setup_aruba ⇒ Object
Clean the working directory of aruba
This will only clean up aruba's working directory to remove all artifacts of your tests. This does NOT clean up the current working directory.
28 29 30 31 32 |
# File 'lib/aruba/api/core.rb', line 28 def setup_aruba Aruba::Setup.new(aruba).call self end |
#with_environment(env = {}) { ... } ⇒ Object
Run block with environment
179 180 181 182 183 184 185 186 187 188 |
# File 'lib/aruba/api/core.rb', line 179 def with_environment(env = {}, &block) old_aruba_env = aruba.environment.to_h # make sure the old environment is really restored in "ENV" Aruba.platform.with_environment aruba.environment.update(env).to_h, &block ensure # make sure the old environment is really restored in "aruba.environment" aruba.environment.clear aruba.environment.update old_aruba_env end |