This file is indexed.

/usr/lib/ruby/vendor_ruby/zentest_mapping.rb is in ruby-zentest 4.11.0-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 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
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
##
# ZenTestMapping - mapping method names from impl to test.
#
# Method names are mapped bidirectionally in the following way:
#
#   method      test_method
#   method?     test_method_eh          (too much exposure to Canadians :)
#   method!     test_method_bang
#   method=     test_method_equals
#   []          test_index
#   *           test_times
#   ==          test_equals2
#   ===         test_equals3
#
# Further, any of the test methods should be able to have arbitrary
# extensions put on the name to distinguish edge cases:
#
#   method      test_method
#   method      test_method_simple
#   method      test_method_no_network
#
# To allow for unmapped test methods (ie, non-unit tests), name them:
#
#   test_integration_.*

module ZenTestMapping

  @@orig_method_map = {
    '!'   => 'bang',
    '%'   => 'percent',
    '&'   => 'and',
    '*'   => 'times',
    '**'  => 'times2',
    '+'   => 'plus',
    '-'   => 'minus',
    '/'   => 'div',
    '<'   => 'lt',
    '<='  => 'lte',
    '<=>' => 'spaceship',
    "<\<" => 'lt2',
    '=='  => 'equals2',
    '===' => 'equals3',
    '=~'  => 'equalstilde',
    '>'   => 'gt',
    '>='  => 'ge',
    '>>'  => 'gt2',
    '+@'  => 'unary_plus',
    '-@'  => 'unary_minus',
    '[]'  => 'index',
    '[]=' => 'index_equals',
    '^'   => 'carat',
    '|'   => 'or',
    '~'   => 'tilde',
  }

  @@method_map = @@orig_method_map.merge(@@orig_method_map.invert)

  @@mapped_re = @@orig_method_map.values.sort_by { |k| k.length }.map {|s|
    Regexp.escape(s)
  }.reverse.join("|")

  def munge name
    name = name.to_s.dup

    is_cls_method = name.sub!(/^self\./, '')

    name = @@method_map[name] if @@method_map.has_key? name
    name = name.sub(/=$/, '_equals')
    name = name.sub(/\?$/, '_eh')
    name = name.sub(/\!$/, '_bang')

    name = yield name if block_given?

    name = "class_" + name if is_cls_method

    name
  end

  # Generates a test method name from a normal method,
  # taking into account names composed of metacharacters
  # (used for arithmetic, etc
  def normal_to_test name
    "test_#{munge name}"
  end

  def unmunge name
    name = name.to_s.dup

    is_cls_method = name.sub!(/^class_/, '')

    name = name.sub(/_equals(_.*)?$/, '=') unless name =~ /index/
    name = name.sub(/_bang(_.*)?$/, '!')
    name = name.sub(/_eh(_.*)?$/, '?')
    name = name.sub(/^(#{@@mapped_re})(_.*)?$/) {$1}
    name = yield name if block_given?
    name = @@method_map[name] if @@method_map.has_key? name
    name = 'self.' + name if is_cls_method

    name
  end

  # Converts a method name beginning with test to its
  # corresponding normal method name, taking into account
  # symbolic names which may have been anglicised by
  # #normal_to_test().
  def test_to_normal(name, klassname=nil)
    unmunge(name.to_s.sub(/^test_/, '')) do |n|
      if defined? @inherited_methods then
        known_methods = (@inherited_methods[klassname] || {}).keys.sort.reverse
        known_methods_re = known_methods.map {|s| Regexp.escape(s) }.join("|")
        n = n.sub(/^(#{known_methods_re})(_.*)?$/) { $1 } unless
          known_methods_re.empty?
        n
      end
    end
  end
end