coveralls-ruby 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
 - data/.github/stale.yml +60 -0
 - data/.gitignore +20 -0
 - data/.rspec +2 -0
 - data/.ruby-version +1 -0
 - data/.travis.yml +22 -0
 - data/CHANGELOG.md +21 -0
 - data/Gemfile +41 -0
 - data/LICENSE +22 -0
 - data/README.md +6 -0
 - data/Rakefile +14 -0
 - data/bin/coveralls +9 -0
 - data/coveralls-ruby.gemspec +32 -0
 - data/lib/coveralls.rb +101 -0
 - data/lib/coveralls/api.rb +128 -0
 - data/lib/coveralls/command.rb +69 -0
 - data/lib/coveralls/configuration.rb +234 -0
 - data/lib/coveralls/output.rb +114 -0
 - data/lib/coveralls/rake/task.rb +19 -0
 - data/lib/coveralls/simplecov.rb +101 -0
 - data/lib/coveralls/version.rb +3 -0
 - data/spec/coveralls/configuration_spec.rb +371 -0
 - data/spec/coveralls/coveralls_spec.rb +106 -0
 - data/spec/coveralls/fixtures/app/controllers/sample.rb +12 -0
 - data/spec/coveralls/fixtures/app/models/airplane.rb +10 -0
 - data/spec/coveralls/fixtures/app/models/dog.rb +10 -0
 - data/spec/coveralls/fixtures/app/models/house.rb +10 -0
 - data/spec/coveralls/fixtures/app/models/robot.rb +10 -0
 - data/spec/coveralls/fixtures/app/models/user.rb +10 -0
 - data/spec/coveralls/fixtures/app/vendor/vendored_gem.rb +1 -0
 - data/spec/coveralls/fixtures/sample.rb +12 -0
 - data/spec/coveralls/output_spec.rb +92 -0
 - data/spec/coveralls/simplecov_spec.rb +82 -0
 - data/spec/spec_helper.rb +82 -0
 - metadata +190 -0
 
| 
         @@ -0,0 +1,69 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require "thor"
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module Coveralls
         
     | 
| 
      
 4 
     | 
    
         
            +
              class CommandLine < Thor
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
                desc "push", "Runs your test suite and pushes the coverage results to Coveralls."
         
     | 
| 
      
 7 
     | 
    
         
            +
                def push
         
     | 
| 
      
 8 
     | 
    
         
            +
                  return unless ensure_can_run_locally!
         
     | 
| 
      
 9 
     | 
    
         
            +
                  ENV["COVERALLS_RUN_LOCALLY"] = "true"
         
     | 
| 
      
 10 
     | 
    
         
            +
                  cmds = "bundle exec rake"
         
     | 
| 
      
 11 
     | 
    
         
            +
                  if File.exist?('.travis.yml')
         
     | 
| 
      
 12 
     | 
    
         
            +
                    cmds = YAML.load_file('.travis.yml')["script"] || cmds rescue cmds
         
     | 
| 
      
 13 
     | 
    
         
            +
                  end
         
     | 
| 
      
 14 
     | 
    
         
            +
                  cmds.each { |cmd| system cmd }
         
     | 
| 
      
 15 
     | 
    
         
            +
                  ENV["COVERALLS_RUN_LOCALLY"] = nil
         
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                desc "report", "Runs your test suite locally and displays coverage statistics."
         
     | 
| 
      
 19 
     | 
    
         
            +
                def report
         
     | 
| 
      
 20 
     | 
    
         
            +
                  ENV["COVERALLS_NOISY"] = "true"
         
     | 
| 
      
 21 
     | 
    
         
            +
                  exec "bundle exec rake"
         
     | 
| 
      
 22 
     | 
    
         
            +
                  ENV["COVERALLS_NOISY"] = nil
         
     | 
| 
      
 23 
     | 
    
         
            +
                end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                desc "open", "View this repository on Coveralls."
         
     | 
| 
      
 26 
     | 
    
         
            +
                def open
         
     | 
| 
      
 27 
     | 
    
         
            +
                  open_token_based_url "https://coveralls.io/repos/%@"
         
     | 
| 
      
 28 
     | 
    
         
            +
                end
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                desc "service", "View this repository on your CI service's website."
         
     | 
| 
      
 31 
     | 
    
         
            +
                def service
         
     | 
| 
      
 32 
     | 
    
         
            +
                  open_token_based_url "https://coveralls.io/repos/%@/service"
         
     | 
| 
      
 33 
     | 
    
         
            +
                end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                desc "last", "View the last build for this repository on Coveralls."
         
     | 
| 
      
 36 
     | 
    
         
            +
                def last
         
     | 
| 
      
 37 
     | 
    
         
            +
                  open_token_based_url "https://coveralls.io/repos/%@/last_build"
         
     | 
| 
      
 38 
     | 
    
         
            +
                end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                desc "version", "See version"
         
     | 
| 
      
 41 
     | 
    
         
            +
                def version
         
     | 
| 
      
 42 
     | 
    
         
            +
                  Coveralls::Output.puts Coveralls::VERSION
         
     | 
| 
      
 43 
     | 
    
         
            +
                end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
                private
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                def open_token_based_url url
         
     | 
| 
      
 48 
     | 
    
         
            +
                  config = Coveralls::Configuration.configuration
         
     | 
| 
      
 49 
     | 
    
         
            +
                  if config[:repo_token]
         
     | 
| 
      
 50 
     | 
    
         
            +
                    url = url.gsub("%@", config[:repo_token])
         
     | 
| 
      
 51 
     | 
    
         
            +
                    `open #{url}`
         
     | 
| 
      
 52 
     | 
    
         
            +
                  else
         
     | 
| 
      
 53 
     | 
    
         
            +
                    Coveralls::Output.puts "No repo_token configured."
         
     | 
| 
      
 54 
     | 
    
         
            +
                  end
         
     | 
| 
      
 55 
     | 
    
         
            +
                end
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
                def ensure_can_run_locally!
         
     | 
| 
      
 58 
     | 
    
         
            +
                  config = Coveralls::Configuration.configuration
         
     | 
| 
      
 59 
     | 
    
         
            +
                  if config[:repo_token].nil?
         
     | 
| 
      
 60 
     | 
    
         
            +
                    Coveralls::Output.puts "Coveralls cannot run locally because no repo_secret_token is set in .coveralls.yml", :color => "red"
         
     | 
| 
      
 61 
     | 
    
         
            +
                    Coveralls::Output.puts "Please try again when you get your act together.", :color => "red"
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
                    return false
         
     | 
| 
      
 64 
     | 
    
         
            +
                  end
         
     | 
| 
      
 65 
     | 
    
         
            +
                  true
         
     | 
| 
      
 66 
     | 
    
         
            +
                end
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
              end
         
     | 
| 
      
 69 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,234 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'yaml'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'securerandom'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            module Coveralls
         
     | 
| 
      
 5 
     | 
    
         
            +
              module Configuration
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                def self.configuration
         
     | 
| 
      
 8 
     | 
    
         
            +
                  config = {
         
     | 
| 
      
 9 
     | 
    
         
            +
                    :environment => self.relevant_env,
         
     | 
| 
      
 10 
     | 
    
         
            +
                    :git => git
         
     | 
| 
      
 11 
     | 
    
         
            +
                  }
         
     | 
| 
      
 12 
     | 
    
         
            +
                  yml = self.yaml_config
         
     | 
| 
      
 13 
     | 
    
         
            +
                  if yml
         
     | 
| 
      
 14 
     | 
    
         
            +
                    config[:configuration] = yml
         
     | 
| 
      
 15 
     | 
    
         
            +
                    config[:repo_token] = yml['repo_token'] || yml['repo_secret_token']
         
     | 
| 
      
 16 
     | 
    
         
            +
                  end
         
     | 
| 
      
 17 
     | 
    
         
            +
                  if ENV['COVERALLS_REPO_TOKEN']
         
     | 
| 
      
 18 
     | 
    
         
            +
                    config[:repo_token] = ENV['COVERALLS_REPO_TOKEN']
         
     | 
| 
      
 19 
     | 
    
         
            +
                  end
         
     | 
| 
      
 20 
     | 
    
         
            +
                  if ENV['COVERALLS_PARALLEL'] && ENV['COVERALLS_PARALLEL'] != "false"
         
     | 
| 
      
 21 
     | 
    
         
            +
                    config[:parallel] = true
         
     | 
| 
      
 22 
     | 
    
         
            +
                  end
         
     | 
| 
      
 23 
     | 
    
         
            +
                  if ENV['COVERALLS_FLAG_NAME']
         
     | 
| 
      
 24 
     | 
    
         
            +
                    config[:flag_name] = ENV['COVERALLS_FLAG_NAME']
         
     | 
| 
      
 25 
     | 
    
         
            +
                  end
         
     | 
| 
      
 26 
     | 
    
         
            +
                  if ENV['TRAVIS']
         
     | 
| 
      
 27 
     | 
    
         
            +
                    set_service_params_for_travis(config, yml ? yml['service_name'] : nil)
         
     | 
| 
      
 28 
     | 
    
         
            +
                  elsif ENV['CIRCLECI']
         
     | 
| 
      
 29 
     | 
    
         
            +
                    set_service_params_for_circleci(config)
         
     | 
| 
      
 30 
     | 
    
         
            +
                  elsif ENV['SEMAPHORE']
         
     | 
| 
      
 31 
     | 
    
         
            +
                    set_service_params_for_semaphore(config)
         
     | 
| 
      
 32 
     | 
    
         
            +
                  elsif ENV['JENKINS_URL'] || ENV['JENKINS_HOME']
         
     | 
| 
      
 33 
     | 
    
         
            +
                    set_service_params_for_jenkins(config)
         
     | 
| 
      
 34 
     | 
    
         
            +
                  elsif ENV['APPVEYOR']
         
     | 
| 
      
 35 
     | 
    
         
            +
                    set_service_params_for_appveyor(config)
         
     | 
| 
      
 36 
     | 
    
         
            +
                  elsif ENV['TDDIUM']
         
     | 
| 
      
 37 
     | 
    
         
            +
                    set_service_params_for_tddium(config)
         
     | 
| 
      
 38 
     | 
    
         
            +
                  elsif ENV['GITLAB_CI']
         
     | 
| 
      
 39 
     | 
    
         
            +
                    set_service_params_for_gitlab(config)
         
     | 
| 
      
 40 
     | 
    
         
            +
                  elsif ENV['COVERALLS_RUN_LOCALLY'] || Coveralls.testing
         
     | 
| 
      
 41 
     | 
    
         
            +
                    set_service_params_for_coveralls_local(config)
         
     | 
| 
      
 42 
     | 
    
         
            +
                  end
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                  # standardized env vars
         
     | 
| 
      
 45 
     | 
    
         
            +
                  set_standard_service_params_for_generic_ci(config)
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                  if service_name = ENV['COVERALLS_SERVICE_NAME']
         
     | 
| 
      
 48 
     | 
    
         
            +
                    config[:service_name] = service_name
         
     | 
| 
      
 49 
     | 
    
         
            +
                  end
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
                  config
         
     | 
| 
      
 52 
     | 
    
         
            +
                end
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
                def self.set_service_params_for_travis(config, service_name)
         
     | 
| 
      
 55 
     | 
    
         
            +
                  config[:service_job_id] = ENV['TRAVIS_JOB_ID']
         
     | 
| 
      
 56 
     | 
    
         
            +
                  config[:service_pull_request] = ENV['TRAVIS_PULL_REQUEST'] unless ENV['TRAVIS_PULL_REQUEST'] == 'false'
         
     | 
| 
      
 57 
     | 
    
         
            +
                  config[:service_name]   = service_name || 'travis-ci'
         
     | 
| 
      
 58 
     | 
    
         
            +
                  config[:service_branch] = ENV['TRAVIS_BRANCH']
         
     | 
| 
      
 59 
     | 
    
         
            +
                end
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
                def self.set_service_params_for_circleci(config)
         
     | 
| 
      
 62 
     | 
    
         
            +
                  config[:service_name]         = 'circleci'
         
     | 
| 
      
 63 
     | 
    
         
            +
                  config[:service_number]       = ENV['CIRCLE_BUILD_NUM']
         
     | 
| 
      
 64 
     | 
    
         
            +
                  config[:service_pull_request] = (ENV['CI_PULL_REQUEST'] || "")[/(\d+)$/,1]
         
     | 
| 
      
 65 
     | 
    
         
            +
                  config[:parallel]             = ENV['CIRCLE_NODE_TOTAL'].to_i > 1
         
     | 
| 
      
 66 
     | 
    
         
            +
                  config[:service_job_number]   = ENV['CIRCLE_NODE_INDEX']
         
     | 
| 
      
 67 
     | 
    
         
            +
                end
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
                def self.set_service_params_for_semaphore(config)
         
     | 
| 
      
 70 
     | 
    
         
            +
                  config[:service_name]         = 'semaphore'
         
     | 
| 
      
 71 
     | 
    
         
            +
                  config[:service_number]       = ENV['SEMAPHORE_BUILD_NUMBER']
         
     | 
| 
      
 72 
     | 
    
         
            +
                  config[:service_pull_request] = ENV['PULL_REQUEST_NUMBER']
         
     | 
| 
      
 73 
     | 
    
         
            +
                end
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
                def self.set_service_params_for_jenkins(config)
         
     | 
| 
      
 76 
     | 
    
         
            +
                  config[:service_name]   = 'jenkins'
         
     | 
| 
      
 77 
     | 
    
         
            +
                  config[:service_number] = ENV['BUILD_NUMBER']
         
     | 
| 
      
 78 
     | 
    
         
            +
                  config[:service_branch] = ENV['BRANCH_NAME']
         
     | 
| 
      
 79 
     | 
    
         
            +
                  config[:service_pull_request] = ENV['ghprbPullId']
         
     | 
| 
      
 80 
     | 
    
         
            +
                end
         
     | 
| 
      
 81 
     | 
    
         
            +
             
     | 
| 
      
 82 
     | 
    
         
            +
                def self.set_service_params_for_appveyor(config)
         
     | 
| 
      
 83 
     | 
    
         
            +
                  config[:service_name]   = 'appveyor'
         
     | 
| 
      
 84 
     | 
    
         
            +
                  config[:service_number] = ENV['APPVEYOR_BUILD_VERSION']
         
     | 
| 
      
 85 
     | 
    
         
            +
                  config[:service_branch] = ENV['APPVEYOR_REPO_BRANCH']
         
     | 
| 
      
 86 
     | 
    
         
            +
                  config[:commit_sha] = ENV['APPVEYOR_REPO_COMMIT']
         
     | 
| 
      
 87 
     | 
    
         
            +
                  repo_name = ENV['APPVEYOR_REPO_NAME']
         
     | 
| 
      
 88 
     | 
    
         
            +
                  config[:service_build_url]  = 'https://ci.appveyor.com/project/%s/build/%s' % [repo_name, config[:service_number]]
         
     | 
| 
      
 89 
     | 
    
         
            +
                end
         
     | 
| 
      
 90 
     | 
    
         
            +
             
     | 
| 
      
 91 
     | 
    
         
            +
                def self.set_service_params_for_tddium(config)
         
     | 
| 
      
 92 
     | 
    
         
            +
                  config[:service_name]         = 'tddium'
         
     | 
| 
      
 93 
     | 
    
         
            +
                  config[:service_number]       = ENV['TDDIUM_SESSION_ID']
         
     | 
| 
      
 94 
     | 
    
         
            +
                  config[:service_job_number]   = ENV['TDDIUM_TID']
         
     | 
| 
      
 95 
     | 
    
         
            +
                  config[:service_pull_request] = ENV['TDDIUM_PR_ID']
         
     | 
| 
      
 96 
     | 
    
         
            +
                  config[:service_branch]       = ENV['TDDIUM_CURRENT_BRANCH']
         
     | 
| 
      
 97 
     | 
    
         
            +
                  config[:service_build_url]    = "https://ci.solanolabs.com/reports/#{ENV['TDDIUM_SESSION_ID']}"
         
     | 
| 
      
 98 
     | 
    
         
            +
                end
         
     | 
| 
      
 99 
     | 
    
         
            +
             
     | 
| 
      
 100 
     | 
    
         
            +
                def self.set_service_params_for_gitlab(config)
         
     | 
| 
      
 101 
     | 
    
         
            +
                  config[:service_name]       = 'gitlab-ci'
         
     | 
| 
      
 102 
     | 
    
         
            +
                  config[:service_number]     = ENV['CI_PIPELINE_ID']
         
     | 
| 
      
 103 
     | 
    
         
            +
                  config[:service_job_number] = ENV['CI_BUILD_NAME']
         
     | 
| 
      
 104 
     | 
    
         
            +
                  config[:service_job_id]     = ENV['CI_BUILD_ID']
         
     | 
| 
      
 105 
     | 
    
         
            +
                  config[:service_branch]     = ENV['CI_BUILD_REF_NAME']
         
     | 
| 
      
 106 
     | 
    
         
            +
                  config[:commit_sha]         = ENV['CI_BUILD_REF']
         
     | 
| 
      
 107 
     | 
    
         
            +
                end
         
     | 
| 
      
 108 
     | 
    
         
            +
             
     | 
| 
      
 109 
     | 
    
         
            +
                def self.set_service_params_for_coveralls_local(config)
         
     | 
| 
      
 110 
     | 
    
         
            +
                  config[:service_job_id]     = nil
         
     | 
| 
      
 111 
     | 
    
         
            +
                  config[:service_name]       = 'coveralls-ruby'
         
     | 
| 
      
 112 
     | 
    
         
            +
                  config[:service_event_type] = 'manual'
         
     | 
| 
      
 113 
     | 
    
         
            +
                end
         
     | 
| 
      
 114 
     | 
    
         
            +
             
     | 
| 
      
 115 
     | 
    
         
            +
                def self.set_standard_service_params_for_generic_ci(config)
         
     | 
| 
      
 116 
     | 
    
         
            +
                  config[:service_name]         ||= ENV['CI_NAME']
         
     | 
| 
      
 117 
     | 
    
         
            +
                  config[:service_number]       ||= ENV['CI_BUILD_NUMBER']
         
     | 
| 
      
 118 
     | 
    
         
            +
                  config[:service_job_id]       ||= ENV['CI_JOB_ID']
         
     | 
| 
      
 119 
     | 
    
         
            +
                  config[:service_build_url]    ||= ENV['CI_BUILD_URL']
         
     | 
| 
      
 120 
     | 
    
         
            +
                  config[:service_branch]       ||= ENV['CI_BRANCH']
         
     | 
| 
      
 121 
     | 
    
         
            +
                  config[:service_pull_request] ||= (ENV['CI_PULL_REQUEST'] || "")[/(\d+)$/,1]
         
     | 
| 
      
 122 
     | 
    
         
            +
                end
         
     | 
| 
      
 123 
     | 
    
         
            +
             
     | 
| 
      
 124 
     | 
    
         
            +
                def self.yaml_config
         
     | 
| 
      
 125 
     | 
    
         
            +
                  if self.configuration_path && File.exist?(self.configuration_path)
         
     | 
| 
      
 126 
     | 
    
         
            +
                    YAML::load_file(self.configuration_path)
         
     | 
| 
      
 127 
     | 
    
         
            +
                  end
         
     | 
| 
      
 128 
     | 
    
         
            +
                end
         
     | 
| 
      
 129 
     | 
    
         
            +
             
     | 
| 
      
 130 
     | 
    
         
            +
                def self.configuration_path
         
     | 
| 
      
 131 
     | 
    
         
            +
                  File.expand_path(File.join(self.root, ".coveralls.yml")) if self.root
         
     | 
| 
      
 132 
     | 
    
         
            +
                end
         
     | 
| 
      
 133 
     | 
    
         
            +
             
     | 
| 
      
 134 
     | 
    
         
            +
                def self.root
         
     | 
| 
      
 135 
     | 
    
         
            +
                  pwd
         
     | 
| 
      
 136 
     | 
    
         
            +
                end
         
     | 
| 
      
 137 
     | 
    
         
            +
             
     | 
| 
      
 138 
     | 
    
         
            +
                def self.pwd
         
     | 
| 
      
 139 
     | 
    
         
            +
                  Dir.pwd
         
     | 
| 
      
 140 
     | 
    
         
            +
                end
         
     | 
| 
      
 141 
     | 
    
         
            +
             
     | 
| 
      
 142 
     | 
    
         
            +
                def self.simplecov_root
         
     | 
| 
      
 143 
     | 
    
         
            +
                  if defined?(::SimpleCov)
         
     | 
| 
      
 144 
     | 
    
         
            +
                    ::SimpleCov.root
         
     | 
| 
      
 145 
     | 
    
         
            +
                  end
         
     | 
| 
      
 146 
     | 
    
         
            +
                end
         
     | 
| 
      
 147 
     | 
    
         
            +
             
     | 
| 
      
 148 
     | 
    
         
            +
                def self.rails_root
         
     | 
| 
      
 149 
     | 
    
         
            +
                  Rails.root.to_s
         
     | 
| 
      
 150 
     | 
    
         
            +
                rescue
         
     | 
| 
      
 151 
     | 
    
         
            +
                  nil
         
     | 
| 
      
 152 
     | 
    
         
            +
                end
         
     | 
| 
      
 153 
     | 
    
         
            +
             
     | 
| 
      
 154 
     | 
    
         
            +
                def self.git
         
     | 
| 
      
 155 
     | 
    
         
            +
                  hash = {}
         
     | 
| 
      
 156 
     | 
    
         
            +
             
     | 
| 
      
 157 
     | 
    
         
            +
                  Dir.chdir(root) do
         
     | 
| 
      
 158 
     | 
    
         
            +
             
     | 
| 
      
 159 
     | 
    
         
            +
                    hash[:head] = {
         
     | 
| 
      
 160 
     | 
    
         
            +
                      :id => ENV.fetch("GIT_ID", `git log -1 --pretty=format:'%H'`),
         
     | 
| 
      
 161 
     | 
    
         
            +
                      :author_name => ENV.fetch("GIT_AUTHOR_NAME", `git log -1 --pretty=format:'%aN'`),
         
     | 
| 
      
 162 
     | 
    
         
            +
                      :author_email => ENV.fetch("GIT_AUTHOR_EMAIL", `git log -1 --pretty=format:'%ae'`),
         
     | 
| 
      
 163 
     | 
    
         
            +
                      :committer_name => ENV.fetch("GIT_COMMITTER_NAME", `git log -1 --pretty=format:'%cN'`),
         
     | 
| 
      
 164 
     | 
    
         
            +
                      :committer_email => ENV.fetch("GIT_COMMITTER_EMAIL", `git log -1 --pretty=format:'%ce'`),
         
     | 
| 
      
 165 
     | 
    
         
            +
                      :message => ENV.fetch("GIT_MESSAGE", `git log -1 --pretty=format:'%s'`)
         
     | 
| 
      
 166 
     | 
    
         
            +
                    }
         
     | 
| 
      
 167 
     | 
    
         
            +
             
     | 
| 
      
 168 
     | 
    
         
            +
                    # Branch
         
     | 
| 
      
 169 
     | 
    
         
            +
                    hash[:branch] = ENV.fetch("GIT_BRANCH", `git rev-parse --abbrev-ref HEAD`)
         
     | 
| 
      
 170 
     | 
    
         
            +
             
     | 
| 
      
 171 
     | 
    
         
            +
                    # Remotes
         
     | 
| 
      
 172 
     | 
    
         
            +
                    remotes = nil
         
     | 
| 
      
 173 
     | 
    
         
            +
                    begin
         
     | 
| 
      
 174 
     | 
    
         
            +
                      remotes = `git remote -v`.split(/\n/).map do |remote|
         
     | 
| 
      
 175 
     | 
    
         
            +
                        splits = remote.split(" ").compact
         
     | 
| 
      
 176 
     | 
    
         
            +
                        {:name => splits[0], :url => splits[1]}
         
     | 
| 
      
 177 
     | 
    
         
            +
                      end.uniq
         
     | 
| 
      
 178 
     | 
    
         
            +
                    rescue
         
     | 
| 
      
 179 
     | 
    
         
            +
                    end
         
     | 
| 
      
 180 
     | 
    
         
            +
                    hash[:remotes] = remotes
         
     | 
| 
      
 181 
     | 
    
         
            +
             
     | 
| 
      
 182 
     | 
    
         
            +
                  end
         
     | 
| 
      
 183 
     | 
    
         
            +
             
     | 
| 
      
 184 
     | 
    
         
            +
                  hash
         
     | 
| 
      
 185 
     | 
    
         
            +
             
     | 
| 
      
 186 
     | 
    
         
            +
                rescue Exception => e
         
     | 
| 
      
 187 
     | 
    
         
            +
                  Coveralls::Output.puts "Coveralls git error:", :color => "red"
         
     | 
| 
      
 188 
     | 
    
         
            +
                  Coveralls::Output.puts e.to_s, :color => "red"
         
     | 
| 
      
 189 
     | 
    
         
            +
                  nil
         
     | 
| 
      
 190 
     | 
    
         
            +
                end
         
     | 
| 
      
 191 
     | 
    
         
            +
             
     | 
| 
      
 192 
     | 
    
         
            +
                def self.relevant_env
         
     | 
| 
      
 193 
     | 
    
         
            +
                  hash = {
         
     | 
| 
      
 194 
     | 
    
         
            +
                    :pwd => self.pwd,
         
     | 
| 
      
 195 
     | 
    
         
            +
                    :rails_root => self.rails_root,
         
     | 
| 
      
 196 
     | 
    
         
            +
                    :simplecov_root => simplecov_root,
         
     | 
| 
      
 197 
     | 
    
         
            +
                    :gem_version => VERSION
         
     | 
| 
      
 198 
     | 
    
         
            +
                  }
         
     | 
| 
      
 199 
     | 
    
         
            +
             
     | 
| 
      
 200 
     | 
    
         
            +
                  hash.merge! begin
         
     | 
| 
      
 201 
     | 
    
         
            +
                    if ENV['TRAVIS']
         
     | 
| 
      
 202 
     | 
    
         
            +
                      {
         
     | 
| 
      
 203 
     | 
    
         
            +
                        :travis_job_id => ENV['TRAVIS_JOB_ID'],
         
     | 
| 
      
 204 
     | 
    
         
            +
                        :travis_pull_request => ENV['TRAVIS_PULL_REQUEST'],
         
     | 
| 
      
 205 
     | 
    
         
            +
                        :branch => ENV['TRAVIS_BRANCH']
         
     | 
| 
      
 206 
     | 
    
         
            +
                      }
         
     | 
| 
      
 207 
     | 
    
         
            +
                    elsif ENV['CIRCLECI']
         
     | 
| 
      
 208 
     | 
    
         
            +
                      {
         
     | 
| 
      
 209 
     | 
    
         
            +
                        :circleci_build_num => ENV['CIRCLE_BUILD_NUM'],
         
     | 
| 
      
 210 
     | 
    
         
            +
                        :branch => ENV['CIRCLE_BRANCH'],
         
     | 
| 
      
 211 
     | 
    
         
            +
                        :commit_sha => ENV['CIRCLE_SHA1']
         
     | 
| 
      
 212 
     | 
    
         
            +
                      }
         
     | 
| 
      
 213 
     | 
    
         
            +
                    elsif ENV['JENKINS_URL']
         
     | 
| 
      
 214 
     | 
    
         
            +
                      {
         
     | 
| 
      
 215 
     | 
    
         
            +
                        :jenkins_build_num => ENV['BUILD_NUMBER'],
         
     | 
| 
      
 216 
     | 
    
         
            +
                        :jenkins_build_url => ENV['BUILD_URL'],
         
     | 
| 
      
 217 
     | 
    
         
            +
                        :branch => ENV['GIT_BRANCH'],
         
     | 
| 
      
 218 
     | 
    
         
            +
                        :commit_sha => ENV['GIT_COMMIT']
         
     | 
| 
      
 219 
     | 
    
         
            +
                      }
         
     | 
| 
      
 220 
     | 
    
         
            +
                    elsif ENV['SEMAPHORE']
         
     | 
| 
      
 221 
     | 
    
         
            +
                      {
         
     | 
| 
      
 222 
     | 
    
         
            +
                        :branch => ENV['BRANCH_NAME'],
         
     | 
| 
      
 223 
     | 
    
         
            +
                        :commit_sha => ENV['REVISION']
         
     | 
| 
      
 224 
     | 
    
         
            +
                      }
         
     | 
| 
      
 225 
     | 
    
         
            +
                    else
         
     | 
| 
      
 226 
     | 
    
         
            +
                      {}
         
     | 
| 
      
 227 
     | 
    
         
            +
                    end
         
     | 
| 
      
 228 
     | 
    
         
            +
                  end
         
     | 
| 
      
 229 
     | 
    
         
            +
             
     | 
| 
      
 230 
     | 
    
         
            +
                  hash
         
     | 
| 
      
 231 
     | 
    
         
            +
                end
         
     | 
| 
      
 232 
     | 
    
         
            +
             
     | 
| 
      
 233 
     | 
    
         
            +
              end
         
     | 
| 
      
 234 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,114 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Coveralls
         
     | 
| 
      
 2 
     | 
    
         
            +
              #
         
     | 
| 
      
 3 
     | 
    
         
            +
              # Public: Methods for formatting strings with Term::ANSIColor.
         
     | 
| 
      
 4 
     | 
    
         
            +
              # Does not utilize monkey-patching and should play nicely when
         
     | 
| 
      
 5 
     | 
    
         
            +
              # included with other libraries.
         
     | 
| 
      
 6 
     | 
    
         
            +
              #
         
     | 
| 
      
 7 
     | 
    
         
            +
              # All methods are module methods and should be called on
         
     | 
| 
      
 8 
     | 
    
         
            +
              # the Coveralls::Output module.
         
     | 
| 
      
 9 
     | 
    
         
            +
              #
         
     | 
| 
      
 10 
     | 
    
         
            +
              # Examples
         
     | 
| 
      
 11 
     | 
    
         
            +
              #
         
     | 
| 
      
 12 
     | 
    
         
            +
              #   Coveralls::Output.format("Hello World", :color => "cyan")
         
     | 
| 
      
 13 
     | 
    
         
            +
              #   # => "\e[36mHello World\e[0m"
         
     | 
| 
      
 14 
     | 
    
         
            +
              #
         
     | 
| 
      
 15 
     | 
    
         
            +
              #   Coveralls::Output.print("Hello World")
         
     | 
| 
      
 16 
     | 
    
         
            +
              #   # Hello World => nil
         
     | 
| 
      
 17 
     | 
    
         
            +
              #
         
     | 
| 
      
 18 
     | 
    
         
            +
              #   Coveralls::Output.puts("Hello World", :color => "underline")
         
     | 
| 
      
 19 
     | 
    
         
            +
              #   # Hello World
         
     | 
| 
      
 20 
     | 
    
         
            +
              #   # => nil
         
     | 
| 
      
 21 
     | 
    
         
            +
              #
         
     | 
| 
      
 22 
     | 
    
         
            +
              # To silence output completely:
         
     | 
| 
      
 23 
     | 
    
         
            +
              #
         
     | 
| 
      
 24 
     | 
    
         
            +
              #   Coveralls::Output.silent = true
         
     | 
| 
      
 25 
     | 
    
         
            +
              #
         
     | 
| 
      
 26 
     | 
    
         
            +
              # or set this environment variable:
         
     | 
| 
      
 27 
     | 
    
         
            +
              #
         
     | 
| 
      
 28 
     | 
    
         
            +
              #   COVERALLS_SILENT
         
     | 
| 
      
 29 
     | 
    
         
            +
              #
         
     | 
| 
      
 30 
     | 
    
         
            +
              # To disable color completely:
         
     | 
| 
      
 31 
     | 
    
         
            +
              #
         
     | 
| 
      
 32 
     | 
    
         
            +
              #   Coveralls::Output.no_color = true
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
              module Output
         
     | 
| 
      
 35 
     | 
    
         
            +
                attr_accessor :silent, :no_color
         
     | 
| 
      
 36 
     | 
    
         
            +
                attr_writer :output
         
     | 
| 
      
 37 
     | 
    
         
            +
                extend self
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
                def output
         
     | 
| 
      
 40 
     | 
    
         
            +
                  (defined?(@output) && @output) || $stdout
         
     | 
| 
      
 41 
     | 
    
         
            +
                end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                def no_color?
         
     | 
| 
      
 44 
     | 
    
         
            +
                  (defined?(@no_color)) && @no_color
         
     | 
| 
      
 45 
     | 
    
         
            +
                end
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                # Public: Formats the given string with the specified color
         
     | 
| 
      
 48 
     | 
    
         
            +
                # through Term::ANSIColor
         
     | 
| 
      
 49 
     | 
    
         
            +
                #
         
     | 
| 
      
 50 
     | 
    
         
            +
                # string  - the text to be formatted
         
     | 
| 
      
 51 
     | 
    
         
            +
                # options - The hash of options used for formatting the text:
         
     | 
| 
      
 52 
     | 
    
         
            +
                #           :color - The color to be passed as a method to
         
     | 
| 
      
 53 
     | 
    
         
            +
                #                    Term::ANSIColor
         
     | 
| 
      
 54 
     | 
    
         
            +
                #
         
     | 
| 
      
 55 
     | 
    
         
            +
                # Examples
         
     | 
| 
      
 56 
     | 
    
         
            +
                #
         
     | 
| 
      
 57 
     | 
    
         
            +
                #   Coveralls::Output.format("Hello World!", :color => "cyan")
         
     | 
| 
      
 58 
     | 
    
         
            +
                #   # => "\e[36mHello World\e[0m"
         
     | 
| 
      
 59 
     | 
    
         
            +
                #
         
     | 
| 
      
 60 
     | 
    
         
            +
                # Returns the formatted string.
         
     | 
| 
      
 61 
     | 
    
         
            +
                def format(string, options = {})
         
     | 
| 
      
 62 
     | 
    
         
            +
                  unless no_color?
         
     | 
| 
      
 63 
     | 
    
         
            +
                    require 'term/ansicolor'
         
     | 
| 
      
 64 
     | 
    
         
            +
                    if options[:color]
         
     | 
| 
      
 65 
     | 
    
         
            +
                      options[:color].split(/\s/).reverse_each do |color|
         
     | 
| 
      
 66 
     | 
    
         
            +
                        if Term::ANSIColor.respond_to?(color.to_sym)
         
     | 
| 
      
 67 
     | 
    
         
            +
                          string = Term::ANSIColor.send(color.to_sym, string)
         
     | 
| 
      
 68 
     | 
    
         
            +
                        end
         
     | 
| 
      
 69 
     | 
    
         
            +
                      end
         
     | 
| 
      
 70 
     | 
    
         
            +
                    end
         
     | 
| 
      
 71 
     | 
    
         
            +
                  end
         
     | 
| 
      
 72 
     | 
    
         
            +
                  string
         
     | 
| 
      
 73 
     | 
    
         
            +
                end
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
                # Public: Passes .format to Kernel#puts
         
     | 
| 
      
 76 
     | 
    
         
            +
                #
         
     | 
| 
      
 77 
     | 
    
         
            +
                # string  - the text to be formatted
         
     | 
| 
      
 78 
     | 
    
         
            +
                # options - The hash of options used for formatting the text:
         
     | 
| 
      
 79 
     | 
    
         
            +
                #           :color - The color to be passed as a method to
         
     | 
| 
      
 80 
     | 
    
         
            +
                #                    Term::ANSIColor
         
     | 
| 
      
 81 
     | 
    
         
            +
                #
         
     | 
| 
      
 82 
     | 
    
         
            +
                #
         
     | 
| 
      
 83 
     | 
    
         
            +
                # Example
         
     | 
| 
      
 84 
     | 
    
         
            +
                #
         
     | 
| 
      
 85 
     | 
    
         
            +
                #   Coveralls::Output.puts("Hello World", :color => "cyan")
         
     | 
| 
      
 86 
     | 
    
         
            +
                #
         
     | 
| 
      
 87 
     | 
    
         
            +
                # Returns nil.
         
     | 
| 
      
 88 
     | 
    
         
            +
                def puts(string, options = {})
         
     | 
| 
      
 89 
     | 
    
         
            +
                  return if silent?
         
     | 
| 
      
 90 
     | 
    
         
            +
                  (options[:output] || output).puts self.format(string, options)
         
     | 
| 
      
 91 
     | 
    
         
            +
                end
         
     | 
| 
      
 92 
     | 
    
         
            +
             
     | 
| 
      
 93 
     | 
    
         
            +
                # Public: Passes .format to Kernel#print
         
     | 
| 
      
 94 
     | 
    
         
            +
                #
         
     | 
| 
      
 95 
     | 
    
         
            +
                # string  - the text to be formatted
         
     | 
| 
      
 96 
     | 
    
         
            +
                # options - The hash of options used for formatting the text:
         
     | 
| 
      
 97 
     | 
    
         
            +
                #           :color - The color to be passed as a method to
         
     | 
| 
      
 98 
     | 
    
         
            +
                #                    Term::ANSIColor
         
     | 
| 
      
 99 
     | 
    
         
            +
                #
         
     | 
| 
      
 100 
     | 
    
         
            +
                # Example
         
     | 
| 
      
 101 
     | 
    
         
            +
                #
         
     | 
| 
      
 102 
     | 
    
         
            +
                #   Coveralls::Output.print("Hello World!", :color => "underline")
         
     | 
| 
      
 103 
     | 
    
         
            +
                #
         
     | 
| 
      
 104 
     | 
    
         
            +
                # Returns nil.
         
     | 
| 
      
 105 
     | 
    
         
            +
                def print(string, options = {})
         
     | 
| 
      
 106 
     | 
    
         
            +
                  return if silent?
         
     | 
| 
      
 107 
     | 
    
         
            +
                  (options[:output] || output).print self.format(string, options)
         
     | 
| 
      
 108 
     | 
    
         
            +
                end
         
     | 
| 
      
 109 
     | 
    
         
            +
             
     | 
| 
      
 110 
     | 
    
         
            +
                def silent?
         
     | 
| 
      
 111 
     | 
    
         
            +
                  ENV["COVERALLS_SILENT"] || (defined?(@silent) && @silent)
         
     | 
| 
      
 112 
     | 
    
         
            +
                end
         
     | 
| 
      
 113 
     | 
    
         
            +
              end
         
     | 
| 
      
 114 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,19 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'rake'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'rake/tasklib'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            module Coveralls
         
     | 
| 
      
 5 
     | 
    
         
            +
              class RakeTask < ::Rake::TaskLib
         
     | 
| 
      
 6 
     | 
    
         
            +
                include ::Rake::DSL if defined?(::Rake::DSL)
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                def initialize(*args, &task_block)
         
     | 
| 
      
 9 
     | 
    
         
            +
                  namespace :coveralls do
         
     | 
| 
      
 10 
     | 
    
         
            +
                    desc "Push latest coverage results to Coveralls.io"
         
     | 
| 
      
 11 
     | 
    
         
            +
                    task :push do
         
     | 
| 
      
 12 
     | 
    
         
            +
                      require 'coveralls'
         
     | 
| 
      
 13 
     | 
    
         
            +
                      Coveralls.push!
         
     | 
| 
      
 14 
     | 
    
         
            +
                    end
         
     | 
| 
      
 15 
     | 
    
         
            +
                  end
         
     | 
| 
      
 16 
     | 
    
         
            +
                end # initialize
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
              end # class
         
     | 
| 
      
 19 
     | 
    
         
            +
            end # module
         
     | 
| 
         @@ -0,0 +1,101 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Coveralls
         
     | 
| 
      
 2 
     | 
    
         
            +
              module SimpleCov
         
     | 
| 
      
 3 
     | 
    
         
            +
                class Formatter
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
                  def display_result(result)
         
     | 
| 
      
 6 
     | 
    
         
            +
                    # Log which files would be submitted.
         
     | 
| 
      
 7 
     | 
    
         
            +
                    if result.files.length > 0
         
     | 
| 
      
 8 
     | 
    
         
            +
                      Coveralls::Output.puts "[Coveralls] Some handy coverage stats:"
         
     | 
| 
      
 9 
     | 
    
         
            +
                    else
         
     | 
| 
      
 10 
     | 
    
         
            +
                      Coveralls::Output.puts "[Coveralls] There are no covered files.", :color => "yellow"
         
     | 
| 
      
 11 
     | 
    
         
            +
                    end
         
     | 
| 
      
 12 
     | 
    
         
            +
                    result.files.each do |f|
         
     | 
| 
      
 13 
     | 
    
         
            +
                      Coveralls::Output.print "  * "
         
     | 
| 
      
 14 
     | 
    
         
            +
                      Coveralls::Output.print short_filename(f.filename).to_s, :color => "cyan"
         
     | 
| 
      
 15 
     | 
    
         
            +
                      Coveralls::Output.print " => ", :color => "white"
         
     | 
| 
      
 16 
     | 
    
         
            +
                      cov = "#{f.covered_percent.round}%"
         
     | 
| 
      
 17 
     | 
    
         
            +
                      if f.covered_percent > 90
         
     | 
| 
      
 18 
     | 
    
         
            +
                        Coveralls::Output.print cov, :color => "green"
         
     | 
| 
      
 19 
     | 
    
         
            +
                      elsif f.covered_percent > 80
         
     | 
| 
      
 20 
     | 
    
         
            +
                        Coveralls::Output.print cov, :color => "yellow"
         
     | 
| 
      
 21 
     | 
    
         
            +
                      else
         
     | 
| 
      
 22 
     | 
    
         
            +
                        Coveralls::Output.print cov, :color => "red"
         
     | 
| 
      
 23 
     | 
    
         
            +
                      end
         
     | 
| 
      
 24 
     | 
    
         
            +
                      Coveralls::Output.puts ""
         
     | 
| 
      
 25 
     | 
    
         
            +
                    end
         
     | 
| 
      
 26 
     | 
    
         
            +
                    true
         
     | 
| 
      
 27 
     | 
    
         
            +
                  end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                  def get_source_files(result)
         
     | 
| 
      
 30 
     | 
    
         
            +
                    # Gather the source files.
         
     | 
| 
      
 31 
     | 
    
         
            +
                    source_files = []
         
     | 
| 
      
 32 
     | 
    
         
            +
                    result.files.each do |file|
         
     | 
| 
      
 33 
     | 
    
         
            +
                      properties = {}
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                      # Get Source
         
     | 
| 
      
 36 
     | 
    
         
            +
                      properties[:source] = File.open(file.filename, "rb:utf-8").read
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                      # Get the root-relative filename
         
     | 
| 
      
 39 
     | 
    
         
            +
                      properties[:name] = short_filename(file.filename)
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
                      # Get the coverage
         
     | 
| 
      
 42 
     | 
    
         
            +
                      properties[:coverage] = file.coverage.dup
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                      # Skip nocov lines
         
     | 
| 
      
 45 
     | 
    
         
            +
                      file.lines.each_with_index do |line, i|
         
     | 
| 
      
 46 
     | 
    
         
            +
                        properties[:coverage][i] = nil if line.skipped?
         
     | 
| 
      
 47 
     | 
    
         
            +
                      end
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
                      source_files << properties
         
     | 
| 
      
 50 
     | 
    
         
            +
                    end
         
     | 
| 
      
 51 
     | 
    
         
            +
                    source_files
         
     | 
| 
      
 52 
     | 
    
         
            +
                  end
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
                  def format(result)
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
                    unless Coveralls.should_run?
         
     | 
| 
      
 57 
     | 
    
         
            +
                      if Coveralls.noisy?
         
     | 
| 
      
 58 
     | 
    
         
            +
                        display_result result
         
     | 
| 
      
 59 
     | 
    
         
            +
                      end
         
     | 
| 
      
 60 
     | 
    
         
            +
                      return
         
     | 
| 
      
 61 
     | 
    
         
            +
                    end
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
                    # Post to Coveralls.
         
     | 
| 
      
 64 
     | 
    
         
            +
                    API.post_json "jobs", 
         
     | 
| 
      
 65 
     | 
    
         
            +
                      :source_files => get_source_files(result),
         
     | 
| 
      
 66 
     | 
    
         
            +
                      :test_framework => result.command_name.downcase,
         
     | 
| 
      
 67 
     | 
    
         
            +
                      :run_at => result.created_at
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
                    Coveralls::Output.puts output_message result
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
                    true
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
      
 73 
     | 
    
         
            +
                  rescue Exception => e
         
     | 
| 
      
 74 
     | 
    
         
            +
                    display_error e
         
     | 
| 
      
 75 
     | 
    
         
            +
                  end
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
                  def display_error(e)
         
     | 
| 
      
 78 
     | 
    
         
            +
                    Coveralls::Output.puts "Coveralls encountered an exception:", :color => "red"
         
     | 
| 
      
 79 
     | 
    
         
            +
                    Coveralls::Output.puts e.class.to_s, :color => "red"
         
     | 
| 
      
 80 
     | 
    
         
            +
                    Coveralls::Output.puts e.message, :color => "red"
         
     | 
| 
      
 81 
     | 
    
         
            +
                    e.backtrace.each do |line|
         
     | 
| 
      
 82 
     | 
    
         
            +
                      Coveralls::Output.puts line, :color => "red"
         
     | 
| 
      
 83 
     | 
    
         
            +
                    end if e.backtrace
         
     | 
| 
      
 84 
     | 
    
         
            +
                    if e.respond_to?(:response) && e.response
         
     | 
| 
      
 85 
     | 
    
         
            +
                      Coveralls::Output.puts e.response.to_s, :color => "red"
         
     | 
| 
      
 86 
     | 
    
         
            +
                    end
         
     | 
| 
      
 87 
     | 
    
         
            +
                    false
         
     | 
| 
      
 88 
     | 
    
         
            +
                  end
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
      
 90 
     | 
    
         
            +
                  def output_message(result)
         
     | 
| 
      
 91 
     | 
    
         
            +
                    "Coverage is at #{result.covered_percent.round(2) rescue result.covered_percent.round}%.\nCoverage report sent to Coveralls."
         
     | 
| 
      
 92 
     | 
    
         
            +
                  end
         
     | 
| 
      
 93 
     | 
    
         
            +
             
     | 
| 
      
 94 
     | 
    
         
            +
                  def short_filename(filename)
         
     | 
| 
      
 95 
     | 
    
         
            +
                    filename = filename.gsub(::SimpleCov.root, '.').gsub(/^\.\//, '') if ::SimpleCov.root
         
     | 
| 
      
 96 
     | 
    
         
            +
                    filename
         
     | 
| 
      
 97 
     | 
    
         
            +
                  end
         
     | 
| 
      
 98 
     | 
    
         
            +
             
     | 
| 
      
 99 
     | 
    
         
            +
                end
         
     | 
| 
      
 100 
     | 
    
         
            +
              end
         
     | 
| 
      
 101 
     | 
    
         
            +
            end
         
     |