Sha256: c0c364bd3dff2a2f611b81897edbd24b27109f54bebe2ccb839cd71a49bf868e

Contents?: true

Size: 1.92 KB

Versions: 20

Compression:

Stored size: 1.92 KB

Contents

require 'rspec/expectations/version'

# @!method have_permissions(permissions)
#   This matchers checks if <file> or <directory> has <perm> permissions
#
#   @param [Fixnum, String] permissions
#     The permissions as octal number, e.g. `0700`, or String, e.g. `'0700'`
#
#   @return [TrueClass, FalseClass] The result
#
#     false:
#     * if file has permissions
#     true:
#     * if file does not have permissions
#
#   @example Use matcher with octal number
#
#     RSpec.describe do
#       it { expect(file).to have_permissions(0700) }
#       it { expect(directory).to have_permissions(0700) }
#     end
#
#   @example Use matcher with string
#
#     RSpec.describe do
#       it { expect(file).to have_permissions('0700') }
#       it { expect(files).to include a_path_with_permissions('0700') }
#       it { expect(directory).to have_permissions('0700') }
#       it { expect(directories).to include a_path_with_permissions('0700') }
#     end
RSpec::Matchers.define :have_permissions do |expected|
  def permissions(file)
    @actual = Aruba.platform.filesystem_status.new(file).mode
  end

  match do |actual|
    stop_all_commands

    @old_actual = actual
    @actual = permissions(expand_path(@old_actual))

    @expected = if expected.is_a? Integer
                  expected.to_s(8)
                elsif expected.is_a? String
                  expected.gsub(/^0*/, '')
                else
                  expected
                end

    values_match? @expected, @actual
  end

  failure_message do |actual|
    format("expected that path \"%s\" has permissions \"%s\", but has \"%s\".", @old_actual, @expected, @actual)
  end

  failure_message_when_negated do |actual|
    format("expected that path \"%s\" does not have permissions \"%s\", but has \"%s\".", @old_actual, @expected, @actual)
  end
end

if RSpec::Expectations::Version::STRING >= '3.0'
  RSpec::Matchers.alias_matcher :a_path_having_permissions, :have_permissions
end

Version data entries

20 entries across 20 versions & 3 rubygems

Version Path
aruba-0.14.14 lib/aruba/matchers/path/have_permissions.rb
aruba-0.14.13 lib/aruba/matchers/path/have_permissions.rb
honeybadger-4.5.3 vendor/bundle/ruby/2.6.0/gems/aruba-0.14.12/lib/aruba/matchers/path/have_permissions.rb
aruba-0.14.12 lib/aruba/matchers/path/have_permissions.rb
aruba-0.14.11 lib/aruba/matchers/path/have_permissions.rb
aruba-0.14.10 lib/aruba/matchers/path/have_permissions.rb
aruba-0.14.9 lib/aruba/matchers/path/have_permissions.rb
aruba-0.14.8 lib/aruba/matchers/path/have_permissions.rb
aruba-0.14.7 lib/aruba/matchers/path/have_permissions.rb
aruba-0.14.6 lib/aruba/matchers/path/have_permissions.rb
aruba-0.14.5 lib/aruba/matchers/path/have_permissions.rb
aruba-0.14.4 lib/aruba/matchers/path/have_permissions.rb
aruba-0.14.3 lib/aruba/matchers/path/have_permissions.rb
aruba-1.0.0.pre.alpha.2 lib/aruba/matchers/path/have_permissions.rb
aruba-1.0.0.pre.alpha.1 lib/aruba/matchers/path/have_permissions.rb
aruba-win-fix-0.14.2 lib/aruba/matchers/path/have_permissions.rb
aruba-0.14.2 lib/aruba/matchers/path/have_permissions.rb
aruba-0.14.1 lib/aruba/matchers/path/have_permissions.rb
aruba-0.14.0 lib/aruba/matchers/path/have_permissions.rb
aruba-0.13.0 lib/aruba/matchers/path/have_permissions.rb