irongut / CodeCoverageSummary

A GitHub Action that reads Cobertura format code coverage files and outputs a text or markdown summary.
MIT License
187 stars 52 forks source link

CCS fails with simplecov & simplecov-cobertura default settings #33

Closed irongut closed 2 years ago

irongut commented 2 years ago

Bug Report

CCS fails with simplecov & simplecov-cobertura on default settings because branch metrics are not reported.

See posts by @pboling in https://github.com/irongut/CodeCoverageSummary/issues/17#issuecomment-1042543104

Workflow File

coverage.yml

      - name: Code Coverage Summary Report
        uses: irongut/CodeCoverageSummary@v1.2.0
        with:
          filename: ./coverage/coverage.xml
          badge: true
          fail_below_min: true
          format: markdown
          hide_branch_rate: false
          hide_complexity: true
          indicators: true
          output: both
          thresholds: '95 97'
        continue-on-error: ${{ matrix.experimental != 'false' }}

Workflow Run

Actions Log

Run irongut/CodeCoverageSummary@v1.[2](https://github.com/oauth-xx/oauth2/runs/5226726966?check_suite_focus=true#step:9:2).0
  with:
    filename: ./coverage/coverage.xml
    badge: true
    fail_below_min: true
    format: markdown
    hide_branch_rate: false
    hide_complexity: true
    indicators: true
    output: both
    thresholds: 95 97
  env:
    CC_TEST_REPORTER_ID: ***
    GIT_COMMIT_SHA: 5e7798ac8bfdc4f[3](https://github.com/oauth-xx/oauth2/runs/5226726966?check_suite_focus=true#step:9:3)d8537d[4](https://github.com/oauth-xx/oauth2/runs/5226726966?check_suite_focus=true#step:9:4)23af23be[5](https://github.com/oauth-xx/oauth2/runs/5226726966?check_suite_focus=true#step:9:5)f33ec[6](https://github.com/oauth-xx/oauth2/runs/5226726966?check_suite_focus=true#step:9:6)81
    GIT_BRANCH: 1-4-stable
/usr/bin/docker run --name ghcrioirongutcodecoveragesummaryv120_db1[7](https://github.com/oauth-xx/oauth2/runs/5226726966?check_suite_focus=true#step:9:7)64 --label 7db2d7 --workdir /github/workspace --rm -e CC_TEST_REPORTER_ID -e GIT_COMMIT_SHA -e GIT_BRANCH -e INPUT_FILENAME -e INPUT_BADGE -e INPUT_FAIL_BELOW_MIN -e INPUT_FORMAT -e INPUT_HIDE_BRANCH_RATE -e INPUT_HIDE_COMPLEXITY -e INPUT_INDICATORS -e INPUT_OUTPUT -e INPUT_THRESHOLDS -e HOME -e GITHUB_JOB -e GITHUB_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_REPOSITORY_OWNER -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RETENTION_DAYS -e GITHUB_RUN_ATTEMPT -e GITHUB_ACTOR -e GITHUB_WORKFLOW -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GITHUB_EVENT_NAME -e GITHUB_SERVER_URL -e GITHUB_API_URL -e GITHUB_GRAPHQL_URL -e GITHUB_REF_NAME -e GITHUB_REF_PROTECTED -e GITHUB_REF_TYPE -e GITHUB_WORKSPACE -e GITHUB_ACTION -e GITHUB_EVENT_PATH -e GITHUB_ACTION_REPOSITORY -e GITHUB_ACTION_REF -e GITHUB_PATH -e GITHUB_ENV -e RUNNER_OS -e RUNNER_ARCH -e RUNNER_NAME -e RUNNER_TOOL_CACHE -e RUNNER_TEMP -e RUNNER_WORKSPACE -e ACTIONS_RUNTIME_URL -e ACTIONS_RUNTIME_TOKEN -e ACTIONS_CACHE_URL -e GITHUB_ACTIONS=true -e CI=true -v "/var/run/docker.sock":"/var/run/docker.sock" -v "/home/runner/work/_temp/_github_home":"/github/home" -v "/home/runner/work/_temp/_github_workflow":"/github/workflow" -v "/home/runner/work/_temp/_runner_file_commands":"/github/file_commands" -v "/home/runner/work/oauth2/oauth2":"/github/workspace" ghcr.io/irongut/codecoveragesummary:v1.2.0  "--files" "./coverage/coverage.xml" "--badge" "true" "--fail" "true" "--format" "markdown" "--hidebranch" "false" "--hidecomplexity" "true" "--indicators" "true" "--output" "both" "--thresholds" "[9](https://github.com/oauth-xx/oauth2/runs/5226726966?check_suite_focus=true#step:9:9)5 97"
Code Coverage File: ./coverage/coverage.xml
Parse Error: Sequence contains no elements
Error: System.NullReferenceException - Object reference not set to an instance of an object.

Expected Behavior

CCS should report the metrics which are present and fail more gracefully if any required part of the coverage file is missing.

Workaround

Enable Branch coverage. Primary Coverage should be set to 'line' (the default).

See simplecov docs.

Linked To

17 Test compatibility with other tools

irongut commented 2 years ago

Simplecov Sample (Ruby, branch coverage not enabled)

<?xml version='1.0'?> 
<!DOCTYPE coverage SYSTEM "http://cobertura.sourceforge.net/xml/coverage-04.dtd">
<!-- Generated by simplecov-cobertura version 2.1.0 (https://github.com/dashingrocket/simplecov-cobertura) -->
<coverage line-rate="0.97" lines-covered="350" lines-valid="362" complexity="0" version="0" timestamp="1645060052">
  <sources>
    <source>/Users/pboling/src/my/oauth2</source>
  </sources>
  <packages>
    <package name="oauth2" line-rate="0.97" complexity="0">
      <classes>
        <class name="oauth2" filename="lib/oauth2.rb" line-rate="1.0" complexity="0">
          <methods/>
          <lines>
            <line number="1" hits="1"/>
            <line number="2" hits="1"/>
            <line number="3" hits="1"/>
            <line number="4" hits="1"/>
            <line number="5" hits="1"/>
            <line number="6" hits="1"/>
            <line number="7" hits="1"/>
            <line number="8" hits="1"/>
            <line number="9" hits="1"/>
            <line number="10" hits="1"/>
            <line number="11" hits="1"/>
            <line number="12" hits="1"/>
          </lines>
        </class>
        <class name="access_token" filename="lib/oauth2/access_token.rb" line-rate="0.96" complexity="0">
          <methods/>
          <lines>
            <line number="1" hits="1"/>
            <line number="2" hits="1"/>
            <line number="3" hits="1"/>
            <line number="4" hits="1"/>
            <line number="7" hits="1"/>
            <line number="13" hits="1"/>
            <line number="14" hits="7"/>
            <line number="15" hits="7"/>
            <line number="23" hits="1"/>
            <line number="24" hits="1"/>
            <line number="41" hits="1"/>
            <line number="42" hits="151"/>
            <line number="43" hits="151"/>
            <line number="44" hits="151"/>
            <line number="45" hits="151"/>
            <line number="46" hits="453"/>
            <line number="48" hits="151"/>
            <line number="49" hits="151"/>
            <line number="50" hits="151"/>
            <line number="51" hits="151"/>
            <line number="52" hits="151"/>
            <line number="55" hits="151"/>
            <line number="61" hits="1"/>
            <line number="62" hits="6"/>
            <line number="68" hits="1"/>
            <line number="69" hits="11"/>
            <line number="75" hits="1"/>
            <line number="76" hits="3"/>
            <line number="83" hits="1"/>
            <line number="84" hits="2"/>
            <line number="86" hits="2"/>
            <line number="87" hits="2"/>
            <line number="88" hits="2"/>
            <line number="89" hits="2"/>
            <line number="90" hits="2"/>
            <line number="91" hits="2"/>
            <line number="97" hits="1"/>
            <line number="98" hits="1"/>
            <line number="107" hits="1"/>
            <line number="108" hits="20"/>
            <line number="109" hits="20"/>
            <line number="115" hits="1"/>
            <line number="116" hits="2"/>
            <line number="122" hits="1"/>
            <line number="123" hits="18"/>
            <line number="129" hits="1"/>
            <line number="130" hits="2"/>
            <line number="136" hits="1"/>
            <line number="137" hits="0"/>
            <line number="143" hits="1"/>
            <line number="144" hits="2"/>
            <line number="148" hits="1"/>
            <line number="149" hits="8"/>
            <line number="152" hits="1"/>
            <line number="154" hits="1"/>
            <line number="155" hits="20"/>
            <line number="157" hits="8"/>
            <line number="158" hits="8"/>
            <line number="160" hits="8"/>
            <line number="161" hits="8"/>
            <line number="163" hits="4"/>
            <line number="164" hits="4"/>
            <line number="165" hits="4"/>
            <line number="167" hits="0"/>
            <line number="171" hits="0"/>
            <line number="175" hits="1"/>
            <line number="176" hits="13"/>
            <line number="178" hits="12"/>
          </lines>
        </class>
        <class name="authenticator" filename="lib/oauth2/authenticator.rb" line-rate="1.0" complexity="0">
          <methods/>
          <lines>
            <line number="1" hits="1"/>
            <line number="3" hits="1"/>
            <line number="4" hits="1"/>
            <line number="5" hits="1"/>
            <line number="7" hits="1"/>
            <line number="8" hits="106"/>
            <line number="9" hits="106"/>
            <line number="10" hits="106"/>
            <line number="22" hits="1"/>
            <line number="23" hits="106"/>
            <line number="25" hits="14"/>
            <line number="27" hits="89"/>
            <line number="29" hits="1"/>
            <line number="31" hits="1"/>
            <line number="33" hits="1"/>
            <line number="37" hits="1"/>
            <line number="38" hits="15"/>
            <line number="41" hits="1"/>
            <line number="45" hits="1"/>
            <line number="46" hits="89"/>
            <line number="51" hits="1"/>
            <line number="52" hits="1"/>
            <line number="57" hits="1"/>
            <line number="58" hits="14"/>
            <line number="59" hits="14"/>
            <line number="60" hits="14"/>
            <line number="64" hits="1"/>
            <line number="65" hits="14"/>
          </lines>
        </class>
        <class name="client" filename="lib/oauth2/client.rb" line-rate="0.95" complexity="0">
          <methods/>
          <lines>
            <line number="1" hits="1"/>
            <line number="2" hits="1"/>
            <line number="4" hits="1"/>
            <line number="6" hits="1"/>
            <line number="7" hits="1"/>
            <line number="9" hits="1"/>
            <line number="10" hits="1"/>
            <line number="11" hits="1"/>
            <line number="31" hits="1"/>
            <line number="32" hits="204"/>
            <line number="33" hits="204"/>
            <line number="34" hits="204"/>
            <line number="35" hits="204"/>
            <line number="36" hits="204"/>
            <line number="39" hits="204"/>
            <line number="49" hits="204"/>
            <line number="55" hits="1"/>
            <line number="56" hits="0"/>
            <line number="57" hits="0"/>
            <line number="61" hits="1"/>
            <line number="62" hits="423"/>
            <line number="63" hits="158"/>
            <line number="64" hits="158"/>
            <line number="65" hits="134"/>
            <line number="66" hits="134"/>
            <line number="69" hits="158"/>
            <line number="76" hits="1"/>
            <line number="77" hits="11"/>
            <line number="78" hits="11"/>
            <line number="84" hits="1"/>
            <line number="85" hits="100"/>
            <line number="100" hits="1"/>
            <line number="101" hits="141"/>
            <line number="103" hits="141"/>
            <line number="105" hits="141"/>
            <line number="106" hits="141"/>
            <line number="107" hits="141"/>
            <line number="109" hits="141"/>
            <line number="111" hits="141"/>
            <line number="113" hits="3"/>
            <line number="114" hits="3"/>
            <line number="115" hits="3"/>
            <line number="117" hits="2"/>
            <line number="118" hits="1"/>
            <line number="119" hits="1"/>
            <line number="121" hits="2"/>
            <line number="124" hits="127"/>
            <line number="126" hits="11"/>
            <line number="127" hits="11"/>
            <line number="129" hits="2"/>
            <line number="130" hits="2"/>
            <line number="132" hits="0"/>
            <line number="133" hits="0"/>
            <line number="143" hits="1"/>
            <line number="144" hits="97"/>
            <line number="145" hits="182"/>
            <line number="146" hits="2"/>
            <line number="148" hits="180"/>
            <line number="151" hits="97"/>
            <line number="153" hits="97"/>
            <line number="154" hits="97"/>
            <line number="155" hits="97"/>
            <line number="156" hits="97"/>
            <line number="157" hits="79"/>
            <line number="158" hits="79"/>
            <line number="160" hits="18"/>
            <line number="161" hits="18"/>
            <line number="163" hits="97"/>
            <line number="164" hits="97"/>
            <line number="167" hits="97"/>
            <line number="169" hits="0"/>
            <line number="172" hits="97"/>
            <line number="173" hits="3"/>
            <line number="174" hits="3"/>
            <line number="176" hits="94"/>
            <line number="182" hits="1"/>
            <line number="183" hits="48"/>
            <line number="189" hits="1"/>
            <line number="190" hits="5"/>
            <line number="196" hits="1"/>
            <line number="197" hits="11"/>
            <line number="203" hits="1"/>
            <line number="204" hits="21"/>
            <line number="207" hits="1"/>
            <line number="208" hits="9"/>
            <line number="227" hits="1"/>
            <line number="228" hits="55"/>
            <line number="229" hits="2"/>
            <line number="231" hits="53"/>
            <line number="235" hits="1"/>
            <line number="236" hits="91"/>
            <line number="237" hits="91"/>
            <line number="240" hits="1"/>
            <line number="242" hits="1"/>
            <line number="243" hits="97"/>
            <line number="244" hits="97"/>
            <line number="246" hits="93"/>
            <line number="250" hits="93"/>
            <line number="251" hits="1"/>
            <line number="253" hits="92"/>
          </lines>
        </class>
        <class name="error" filename="lib/oauth2/error.rb" line-rate="1.0" complexity="0">
          <methods/>
          <lines>
            <line number="1" hits="1"/>
            <line number="2" hits="1"/>
            <line number="3" hits="1"/>
            <line number="7" hits="1"/>
            <line number="8" hits="14"/>
            <line number="9" hits="14"/>
            <line number="11" hits="14"/>
            <line number="12" hits="7"/>
            <line number="13" hits="7"/>
            <line number="14" hits="7"/>
            <line number="17" hits="14"/>
            <line number="23" hits="1"/>
            <line number="24" hits="14"/>
            <line number="26" hits="14"/>
            <line number="28" hits="14"/>
            <line number="29" hits="7"/>
            <line number="30" hits="7"/>
            <line number="32" hits="7"/>
            <line number="35" hits="14"/>
            <line number="37" hits="14"/>
          </lines>
        </class>
        <class name="mac_token" filename="lib/oauth2/mac_token.rb" line-rate="0.95" complexity="0">
          <methods/>
          <lines>
            <line number="1" hits="1"/>
            <line number="2" hits="1"/>
            <line number="3" hits="1"/>
            <line number="4" hits="1"/>
            <line number="6" hits="1"/>
            <line number="7" hits="1"/>
            <line number="14" hits="1"/>
            <line number="15" hits="3"/>
            <line number="18" hits="1"/>
            <line number="30" hits="1"/>
            <line number="31" hits="19"/>
            <line number="32" hits="19"/>
            <line number="34" hits="18"/>
            <line number="43" hits="1"/>
            <line number="44" hits="4"/>
            <line number="46" hits="4"/>
            <line number="47" hits="4"/>
            <line number="49" hits="4"/>
            <line number="53" hits="1"/>
            <line number="54" hits="1"/>
            <line number="61" hits="1"/>
            <line number="62" hits="9"/>
            <line number="63" hits="9"/>
            <line number="65" hits="9"/>
            <line number="67" hits="8"/>
            <line number="69" hits="7"/>
            <line number="71" hits="7"/>
            <line number="80" hits="1"/>
            <line number="82" hits="8"/>
            <line number="91" hits="8"/>
            <line number="97" hits="1"/>
            <line number="98" hits="19"/>
            <line number="101" hits="1"/>
            <line number="103" hits="0"/>
            <line number="107" hits="17"/>
            <line number="109" hits="0"/>
            <line number="112" hits="1"/>
            <line number="116" hits="1"/>
            <line number="120" hits="1"/>
            <line number="124" hits="1"/>
            <line number="125" hits="8"/>
          </lines>
        </class>
        <class name="response" filename="lib/oauth2/response.rb" line-rate="1.0" complexity="0">
          <methods/>
          <lines>
            <line number="1" hits="1"/>
            <line number="2" hits="1"/>
            <line number="3" hits="1"/>
            <line number="5" hits="1"/>
            <line number="7" hits="1"/>
            <line number="8" hits="1"/>
            <line number="9" hits="1"/>
            <line number="14" hits="62"/>
            <line number="15" hits="44"/>
            <line number="16" hits="3"/>
            <line number="20" hits="1"/>
            <line number="32" hits="1"/>
            <line number="33" hits="3"/>
            <line number="34" hits="3"/>
            <line number="35" hits="3"/>
            <line number="36" hits="6"/>
            <line number="46" hits="1"/>
            <line number="47" hits="147"/>
            <line number="48" hits="147"/>
            <line number="52" hits="1"/>
            <line number="53" hits="6"/>
            <line number="57" hits="1"/>
            <line number="58" hits="150"/>
            <line number="62" hits="1"/>
            <line number="63" hits="154"/>
            <line number="69" hits="1"/>
            <line number="70" hits="134"/>
            <line number="72" hits="131"/>
            <line number="76" hits="1"/>
            <line number="77" hits="244"/>
            <line number="81" hits="1"/>
            <line number="82" hits="244"/>
            <line number="84" hits="244"/>
            <line number="89" hits="1"/>
            <line number="90" hits="1"/>
          </lines>
        </class>
        <class name="assertion" filename="lib/oauth2/strategy/assertion.rb" line-rate="0.89" complexity="0">
          <methods/>
          <lines>
            <line number="1" hits="1"/>
            <line number="3" hits="1"/>
            <line number="4" hits="1"/>
            <line number="23" hits="1"/>
            <line number="27" hits="1"/>
            <line number="28" hits="1"/>
            <line number="45" hits="1"/>
            <line number="46" hits="8"/>
            <line number="47" hits="8"/>
            <line number="50" hits="1"/>
            <line number="51" hits="8"/>
            <line number="53" hits="8"/>
            <line number="60" hits="1"/>
            <line number="62" hits="8"/>
            <line number="67" hits="8"/>
            <line number="68" hits="8"/>
            <line number="69" hits="0"/>
            <line number="70" hits="0"/>
          </lines>
        </class>
        <class name="auth_code" filename="lib/oauth2/strategy/auth_code.rb" line-rate="1.0" complexity="0">
          <methods/>
          <lines>
            <line number="1" hits="1"/>
            <line number="2" hits="1"/>
            <line number="6" hits="1"/>
            <line number="10" hits="1"/>
            <line number="11" hits="3"/>
            <line number="17" hits="1"/>
            <line number="18" hits="3"/>
            <line number="27" hits="1"/>
            <line number="28" hits="44"/>
            <line number="30" hits="44"/>
          </lines>
        </class>
        <class name="base" filename="lib/oauth2/strategy/base.rb" line-rate="1.0" complexity="0">
          <methods/>
          <lines>
            <line number="1" hits="1"/>
            <line number="2" hits="1"/>
            <line number="3" hits="1"/>
            <line number="4" hits="1"/>
            <line number="5" hits="95"/>
          </lines>
        </class>
        <class name="client_credentials" filename="lib/oauth2/strategy/client_credentials.rb" line-rate="1.0" complexity="0">
          <methods/>
          <lines>
            <line number="1" hits="1"/>
            <line number="2" hits="1"/>
            <line number="6" hits="1"/>
            <line number="10" hits="1"/>
            <line number="11" hits="1"/>
            <line number="18" hits="1"/>
            <line number="19" hits="20"/>
            <line number="20" hits="20"/>
          </lines>
        </class>
        <class name="implicit" filename="lib/oauth2/strategy/implicit.rb" line-rate="1.0" complexity="0">
          <methods/>
          <lines>
            <line number="1" hits="1"/>
            <line number="2" hits="1"/>
            <line number="6" hits="1"/>
            <line number="10" hits="1"/>
            <line number="11" hits="3"/>
            <line number="17" hits="1"/>
            <line number="18" hits="3"/>
            <line number="24" hits="1"/>
            <line number="25" hits="1"/>
          </lines>
        </class>
        <class name="password" filename="lib/oauth2/strategy/password.rb" line-rate="1.0" complexity="0">
          <methods/>
          <lines>
            <line number="1" hits="1"/>
            <line number="2" hits="1"/>
            <line number="6" hits="1"/>
            <line number="10" hits="1"/>
            <line number="11" hits="1"/>
            <line number="19" hits="1"/>
            <line number="20" hits="10"/>
            <line number="23" hits="10"/>
          </lines>
        </class>
      </classes>
    </package>
  </packages>
</coverage>

Originally posted by @pboling in https://github.com/irongut/CodeCoverageSummary/issues/17#issuecomment-1042545234

pboling commented 2 years ago

Config (branch enabled)

SimpleCov.start do
  enable_coverage :branch
  primary_coverage :branch
  # ...
end

Output

<?xml version='1.0'?> 
<!DOCTYPE coverage SYSTEM "http://cobertura.sourceforge.net/xml/coverage-04.dtd">
<!-- Generated by simplecov-cobertura version 2.1.0 (https://github.com/dashingrocket/simplecov-cobertura) -->
<coverage line-rate="0.97" lines-covered="347" lines-valid="359" branches-covered="57" branches-valid="66" branch-rate="0.86" complexity="0" version="0" timestamp="1645165717">
  <sources>
    <source>/Users/pboling/src/my/oauth2</source>
  </sources>
  <packages>
    <package name="oauth2" line-rate="0.97" branch-rate="0.86" complexity="0">
      <classes>
        <class name="oauth2" filename="lib/oauth2.rb" line-rate="1.0" branch-rate="1.0" complexity="0">
          <methods/>
          <lines>
            <line number="1" hits="1" branch="false"/>
            <line number="2" hits="1" branch="false"/>
            <line number="3" hits="1" branch="false"/>
            <line number="4" hits="1" branch="false"/>
            <line number="5" hits="1" branch="false"/>
            <line number="6" hits="1" branch="false"/>
            <line number="7" hits="1" branch="false"/>
            <line number="8" hits="1" branch="false"/>
            <line number="9" hits="1" branch="false"/>
            <line number="10" hits="1" branch="false"/>
            <line number="11" hits="1" branch="false"/>
            <line number="12" hits="1" branch="false"/>
          </lines>
        </class>
        <class name="access_token" filename="lib/oauth2/access_token.rb" line-rate="0.96" branch-rate="0.75" complexity="0">
          <methods/>
          <lines>
            <line number="1" hits="1" branch="false"/>
            <line number="2" hits="1" branch="false"/>
            <line number="3" hits="1" branch="false"/>
            <line number="4" hits="1" branch="false"/>
            <line number="7" hits="1" branch="false"/>
            <line number="13" hits="1" branch="false"/>
            <line number="14" hits="7" branch="false"/>
            <line number="15" hits="7" branch="false"/>
            <line number="23" hits="1" branch="false"/>
            <line number="24" hits="1" branch="false"/>
            <line number="41" hits="1" branch="false"/>
            <line number="42" hits="151" branch="false"/>
            <line number="43" hits="151" branch="false"/>
            <line number="44" hits="151" branch="false"/>
            <line number="45" hits="151" branch="false"/>
            <line number="46" hits="453" branch="false"/>
            <line number="48" hits="151" branch="false"/>
            <line number="49" hits="151" branch="false"/>
            <line number="50" hits="151" branch="false"/>
            <line number="51" hits="151" branch="true" condition-coverage="100% (1/1)"/>
            <line number="52" hits="151" branch="false"/>
            <line number="55" hits="151" branch="false"/>
            <line number="61" hits="1" branch="false"/>
            <line number="62" hits="6" branch="false"/>
            <line number="68" hits="1" branch="false"/>
            <line number="69" hits="11" branch="false"/>
            <line number="75" hits="1" branch="false"/>
            <line number="76" hits="3" branch="false"/>
            <line number="83" hits="1" branch="false"/>
            <line number="84" hits="2" branch="true" condition-coverage="100% (1/1)"/>
            <line number="86" hits="2" branch="false"/>
            <line number="87" hits="2" branch="false"/>
            <line number="88" hits="2" branch="false"/>
            <line number="89" hits="2" branch="false"/>
            <line number="90" hits="2" branch="true" condition-coverage="100% (1/1)"/>
            <line number="91" hits="2" branch="false"/>
            <line number="97" hits="1" branch="false"/>
            <line number="98" hits="1" branch="false"/>
            <line number="107" hits="1" branch="false"/>
            <line number="108" hits="20" branch="false"/>
            <line number="109" hits="20" branch="false"/>
            <line number="115" hits="1" branch="false"/>
            <line number="116" hits="2" branch="false"/>
            <line number="122" hits="1" branch="false"/>
            <line number="123" hits="18" branch="false"/>
            <line number="129" hits="1" branch="false"/>
            <line number="130" hits="2" branch="false"/>
            <line number="136" hits="1" branch="false"/>
            <line number="137" hits="0" branch="false"/>
            <line number="143" hits="1" branch="false"/>
            <line number="144" hits="2" branch="false"/>
            <line number="148" hits="1" branch="false"/>
            <line number="149" hits="8" branch="false"/>
            <line number="152" hits="1" branch="false"/>
            <line number="154" hits="1" branch="false"/>
            <line number="155" hits="20" branch="false"/>
            <line number="157" hits="8" branch="true" condition-coverage="100% (1/1)"/>
            <line number="158" hits="8" branch="false"/>
            <line number="160" hits="8" branch="true" condition-coverage="100% (1/1)"/>
            <line number="161" hits="8" branch="false"/>
            <line number="163" hits="4" branch="true" condition-coverage="100% (1/1)"/>
            <line number="164" hits="4" branch="false"/>
            <line number="165" hits="4" branch="true" condition-coverage="100% (1/1)"/>
            <line number="167" hits="0" branch="true" condition-coverage="0% (0/1)"/>
            <line number="171" hits="0" branch="true" condition-coverage="0% (0/1)"/>
            <line number="175" hits="1" branch="false"/>
            <line number="176" hits="13" branch="false"/>
            <line number="178" hits="12" branch="false"/>
          </lines>
        </class>
        <class name="authenticator" filename="lib/oauth2/authenticator.rb" line-rate="1.0" branch-rate="1.0" complexity="0">
          <methods/>
          <lines>
            <line number="1" hits="1" branch="false"/>
            <line number="3" hits="1" branch="false"/>
            <line number="4" hits="1" branch="false"/>
            <line number="5" hits="1" branch="false"/>
            <line number="7" hits="1" branch="false"/>
            <line number="8" hits="106" branch="false"/>
            <line number="9" hits="106" branch="false"/>
            <line number="10" hits="106" branch="false"/>
            <line number="22" hits="1" branch="false"/>
            <line number="23" hits="106" branch="false"/>
            <line number="25" hits="14" branch="true" condition-coverage="100% (1/1)"/>
            <line number="27" hits="89" branch="true" condition-coverage="100% (1/1)"/>
            <line number="29" hits="1" branch="true" condition-coverage="100% (1/1)"/>
            <line number="31" hits="1" branch="true" condition-coverage="100% (1/1)"/>
            <line number="33" hits="1" branch="true" condition-coverage="100% (1/1)"/>
            <line number="37" hits="1" branch="false"/>
            <line number="38" hits="15" branch="false"/>
            <line number="41" hits="1" branch="false"/>
            <line number="45" hits="1" branch="false"/>
            <line number="46" hits="89" branch="false"/>
            <line number="51" hits="1" branch="false"/>
            <line number="52" hits="1" branch="false"/>
            <line number="57" hits="1" branch="false"/>
            <line number="58" hits="14" branch="false"/>
            <line number="59" hits="14" branch="false"/>
            <line number="60" hits="14" branch="false"/>
            <line number="64" hits="1" branch="false"/>
            <line number="65" hits="14" branch="false"/>
          </lines>
        </class>
        <class name="client" filename="lib/oauth2/client.rb" line-rate="0.95" branch-rate="0.94" complexity="0">
          <methods/>
          <lines>
            <line number="1" hits="1" branch="false"/>
            <line number="2" hits="1" branch="false"/>
            <line number="4" hits="1" branch="false"/>
            <line number="6" hits="1" branch="false"/>
            <line number="7" hits="1" branch="false"/>
            <line number="9" hits="1" branch="false"/>
            <line number="10" hits="1" branch="false"/>
            <line number="11" hits="1" branch="false"/>
            <line number="31" hits="1" branch="false"/>
            <line number="32" hits="204" branch="false"/>
            <line number="33" hits="204" branch="false"/>
            <line number="34" hits="204" branch="false"/>
            <line number="35" hits="204" branch="false"/>
            <line number="36" hits="204" branch="false"/>
            <line number="39" hits="204" branch="false"/>
            <line number="49" hits="204" branch="true" condition-coverage="100% (1/1)"/>
            <line number="55" hits="1" branch="false"/>
            <line number="56" hits="0" branch="false"/>
            <line number="57" hits="0" branch="false"/>
            <line number="61" hits="1" branch="false"/>
            <line number="62" hits="402" branch="false"/>
            <line number="64" hits="137" branch="true" condition-coverage="100% (1/1)"/>
            <line number="65" hits="134" branch="true" condition-coverage="100% (1/1)"/>
            <line number="73" hits="1" branch="false"/>
            <line number="74" hits="11" branch="false"/>
            <line number="75" hits="11" branch="false"/>
            <line number="81" hits="1" branch="false"/>
            <line number="82" hits="100" branch="false"/>
            <line number="97" hits="1" branch="false"/>
            <line number="98" hits="141" branch="true" condition-coverage="100% (1/1)"/>
            <line number="100" hits="141" branch="false"/>
            <line number="102" hits="141" branch="false"/>
            <line number="103" hits="141" branch="true" condition-coverage="100% (1/1)"/>
            <line number="104" hits="141" branch="true" condition-coverage="100% (1/1)"/>
            <line number="106" hits="141" branch="false"/>
            <line number="108" hits="141" branch="false"/>
            <line number="110" hits="3" branch="true" condition-coverage="100% (1/1)"/>
            <line number="111" hits="3" branch="false"/>
            <line number="112" hits="3" branch="true" condition-coverage="100% (1/1)"/>
            <line number="114" hits="2" branch="true" condition-coverage="100% (1/1)"/>
            <line number="115" hits="1" branch="true" condition-coverage="100% (1/1)"/>
            <line number="116" hits="1" branch="false"/>
            <line number="118" hits="2" branch="false"/>
            <line number="121" hits="127" branch="true" condition-coverage="100% (1/1)"/>
            <line number="123" hits="11" branch="true" condition-coverage="100% (1/1)"/>
            <line number="124" hits="11" branch="true" condition-coverage="100% (1/1)"/>
            <line number="126" hits="2" branch="false"/>
            <line number="127" hits="2" branch="false"/>
            <line number="129" hits="0" branch="true" condition-coverage="0% (0/1)"/>
            <line number="130" hits="0" branch="false"/>
            <line number="140" hits="1" branch="false"/>
            <line number="141" hits="97" branch="false"/>
            <line number="142" hits="182" branch="false"/>
            <line number="143" hits="2" branch="true" condition-coverage="100% (1/1)"/>
            <line number="145" hits="180" branch="true" condition-coverage="100% (1/1)"/>
            <line number="148" hits="97" branch="false"/>
            <line number="150" hits="97" branch="false"/>
            <line number="151" hits="97" branch="false"/>
            <line number="152" hits="97" branch="false"/>
            <line number="153" hits="97" branch="false"/>
            <line number="154" hits="79" branch="true" condition-coverage="100% (1/1)"/>
            <line number="155" hits="79" branch="false"/>
            <line number="157" hits="18" branch="true" condition-coverage="100% (1/1)"/>
            <line number="158" hits="18" branch="false"/>
            <line number="160" hits="97" branch="false"/>
            <line number="161" hits="97" branch="false"/>
            <line number="164" hits="97" branch="false"/>
            <line number="166" hits="0" branch="false"/>
            <line number="169" hits="97" branch="true" condition-coverage="100% (1/1)"/>
            <line number="170" hits="3" branch="true" condition-coverage="100% (1/1)"/>
            <line number="171" hits="3" branch="false"/>
            <line number="173" hits="94" branch="false"/>
            <line number="179" hits="1" branch="false"/>
            <line number="180" hits="48" branch="false"/>
            <line number="186" hits="1" branch="false"/>
            <line number="187" hits="5" branch="false"/>
            <line number="193" hits="1" branch="false"/>
            <line number="194" hits="11" branch="false"/>
            <line number="200" hits="1" branch="false"/>
            <line number="201" hits="21" branch="false"/>
            <line number="204" hits="1" branch="false"/>
            <line number="205" hits="9" branch="false"/>
            <line number="224" hits="1" branch="false"/>
            <line number="225" hits="55" branch="false"/>
            <line number="226" hits="2" branch="true" condition-coverage="100% (1/1)"/>
            <line number="228" hits="53" branch="true" condition-coverage="100% (1/1)"/>
            <line number="232" hits="1" branch="false"/>
            <line number="233" hits="91" branch="false"/>
            <line number="234" hits="91" branch="false"/>
            <line number="237" hits="1" branch="false"/>
            <line number="239" hits="1" branch="false"/>
            <line number="240" hits="97" branch="false"/>
            <line number="241" hits="97" branch="true" condition-coverage="100% (1/1)"/>
            <line number="243" hits="93" branch="false"/>
            <line number="247" hits="93" branch="false"/>
            <line number="248" hits="1" branch="true" condition-coverage="100% (1/1)"/>
            <line number="250" hits="92" branch="true" condition-coverage="100% (1/1)"/>
          </lines>
        </class>
        <class name="error" filename="lib/oauth2/error.rb" line-rate="1.0" branch-rate="1.0" complexity="0">
          <methods/>
          <lines>
            <line number="1" hits="1" branch="false"/>
            <line number="2" hits="1" branch="false"/>
            <line number="3" hits="1" branch="false"/>
            <line number="7" hits="1" branch="false"/>
            <line number="8" hits="14" branch="false"/>
            <line number="9" hits="14" branch="false"/>
            <line number="11" hits="14" branch="true" condition-coverage="100% (1/1)"/>
            <line number="12" hits="7" branch="true" condition-coverage="100% (1/1)"/>
            <line number="13" hits="7" branch="false"/>
            <line number="14" hits="7" branch="false"/>
            <line number="17" hits="14" branch="false"/>
            <line number="23" hits="1" branch="false"/>
            <line number="24" hits="14" branch="false"/>
            <line number="26" hits="14" branch="false"/>
            <line number="28" hits="14" branch="false"/>
            <line number="29" hits="7" branch="true" condition-coverage="100% (1/1)"/>
            <line number="30" hits="7" branch="false"/>
            <line number="32" hits="7" branch="true" condition-coverage="100% (1/1)"/>
            <line number="35" hits="14" branch="false"/>
            <line number="37" hits="14" branch="false"/>
          </lines>
        </class>
        <class name="mac_token" filename="lib/oauth2/mac_token.rb" line-rate="0.95" branch-rate="1.0" complexity="0">
          <methods/>
          <lines>
            <line number="1" hits="1" branch="false"/>
            <line number="2" hits="1" branch="false"/>
            <line number="3" hits="1" branch="false"/>
            <line number="4" hits="1" branch="false"/>
            <line number="6" hits="1" branch="false"/>
            <line number="7" hits="1" branch="false"/>
            <line number="14" hits="1" branch="false"/>
            <line number="15" hits="3" branch="false"/>
            <line number="18" hits="1" branch="false"/>
            <line number="30" hits="1" branch="false"/>
            <line number="31" hits="19" branch="false"/>
            <line number="32" hits="19" branch="false"/>
            <line number="34" hits="18" branch="false"/>
            <line number="43" hits="1" branch="false"/>
            <line number="44" hits="4" branch="false"/>
            <line number="46" hits="4" branch="false"/>
            <line number="47" hits="4" branch="false"/>
            <line number="49" hits="4" branch="false"/>
            <line number="53" hits="1" branch="false"/>
            <line number="54" hits="1" branch="false"/>
            <line number="61" hits="1" branch="false"/>
            <line number="62" hits="9" branch="false"/>
            <line number="63" hits="9" branch="false"/>
            <line number="65" hits="9" branch="false"/>
            <line number="67" hits="8" branch="true" condition-coverage="100% (1/1)"/>
            <line number="69" hits="7" branch="false"/>
            <line number="71" hits="7" branch="false"/>
            <line number="80" hits="1" branch="false"/>
            <line number="82" hits="8" branch="false"/>
            <line number="91" hits="8" branch="false"/>
            <line number="97" hits="1" branch="false"/>
            <line number="98" hits="19" branch="false"/>
            <line number="101" hits="1" branch="true" condition-coverage="100% (1/1)"/>
            <line number="103" hits="0" branch="false"/>
            <line number="107" hits="17" branch="true" condition-coverage="100% (1/1)"/>
            <line number="109" hits="0" branch="false"/>
            <line number="112" hits="1" branch="true" condition-coverage="100% (1/1)"/>
            <line number="116" hits="1" branch="false"/>
            <line number="120" hits="1" branch="false"/>
            <line number="124" hits="1" branch="false"/>
            <line number="125" hits="8" branch="false"/>
          </lines>
        </class>
        <class name="response" filename="lib/oauth2/response.rb" line-rate="1.0" branch-rate="0.75" complexity="0">
          <methods/>
          <lines>
            <line number="1" hits="1" branch="false"/>
            <line number="2" hits="1" branch="false"/>
            <line number="3" hits="1" branch="false"/>
            <line number="5" hits="1" branch="false"/>
            <line number="7" hits="1" branch="false"/>
            <line number="8" hits="1" branch="false"/>
            <line number="9" hits="1" branch="false"/>
            <line number="14" hits="62" branch="false"/>
            <line number="15" hits="44" branch="false"/>
            <line number="16" hits="3" branch="false"/>
            <line number="20" hits="1" branch="false"/>
            <line number="32" hits="1" branch="false"/>
            <line number="33" hits="3" branch="false"/>
            <line number="34" hits="3" branch="false"/>
            <line number="35" hits="3" branch="false"/>
            <line number="36" hits="6" branch="false"/>
            <line number="46" hits="1" branch="false"/>
            <line number="47" hits="147" branch="false"/>
            <line number="48" hits="147" branch="false"/>
            <line number="52" hits="1" branch="false"/>
            <line number="53" hits="6" branch="false"/>
            <line number="57" hits="1" branch="false"/>
            <line number="58" hits="150" branch="false"/>
            <line number="62" hits="1" branch="false"/>
            <line number="63" hits="154" branch="false"/>
            <line number="69" hits="1" branch="false"/>
            <line number="70" hits="134" branch="true" condition-coverage="100% (1/1)"/>
            <line number="72" hits="131" branch="false"/>
            <line number="76" hits="1" branch="false"/>
            <line number="77" hits="244" branch="false"/>
            <line number="81" hits="1" branch="false"/>
            <line number="82" hits="244" branch="true" condition-coverage="100% (1/1)"/>
            <line number="84" hits="244" branch="false"/>
            <line number="89" hits="1" branch="false"/>
            <line number="90" hits="1" branch="false"/>
          </lines>
        </class>
        <class name="assertion" filename="lib/oauth2/strategy/assertion.rb" line-rate="0.89" branch-rate="0.25" complexity="0">
          <methods/>
          <lines>
            <line number="1" hits="1" branch="false"/>
            <line number="3" hits="1" branch="false"/>
            <line number="4" hits="1" branch="false"/>
            <line number="23" hits="1" branch="false"/>
            <line number="27" hits="1" branch="false"/>
            <line number="28" hits="1" branch="false"/>
            <line number="45" hits="1" branch="false"/>
            <line number="46" hits="8" branch="false"/>
            <line number="47" hits="8" branch="false"/>
            <line number="50" hits="1" branch="false"/>
            <line number="51" hits="8" branch="false"/>
            <line number="53" hits="8" branch="false"/>
            <line number="60" hits="1" branch="false"/>
            <line number="62" hits="8" branch="false"/>
            <line number="67" hits="8" branch="false"/>
            <line number="68" hits="8" branch="true" condition-coverage="100% (1/1)"/>
            <line number="69" hits="0" branch="true" condition-coverage="0% (0/1)"/>
            <line number="70" hits="0" branch="true" condition-coverage="0% (0/1)"/>
          </lines>
        </class>
        <class name="auth_code" filename="lib/oauth2/strategy/auth_code.rb" line-rate="1.0" branch-rate="1.0" complexity="0">
          <methods/>
          <lines>
            <line number="1" hits="1" branch="false"/>
            <line number="2" hits="1" branch="false"/>
            <line number="6" hits="1" branch="false"/>
            <line number="10" hits="1" branch="false"/>
            <line number="11" hits="3" branch="false"/>
            <line number="17" hits="1" branch="false"/>
            <line number="18" hits="3" branch="false"/>
            <line number="27" hits="1" branch="false"/>
            <line number="28" hits="44" branch="false"/>
            <line number="30" hits="44" branch="false"/>
          </lines>
        </class>
        <class name="base" filename="lib/oauth2/strategy/base.rb" line-rate="1.0" branch-rate="1.0" complexity="0">
          <methods/>
          <lines>
            <line number="1" hits="1" branch="false"/>
            <line number="2" hits="1" branch="false"/>
            <line number="3" hits="1" branch="false"/>
            <line number="4" hits="1" branch="false"/>
            <line number="5" hits="95" branch="false"/>
          </lines>
        </class>
        <class name="client_credentials" filename="lib/oauth2/strategy/client_credentials.rb" line-rate="1.0" branch-rate="1.0" complexity="0">
          <methods/>
          <lines>
            <line number="1" hits="1" branch="false"/>
            <line number="2" hits="1" branch="false"/>
            <line number="6" hits="1" branch="false"/>
            <line number="10" hits="1" branch="false"/>
            <line number="11" hits="1" branch="false"/>
            <line number="18" hits="1" branch="false"/>
            <line number="19" hits="20" branch="false"/>
            <line number="20" hits="20" branch="false"/>
          </lines>
        </class>
        <class name="implicit" filename="lib/oauth2/strategy/implicit.rb" line-rate="1.0" branch-rate="1.0" complexity="0">
          <methods/>
          <lines>
            <line number="1" hits="1" branch="false"/>
            <line number="2" hits="1" branch="false"/>
            <line number="6" hits="1" branch="false"/>
            <line number="10" hits="1" branch="false"/>
            <line number="11" hits="3" branch="false"/>
            <line number="17" hits="1" branch="false"/>
            <line number="18" hits="3" branch="false"/>
            <line number="24" hits="1" branch="false"/>
            <line number="25" hits="1" branch="false"/>
          </lines>
        </class>
        <class name="password" filename="lib/oauth2/strategy/password.rb" line-rate="1.0" branch-rate="1.0" complexity="0">
          <methods/>
          <lines>
            <line number="1" hits="1" branch="false"/>
            <line number="2" hits="1" branch="false"/>
            <line number="6" hits="1" branch="false"/>
            <line number="10" hits="1" branch="false"/>
            <line number="11" hits="1" branch="false"/>
            <line number="19" hits="1" branch="false"/>
            <line number="20" hits="10" branch="false"/>
            <line number="23" hits="10" branch="false"/>
          </lines>
        </class>
      </classes>
    </package>
  </packages>
</coverage>
pboling commented 2 years ago

@irongut You saw that I provided the branch enabled output above?

irongut commented 2 years ago

You saw that I provided the branch enabled output above?

Yes, that looks as expected.

I've got a couple of other things I want to include in the next version and I'm hoping to release it by the end of the week.