File: cover.rb

package info (click to toggle)
ruby-rugged 1.9.0%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,752 kB
  • sloc: ansic: 8,722; ruby: 7,473; sh: 99; makefile: 5
file content (133 lines) | stat: -rw-r--r-- 3,137 bytes parent folder | download | duplicates (3)
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
require 'open-uri'
require 'json'
require 'set'

CWD = File.expand_path(File.dirname(__FILE__))

IGNORED_METHODS = %w(
  git_blob_free
  git_blob_lookup
  git_blob_lookup_prefix
  git_blob_id
  git_blob_owner
  git_commit_create_v
  git_commit_free
  git_commit_id
  git_commit_lookup_prefix
  git_commit_parent_oid
  git_commit_time_offset
  git_commit_tree_oid
  git_config_file__ondisk
  git_config_find_global
  git_config_find_system
  git_diff_list_free
  git_diff_patch_free
  git_index_entry_stage
  git_indexer_stream_free
  git_note_free
  git_object__size
  git_odb_add_alternate
  git_odb_add_backend
  git_odb_backend_loose
  git_odb_backend_pack
  git_odb_new
  git_odb_open_rstream
  git_odb_read_header
  git_odb_read_prefix
  git_odb_write
  git_oid_allocfmt
  git_oid_cpy
  git_oid_ncmp
  git_oid_pathfmt
  git_oid_streq
  git_oid_tostr
  git_packbuilder_free
  git_reference_owner
  git_reference_listall
  git_reflog_delete
  git_reflog_rename
  git_repository_odb
  git_repository_set_odb
  git_signature_dup
  git_signature_now
  git_tag_free
  git_tag_id
  git_tag_lookup
  git_tag_lookup_prefix
  git_tag_target_oid
  git_tree_free
  git_tree_id
  git_tree_lookup
  git_tree_lookup_prefix
  git_strarray_copy
  git_trace_set
  imaxdiv
)

method_list = nil

# The list of methods in libgit2 that we want coverage for
open('http://libgit2.github.com/libgit2/HEAD.json') do |f|
  json_data = JSON.parse(f.read())
  method_list = json_data['groups']
end

# Don't look for the methods in IGNORED_METHODS.
look_for = []
method_list.each do |_, methods|
  methods.reject! { |m| IGNORED_METHODS.include? m }
  look_for += methods
end

# Look at the .c and .h files in the rugged directory
source_files = Dir.glob("#{CWD}/../../ext/rugged/*.{c,h}")

# If any of the files contain the string representation
# of a libgit2 method, add it to our set of found methods
found = Set.new
source_files.each do |file|
  File.open(file) do |f|
    contents = f.read()
    look_for.each do |method|
      if contents.index(method) != nil
        found.add(method)
      end
    end
  end
end

# Keep a count of missing and total
total_missing = 0
total_methods = 0

# Print the results for each group
method_list.each do |group, group_methods|

  # Skip the group if all methods are ignored
  next if group_methods.size == 0

  # What are for we missing for this group?
  group_miss = group_methods.reject {|m| found.include? m}
  print "\n#{group} [#{group_methods.size - group_miss.size}/#{group_methods.size}]: "

  # Add the numbers to our grand total running count
  total_missing += group_miss.size
  total_methods += group_methods.size

  # Unit test style printout. A dot is a match, an 'M' is a miss.
  group_methods.each do |m|
    print found.include?(m) ? "." : "M"
  end

  print "\n"

  # Print out what is missing
  if not group_miss.empty?
    puts "  > missing: " + "#{group_miss.join(", ")}"
  end
end

# The grand tally
percent = (100.0 * (total_methods - total_missing) / total_methods).round
puts "\n" + "=" * 60
puts "\nTOTAL: [#{total_methods - total_missing}/#{total_methods}] wrapped. (#{percent}% coverage)"