This file is indexed.

/usr/bin/pep8_tap is in jenkins-debian-glue 0.18.4.

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

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
#!/usr/bin/env ruby
# encoding: utf-8

# ruby1.8 doesn't provide Encoding, so make sure it's defined
if defined? Encoding
  output_encoding = Encoding.default_external
  Encoding.default_external = 'BINARY'
end

require 'yaml'

if ARGV[0].nil?
  $stderr.puts "Usage: #{File.basename $0} <file>"
  exit 1
end

if not system "which pep8 >/dev/null 2>&1"
  $stderr.puts "Error: program pep8 does not exist (install pep8 package)."
  exit 1
end

file = ARGV[0]

if not File.exists? file
  $stderr.puts "Error: file #{file} could not be read."
  exit 1
end

# Make sure we're looking at Python code.
mimetype = `file -b -i #{file}`.gsub(/\n/,"")
if not /.*x-python/i.match(mimetype)
  $stderr.puts "File #{file} doesn't look like Python [#{mimetype}]. Ignoring."
  exit 0
end


ISSUE_PREFIX = 'ISSUE:'

output = %x{pep8 -r --show-source --format 'ISSUE:%(path)s:%(row)d:%(col)d: %(code)s %(text)s' #{file} 2>&1}

def is_issue_line(l)
  l.start_with?(ISSUE_PREFIX)
end

class Issue
  def initialize(firstline, file)
    @firstline = firstline.sub(ISSUE_PREFIX, '')
    @file = file
    @source = []
    @code = @firstline.split(': ', 3)[1]
    @severity = case @code[0]
      when 'E'
        'error'
      when 'W'
        'warning'
      end
  end

  def add_source(line)
    @source << line
  end

  def format(counter)
    body = YAML.dump({
      'message' => @firstline,
      'severity' => @severity,
      'code' => @code,
      'source' => @source.join("\n"),
      'file' => @file
    }) + '...'  # end of yaml
    return ("not ok #{counter} #{@firstline}\n  " + body.gsub("\n","\n  "))
  end
end

issues = []

output.each_line do |l|
  if defined? Encoding
    l = l.rstrip().encode(output_encoding, {:invalid => :replace, :undef => :replace})
  else
    l = l.rstrip()
  end
  if is_issue_line(l)
    issues << Issue.new(l, file)
  else
    issues.last.add_source(l) unless issues.last.nil?
  end
end
exit 0 if issues.length == 0

# output result in TAP format
puts "TAP version 13"
puts "1..#{issues.length}"
issues.each_index do |idx|
  puts issues[idx].format(idx+1)
end