Compare commits

..

137 Commits

Author SHA1 Message Date
dependabot[bot] 288db1afbd Bump Microsoft.Extensions.FileSystemGlobbing from 6.0.0 to 10.0.8
---
updated-dependencies:
- dependency-name: Microsoft.Extensions.FileSystemGlobbing
  dependency-version: 10.0.8
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-13 01:16:02 +00:00
irongut f138489648 merge PR #101 from dependabot/actions/cosign-installer-2.8.1
Bump sigstore/cosign-installer from 2.8.0 to 2.8.1
2022-10-20 02:38:15 +01:00
dependabot[bot] 9986579715 Bump sigstore/cosign-installer from 2.8.0 to 2.8.1
Bumps [sigstore/cosign-installer](https://github.com/sigstore/cosign-installer) from 2.8.0 to 2.8.1.
- [Release notes](https://github.com/sigstore/cosign-installer/releases)
- [Commits](https://github.com/sigstore/cosign-installer/compare/7cc35d7fdbe70d4278a0c96779081e6fac665f88...9becc617647dfa20ae7b1151972e9b3a2c338a2b)

---
updated-dependencies:
- dependency-name: sigstore/cosign-installer
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-18 23:44:08 +00:00
irongut 2b7bf99d3d merge PR #93 from dependabot/actions/cosign-installer-2.8.0
Bump sigstore/cosign-installer from 2.5.1 to 2.8.0
2022-10-18 23:59:20 +01:00
irongut 6381a94beb merge PR #87 from ependabot/actions/harden-runner-1.5.0
Bump step-security/harden-runner from 1.4.5 to 1.5.0
2022-10-18 23:57:41 +01:00
irongut 064d8225cf merge PR #98 from dependabot/actions/setup-buildx-action-2.2.1
Bump docker/setup-buildx-action from 2.0.0 to 2.2.1
2022-10-18 23:56:50 +01:00
irongut dc0965bfd6 merge PR #100 from dependabot/actions/build-push-action-3.2.0
Bump docker/build-push-action from 3.1.1 to 3.2.0
2022-10-18 23:55:53 +01:00
irongut c76d28851c merge PR #99 from dependabot/actions/metadata-action-4.1.1
Bump docker/metadata-action from 4.0.1 to 4.1.1
2022-10-18 23:54:52 +01:00
dependabot[bot] 249f92f672 Bump docker/build-push-action from 3.1.1 to 3.2.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 3.1.1 to 3.2.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/c84f38281176d4c9cdb1626ffafcd6b3911b5d94...c56af957549030174b10d6867f20e78cfd7debc5)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-18 22:53:07 +00:00
dependabot[bot] f157e9605b Bump docker/setup-buildx-action from 2.0.0 to 2.2.1
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 2.0.0 to 2.2.1.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/dc7b9719a96d48369863986a06765841d7ea23f6...8c0edbc76e98fa90f69d9a2c020dcb50019dc325)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-18 22:52:55 +00:00
irongut e4fa71f987 merge PR #97 from dependabot/actions/labeler-4.0.2
Bump actions/labeler from 4.0.1 to 4.0.2
2022-10-18 23:52:45 +01:00
dependabot[bot] 6c9b394cdc Bump docker/metadata-action from 4.0.1 to 4.1.1
Bumps [docker/metadata-action](https://github.com/docker/metadata-action) from 4.0.1 to 4.1.1.
- [Release notes](https://github.com/docker/metadata-action/releases)
- [Commits](https://github.com/docker/metadata-action/compare/69f6fc9d46f2f8bf0d5491e4aabe0bb8c6a4678a...57396166ad8aefe6098280995947635806a0e6ea)

---
updated-dependencies:
- dependency-name: docker/metadata-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-18 22:52:24 +00:00
irongut 79572a8bdc merge PR #95 from dependabot/actions/login-action-2.1.0
Bump docker/login-action from 2.0.0 to 2.1.0
2022-10-18 23:52:01 +01:00
irongut 7086c364c7 merge PR #96 from dependabot/actions/codeql-action-2.1.28
Bump github/codeql-action from 2.1.22 to 2.1.28
2022-10-18 23:51:25 +01:00
dependabot[bot] 159f0d3f03 Bump github/codeql-action from 2.1.22 to 2.1.28
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.1.22 to 2.1.28.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/b398f525a5587552e573b247ac661067fafa920b...cc7986c02bac29104a72998e67239bb5ee2ee110)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-18 21:36:07 +00:00
dependabot[bot] b371d8d706 Bump sigstore/cosign-installer from 2.5.1 to 2.8.0
Bumps [sigstore/cosign-installer](https://github.com/sigstore/cosign-installer) from 2.5.1 to 2.8.0.
- [Release notes](https://github.com/sigstore/cosign-installer/releases)
- [Commits](https://github.com/sigstore/cosign-installer/compare/b3413d484cc23cf8778c3d2aa361568d4eb54679...7cc35d7fdbe70d4278a0c96779081e6fac665f88)

---
updated-dependencies:
- dependency-name: sigstore/cosign-installer
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-18 21:35:54 +00:00
dependabot[bot] e58ef3d225 Bump actions/labeler from 4.0.1 to 4.0.2
Bumps [actions/labeler](https://github.com/actions/labeler) from 4.0.1 to 4.0.2.
- [Release notes](https://github.com/actions/labeler/releases)
- [Commits](https://github.com/actions/labeler/compare/e54e5b338fbd6e6cdb5d60f51c22335fc57c401e...5c7539237e04b714afd8ad9b4aed733815b9fab4)

---
updated-dependencies:
- dependency-name: actions/labeler
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-18 21:35:43 +00:00
irongut 8be1ea7dcd merge PR #91 from dependabot/actions/checkout-3.1.0
Bump actions/checkout from 3.0.2 to 3.1.0
2022-10-18 22:35:09 +01:00
dependabot[bot] df694edd1f Bump actions/checkout from 3.0.2 to 3.1.0
Bumps [actions/checkout](https://github.com/actions/checkout) from 3.0.2 to 3.1.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/2541b1294d2704b0964813337f33b291d3f8596b...93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-18 21:23:41 +00:00
dependabot[bot] 389bb15050 Bump docker/login-action from 2.0.0 to 2.1.0
Bumps [docker/login-action](https://github.com/docker/login-action) from 2.0.0 to 2.1.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/49ed152c8eca782a232dede0303416e8f356c37b...f4ef78c080cd8ba55a85445d5b36e214a81df20a)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-18 21:23:22 +00:00
irongut f9552f243d merge PR #94 from dependabot/actions/setup-dotnet-3.0.2
Bump actions/setup-dotnet from 2.1.0 to 3.0.2
2022-10-18 22:22:54 +01:00
dependabot[bot] 22531c6a84 Bump actions/setup-dotnet from 2.1.0 to 3.0.2
Bumps [actions/setup-dotnet](https://github.com/actions/setup-dotnet) from 2.1.0 to 3.0.2.
- [Release notes](https://github.com/actions/setup-dotnet/releases)
- [Commits](https://github.com/actions/setup-dotnet/compare/c0d4ad69d8bd405d234f1c9166d383b7a4f69ed8...4d4a70f4a5b2a5a5329f13be4ac933f2c9206ac0)

---
updated-dependencies:
- dependency-name: actions/setup-dotnet
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-13 23:39:24 +00:00
dependabot[bot] 32b97a380b Bump step-security/harden-runner from 1.4.5 to 1.5.0
Bumps [step-security/harden-runner](https://github.com/step-security/harden-runner) from 1.4.5 to 1.5.0.
- [Release notes](https://github.com/step-security/harden-runner/releases)
- [Commits](https://github.com/step-security/harden-runner/compare/dd2c410b088af7c0dc8046f3ac9a8f4148492a95...2e205a28d0e1da00c5f53b161f4067b052c61f34)

---
updated-dependencies:
- dependency-name: step-security/harden-runner
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-30 00:00:38 +00:00
irongut 58d593b91d merge PR #80 from dependabot/actions/codeql-action-2.1.22
Bump github/codeql-action from 2.1.21 to 2.1.22
2022-09-09 20:54:51 +01:00
dependabot[bot] b7e4620db9 Bump github/codeql-action from 2.1.21 to 2.1.22
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.1.21 to 2.1.22.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/c7f292ea4f542c473194b33813ccd4c207a6c725...b398f525a5587552e573b247ac661067fafa920b)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-01 23:57:22 +00:00
irongut 835f52dd6d merge PR #77 from dependabot/actions/codeql-action-2.1.21
Bump github/codeql-action from 2.1.19 to 2.1.21
2022-08-26 20:22:53 +01:00
dependabot[bot] 57a8504803 Bump github/codeql-action from 2.1.19 to 2.1.21
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.1.19 to 2.1.21.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/f5d217be74900c6ac8fbbe53f3c10376ba4e64da...c7f292ea4f542c473194b33813ccd4c207a6c725)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-25 23:41:40 +00:00
irongut de3bf184e8 merge PR #71 from dependabot/actions/assign-one-project-github-action
Bump srggrs/assign-one-project-github-action from 4d59cc619499b55ca689fb13cfcc72324a8b8435 to 1.3.1
2022-08-21 16:36:45 +01:00
irongut 0adb7a5e81 merge PR #72 from dependabot/actions/labeler
Bump actions/labeler from 472c5d3aaacde439785e94966eb2e545627f4935 to 4.0.1
2022-08-21 16:35:59 +01:00
irongut 193c3d52d4 merge PR #73 from dependabot/actions/cosign-installer
Bump sigstore/cosign-installer from c68f43abf1ae5df2528c9c250088fa14ed2d0ef5 to 2.5.1
2022-08-21 16:35:32 +01:00
irongut 4472978224 merge PR #67 from dependabot/Microsoft.VisualStudio.Azure.Containers.Tools.Targets-1.17.0
Bump Microsoft.VisualStudio.Azure.Containers.Tools.Targets from 1.16.1 to 1.17.0 in /src
2022-08-21 16:35:00 +01:00
irongut ad8e33903c merge PR #70 from dependabot/actions/checkout-3.0.2
Bump actions/checkout from 2 to 3.0.2
2022-08-21 16:34:26 +01:00
irongut b4e48dcc98 merge PR #74 from dependabot/actions/codeql-action
Update github/codeql-action requirement to f5d217be74900c6ac8fbbe53f3c10376ba4e64da
2022-08-21 16:33:29 +01:00
dependabot[bot] 2cba9cd8f8 Update github/codeql-action requirement to f5d217be74900c6ac8fbbe53f3c10376ba4e64da
Updates the requirements on [github/codeql-action](https://github.com/github/codeql-action) to permit the latest version.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/commits/f5d217be74900c6ac8fbbe53f3c10376ba4e64da)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-19 23:46:13 +00:00
dependabot[bot] 31b2f90c53 Bump sigstore/cosign-installer
Bumps [sigstore/cosign-installer](https://github.com/sigstore/cosign-installer) from c68f43abf1ae5df2528c9c250088fa14ed2d0ef5 to 2.5.1. This release includes the previously tagged commit.
- [Release notes](https://github.com/sigstore/cosign-installer/releases)
- [Commits](https://github.com/sigstore/cosign-installer/compare/c68f43abf1ae5df2528c9c250088fa14ed2d0ef5...b3413d484cc23cf8778c3d2aa361568d4eb54679)

---
updated-dependencies:
- dependency-name: sigstore/cosign-installer
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-19 00:44:36 +00:00
dependabot[bot] 3a1aab172a Bump actions/labeler
Bumps [actions/labeler](https://github.com/actions/labeler) from 472c5d3aaacde439785e94966eb2e545627f4935 to 4.0.1. This release includes the previously tagged commit.
- [Release notes](https://github.com/actions/labeler/releases)
- [Commits](https://github.com/actions/labeler/compare/472c5d3aaacde439785e94966eb2e545627f4935...e54e5b338fbd6e6cdb5d60f51c22335fc57c401e)

---
updated-dependencies:
- dependency-name: actions/labeler
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-19 00:44:33 +00:00
dependabot[bot] 80e8804405 Bump srggrs/assign-one-project-github-action
Bumps [srggrs/assign-one-project-github-action](https://github.com/srggrs/assign-one-project-github-action) from 4d59cc619499b55ca689fb13cfcc72324a8b8435 to 1.3.1. This release includes the previously tagged commit.
- [Release notes](https://github.com/srggrs/assign-one-project-github-action/releases)
- [Changelog](https://github.com/srggrs/assign-one-project-github-action/blob/master/CHANGELOG.md)
- [Commits](https://github.com/srggrs/assign-one-project-github-action/compare/4d59cc619499b55ca689fb13cfcc72324a8b8435...65a8ddab497df42ef268001e67bbf976f8fd39e1)

---
updated-dependencies:
- dependency-name: srggrs/assign-one-project-github-action
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-19 00:44:30 +00:00
dependabot[bot] be73105298 Bump actions/checkout from 2 to 3.0.2
Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 3.0.2.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v2...2541b1294d2704b0964813337f33b291d3f8596b)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-19 00:44:27 +00:00
dependabot[bot] 9dd4a48e5d Bump Microsoft.VisualStudio.Azure.Containers.Tools.Targets in /src
Bumps Microsoft.VisualStudio.Azure.Containers.Tools.Targets from 1.16.1 to 1.17.0.

---
updated-dependencies:
- dependency-name: Microsoft.VisualStudio.Azure.Containers.Tools.Targets
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-16 23:47:20 +00:00
irongut a989a1acc2 merge PR #65 Add Dockerfile linter
PR: Add Dockerfile linter
2022-08-14 02:17:23 +01:00
irongut b5c414e325 add hadolint Dockerfile linter 2022-08-14 02:14:19 +01:00
irongut 3d044cdcd5 merge PR #64 from dependabot/actions/harden-runner-1.4.5
Bump step-security/harden-runner from 1.4.4 to 1.4.5
2022-08-13 19:23:52 +01:00
irongut 3a7e9990c1 merge PR #63 from dependabot/actions/build-push-action-3.1.1
Bump docker/build-push-action from 3.1.0 to 3.1.1
2022-08-13 19:22:48 +01:00
dependabot[bot] 7142272b0a Bump step-security/harden-runner from 1.4.4 to 1.4.5
Bumps [step-security/harden-runner](https://github.com/step-security/harden-runner) from 1.4.4 to 1.4.5.
- [Release notes](https://github.com/step-security/harden-runner/releases)
- [Commits](https://github.com/step-security/harden-runner/compare/74b568e8591fbb3115c70f3436a0c6b0909a8504...dd2c410b088af7c0dc8046f3ac9a8f4148492a95)

---
updated-dependencies:
- dependency-name: step-security/harden-runner
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-12 23:37:51 +00:00
irongut 23dcb1b683 updated readme 2022-08-08 00:19:10 +01:00
dependabot[bot] d5f059c9e5 Bump docker/build-push-action from 3.1.0 to 3.1.1
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 3.1.0 to 3.1.1.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/1cb9d22b932e4832bb29793b7777ec860fc1cde0...c84f38281176d4c9cdb1626ffafcd6b3911b5d94)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-05 23:36:29 +00:00
irongut 84eac7e593 merge PR #62 Implement StepSecurity Secure Workflows (policy)
PR: Implement StepSecurity Secure Workflows (policy)
2022-08-05 23:57:50 +01:00
irongut 74295b4928 implement stepsecurity policy for release workflow #51 2022-08-05 23:47:41 +01:00
irongut 3216094ffb implement stepsecurity policy for ci build workflow #51 2022-08-05 23:26:04 +01:00
irongut 59bf0ee52a implement stepsecurity policy for codeql workflow #51 2022-08-05 23:22:45 +01:00
irongut 9702896171 implement stepsecurity policy for pm workflows #51 2022-08-05 23:22:13 +01:00
irongut 7c7e56f29d merge PR #59 from dependabot/actions/metadata-action-4.0.1
Bump docker/metadata-action from 3.8.0 to 4.0.1
2022-08-02 23:46:13 +01:00
dependabot[bot] a75666af65 Bump docker/metadata-action from 3.8.0 to 4.0.1
Bumps [docker/metadata-action](https://github.com/docker/metadata-action) from 3.8.0 to 4.0.1.
- [Release notes](https://github.com/docker/metadata-action/releases)
- [Upgrade guide](https://github.com/docker/metadata-action/blob/master/UPGRADE.md)
- [Commits](https://github.com/docker/metadata-action/compare/b2391d37b4157fa4aa2e118d643f417910ff3242...69f6fc9d46f2f8bf0d5491e4aabe0bb8c6a4678a)

---
updated-dependencies:
- dependency-name: docker/metadata-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-01 23:55:58 +00:00
irongut 76f7177ccc merge PR #55 from dependabot/actions/build-push-action-3.1.0
Bump docker/build-push-action from 2.10.0 to 3.1.0
2022-07-31 02:44:49 +01:00
irongut ba2d454f72 merge PR #57 from dependabot/actions/login-action-2
Bump docker/login-action from 1.14.1 to 2
2022-07-31 02:43:23 +01:00
irongut 1fa57f12ee merge PR #58 from dependabot/actions/setup-dotnet-2.1.0
Bump actions/setup-dotnet from 1.9.1 to 2.1.0
2022-07-31 02:25:00 +01:00
irongut a325aae56f merge PR #54 from dependabot/actions/assign-pr-to-author-1.0.2
Bump samspills/assign-pr-to-author from 1.0.1 to 1.0.2
2022-07-31 02:23:56 +01:00
irongut a7dfd386d4 merge PR #56 from dependabot/actions/stale-5.1.1
Bump actions/stale from 3.0.19 to 5.1.1
2022-07-31 02:23:16 +01:00
dependabot[bot] fbd7727617 Bump actions/setup-dotnet from 1.9.1 to 2.1.0
Bumps [actions/setup-dotnet](https://github.com/actions/setup-dotnet) from 1.9.1 to 2.1.0.
- [Release notes](https://github.com/actions/setup-dotnet/releases)
- [Commits](https://github.com/actions/setup-dotnet/compare/608ee757cfcce72c2e91e99aca128e0cae67de87...c0d4ad69d8bd405d234f1c9166d383b7a4f69ed8)

---
updated-dependencies:
- dependency-name: actions/setup-dotnet
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-31 01:15:36 +00:00
dependabot[bot] f181f0fb43 Bump docker/login-action from 1.14.1 to 2
Bumps [docker/login-action](https://github.com/docker/login-action) from 1.14.1 to 2.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/dd4fa0671be5250ee6f50aedf4cb05514abda2c7...49ed152c8eca782a232dede0303416e8f356c37b)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-31 01:15:29 +00:00
dependabot[bot] 5c41ceee77 Bump actions/stale from 3.0.19 to 5.1.1
Bumps [actions/stale](https://github.com/actions/stale) from 3.0.19 to 5.1.1.
- [Release notes](https://github.com/actions/stale/releases)
- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/stale/compare/98ed4cb500039dbcccf4bd9bedada4d0187f2757...9c1b1c6e115ca2af09755448e0dbba24e5061cc8)

---
updated-dependencies:
- dependency-name: actions/stale
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-31 01:15:24 +00:00
dependabot[bot] 65997c5b86 Bump docker/build-push-action from 2.10.0 to 3.1.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 2.10.0 to 3.1.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/ac9327eae2b366085ac7f6a2d02df8aa8ead720a...1cb9d22b932e4832bb29793b7777ec860fc1cde0)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-31 01:15:18 +00:00
dependabot[bot] e8b30e8bdc Bump samspills/assign-pr-to-author from 1.0.1 to 1.0.2
Bumps [samspills/assign-pr-to-author](https://github.com/samspills/assign-pr-to-author) from 1.0.1 to 1.0.2.
- [Release notes](https://github.com/samspills/assign-pr-to-author/releases)
- [Commits](https://github.com/samspills/assign-pr-to-author/compare/223a87a821f7e7447cfb5221bc53ceeb633341c2...b313feb250ff414d3aff26525b986f080ee7bd7a)

---
updated-dependencies:
- dependency-name: samspills/assign-pr-to-author
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-31 01:15:14 +00:00
irongut c0fec16186 add actions to dependabot config 2022-07-31 02:14:37 +01:00
irongut 52d447d8ec added openssf + codeql status badges 2022-07-31 01:11:06 +01:00
irongut e4b6675d33 add MATLAB test file 2022-07-31 00:57:11 +01:00
irongut 155e9dc09c update codeql workflow 2022-07-30 23:09:03 +01:00
irongut 12259bb15f setup codeql scanning 2022-07-30 23:06:59 +01:00
irongut cde20e0aef updated supported version 2022-07-30 22:59:18 +01:00
irongut 51cc3a756d prepare v1.3.0 release 2022-07-29 16:50:11 +01:00
irongut df43d7d643 updated test workflow 2022-07-27 00:51:05 +01:00
irongut 8accb9dd63 prepare v1.3.0-beta release 2022-07-27 00:34:24 +01:00
irongut 21fb9f6797 merge PR #53 MATLAB compatibility
PR: MATLAB compatibility
2022-07-26 23:35:31 +01:00
irongut 05b101a9e5 handle NaN in branch + complexity values #46 2022-07-26 01:39:53 +01:00
irongut 405344bb11 add security policy 2022-07-25 02:26:32 +01:00
irongut 6575f73c8b merge PR #52 Sign Docker image on release
PR: Sign Docker image on release
2022-07-24 22:35:06 +01:00
irongut 9d67d209d5 remove workflow permissions from assign PR to author 2022-07-24 22:27:52 +01:00
irongut f055ebd021 sign Docker image on release #32 2022-07-24 22:16:13 +01:00
irongut 5783d61eba merge PR #50 Implement StepSecurity Secure Workflows
PR: Implement StepSecurity Secure Workflows
2022-07-24 21:59:44 +01:00
irongut 7ede3df512 add permissions to assign PR to author #49 2022-07-24 21:56:20 +01:00
irongut 4149d3cd42 remove workflow permissions from assign PR to author #49 2022-07-24 21:40:38 +01:00
irongut e585016ed7 remove workflow permissions from assign PR to author #49 2022-07-24 21:33:43 +01:00
irongut 875e6d6260 use StepSecurity Secure Workflows for project management #49 2022-07-24 21:22:31 +01:00
irongut 8e03759e2f use StepSecurity Secure Workflows for builds #49 2022-07-24 21:14:28 +01:00
irongut 7cdc061845 merge PR #44 from dependabot/Microsoft.VisualStudio.Azure.Containers.Tools.Targets-1.16.1
Bump Microsoft.VisualStudio.Azure.Containers.Tools.Targets from 1.14.0 to 1.16.1
2022-07-24 18:28:00 +01:00
dependabot[bot] 4a8d89664f Bump Microsoft.VisualStudio.Azure.Containers.Tools.Targets
Bumps Microsoft.VisualStudio.Azure.Containers.Tools.Targets from 1.14.0 to 1.16.1.

---
updated-dependencies:
- dependency-name: Microsoft.VisualStudio.Azure.Containers.Tools.Targets
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-24 17:24:09 +00:00
irongut 92459b634d merge PR #40 from dependabot/Microsoft.VisualStudio.Azure.Containers.Tools.Targets-1.15.1
Bump Microsoft.VisualStudio.Azure.Containers.Tools.Targets from 1.14.0 to 1.15.1
2022-07-24 18:23:49 +01:00
irongut 7f81eacb3c merge PR #42 from dependabot/CommandLineParser-2.9.1
Bump CommandLineParser from 2.8.0 to 2.9.1
2022-07-24 18:23:19 +01:00
dependabot[bot] c34bdfe66a Bump CommandLineParser from 2.8.0 to 2.9.1
Bumps [CommandLineParser](https://github.com/commandlineparser/commandline) from 2.8.0 to 2.9.1.
- [Release notes](https://github.com/commandlineparser/commandline/releases)
- [Changelog](https://github.com/commandlineparser/commandline/blob/master/CHANGELOG.md)
- [Commits](https://github.com/commandlineparser/commandline/compare/2.8.0...v2.9.1)

---
updated-dependencies:
- dependency-name: CommandLineParser
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-17 23:09:57 +00:00
dependabot[bot] 85a9fe6bb1 Bump Microsoft.VisualStudio.Azure.Containers.Tools.Targets
Bumps Microsoft.VisualStudio.Azure.Containers.Tools.Targets from 1.14.0 to 1.15.1.

---
updated-dependencies:
- dependency-name: Microsoft.VisualStudio.Azure.Containers.Tools.Targets
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-18 23:11:54 +00:00
irongut 5b38ba1306 merge PR #37 Improve Simplecov compatibility
PR: Improve Simplecov compatibility
2022-02-19 18:21:36 +00:00
irongut 7b1923cbc6 improved generated package names when names missing 2022-02-19 18:10:29 +00:00
irongut 1699cd4b65 improved error messages #33 2022-02-19 18:02:02 +00:00
irongut 4c876916c9 use AsSpan instead of SubString 2022-02-19 03:28:59 +00:00
irongut 1c5e7f1a60 improved error handling when parsing coverage files #33 2022-02-19 03:25:34 +00:00
irongut 9196cf3448 dont fail if branch metrics missing #33 2022-02-19 02:37:17 +00:00
irongut baf620bf17 merge PR #35 Glob Pattern Matching
PR: Glob Pattern Matching
2022-02-19 02:03:05 +00:00
irongut bc2adc7690 use glob pattern in workflows #31 2022-02-19 01:46:18 +00:00
irongut ce279ec14b error if no files match glob pattern #31 2022-02-19 01:40:00 +00:00
irongut 009a5455b8 use glob pattern matching #31 2022-02-19 01:35:28 +00:00
irongut 0d078db7cc added Microsoft.Extensions.FileSystemGlobbing #31 2022-02-19 01:08:32 +00:00
irongut 65684d3463 addded versioning to readme 2022-02-19 00:40:08 +00:00
irongut a6a88c76f7 added sImplecov note to readme 2022-02-18 01:18:48 +00:00
irongut 5088d5eb31 prepare v1.2.0 release 2021-11-25 21:53:22 +00:00
irongut ee53bdd6c5 updated workflows 2021-11-25 20:44:07 +00:00
irongut 6a542ff4b0 updated test workflows 2021-11-25 20:29:07 +00:00
irongut 46bc9869d5 updated test workflow 2021-11-24 23:33:15 +00:00
irongut 97f4a52b81 fixed release build workflow 2021-11-24 22:01:43 +00:00
irongut 95ea154a7b prepare v1.2.0-beta release 2021-11-24 21:47:59 +00:00
irongut 2e00d30f70 merge PR #30 Update to .Net 6 2021-11-24 20:27:20 +00:00
irongut c4d4b9a087 updated build workflows to .Net 6 #23 2021-11-24 00:34:44 +00:00
irongut ea5d3b417b updated build workflows to .Net 6 #23 2021-11-24 00:32:25 +00:00
irongut 3d33fafb37 updated Docker launch settings 2021-11-24 00:24:33 +00:00
irongut 3a41f0a5ea reduced number of Docker image layers 2021-11-23 21:54:11 +00:00
irongut dd5c8d3b75 updated Dockerfile to .Net 6 #23 2021-11-23 20:56:58 +00:00
irongut 4986e930de updated CLI to .Net 6 #23 2021-11-23 01:08:46 +00:00
irongut 37dca42320 added Assign to Project workflow 2021-11-22 02:19:37 +00:00
irongut 5ec10c1882 updated assign-pr-to-author action 2021-11-22 02:10:34 +00:00
irongut 56c9f3d623 merge PR #29 add PR Labeler action
PR: add PR Labeler action
2021-11-22 02:05:16 +00:00
irongut f36c88a82b configure pr labeler 2021-11-22 02:00:18 +00:00
irongut ffe316d009 added pr labeler action 2021-11-22 01:33:05 +00:00
irongut 1ea9b55e4d merge PR #27 from dependabot/Microsoft.VisualStudio.Azure.Containers.Tools.Targets-1.14.0
Bump Microsoft.VisualStudio.Azure.Containers.Tools.Targets from 1.11.1 to 1.14.0
2021-11-16 10:32:40 +00:00
dependabot[bot] fcb924f622 Bump Microsoft.VisualStudio.Azure.Containers.Tools.Targets
Bumps Microsoft.VisualStudio.Azure.Containers.Tools.Targets from 1.11.1 to 1.14.0.

---
updated-dependencies:
- dependency-name: Microsoft.VisualStudio.Azure.Containers.Tools.Targets
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-11-15 23:08:36 +00:00
irongut ed588922f2 merge PR #26 Support multiple cobertura files
PR: Support multiple cobertura files
2021-11-15 01:21:55 +00:00
irongut 6e12bd152f removed commented line 2021-11-15 00:33:15 +00:00
irongut 4ae964bab0 update ci build test command line #19 2021-11-15 00:24:46 +00:00
irongut 60646036b5 support multiple cobertura files in action definition #19 2021-11-15 00:18:30 +00:00
irongut 1c2edd9230 support multiple cobertura files in CLI #19 2021-11-14 23:51:30 +00:00
irongut 9caa66feee merge PR #25 Allow hiding Branch Rate + Complexity values in output
PR: Allow hiding Branch Rate + Complexity values in output
2021-11-14 00:41:09 +00:00
irongut 6c68cb69dd added hide branch rate + complexity to action definition #22 2021-11-13 23:53:03 +00:00
irongut 914b6fe5f9 fixed summary complexity should be bold in md output 2021-11-13 22:35:52 +00:00
irongut 46007a7270 hide branch rate + complexity for markdown output #22 2021-11-13 22:29:15 +00:00
irongut 71ae720dab hide branch rate + complexity for text output #22 2021-11-13 21:55:29 +00:00
irongut dd7d40d268 added hide branch + complixity CLI options #22 2021-11-13 21:29:36 +00:00
irongut 065eaf7bb5 prepare v1.1.0 release 2021-10-27 22:35:09 +01:00
irongut a5c4e90cbe updated readme 2021-10-27 00:41:20 +01:00
irongut f89139ddac updated test action 2021-10-26 23:53:11 +01:00
24 changed files with 1580 additions and 144 deletions
+7 -1
View File
@@ -1,7 +1,13 @@
version: 2
updates:
- package-ecosystem: nuget
directory: "/"
directory: "/src"
schedule:
interval: daily
open-pull-requests-limit: 10
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"
open-pull-requests-limit: 5
+31
View File
@@ -0,0 +1,31 @@
# Configuration for PR Labeller Action
# See: https://github.com/actions/labeler/blob/master/README.md
# Examples
# Add 'label1' to PR if anything changes within 'example' folder or any subfolders
# label1:
# - example/**/*
# Add 'label2' to PR if any file changes within 'example2' folder
# label2: example2/*
Action:
- action.yml
Docker:
- Dockerfile
- .dockerignore
Options:
- src/CodeCoverageSummary/CommandLineOptions.cs
Parsing:
- src/CodeCoverageSummary/CodeSummary.cs
- src/CodeCoverageSummary/Program.cs
Summary:
- src/CodeCoverageSummary/CodeSummary.cs
- src/CodeCoverageSummary/Program.cs
DevOps:
- .github/**/*
+55
View File
@@ -0,0 +1,55 @@
name: Assign to Project
on:
issues:
types: [opened, labeled]
pull_request:
types: [opened, labeled]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
permissions:
contents: read
jobs:
assign-to-project:
permissions:
repository-projects: write # for srggrs/assign-one-project-github-action to assign issues and PRs to repo project
runs-on: ubuntu-latest
name: Assign to Project
steps:
- name: Harden Runner
uses: step-security/harden-runner@2e205a28d0e1da00c5f53b161f4067b052c61f34
with:
egress-policy: block
allowed-endpoints: >
api.github.com:443
- name: Assign Issues to Bugs
uses: srggrs/assign-one-project-github-action@65a8ddab497df42ef268001e67bbf976f8fd39e1
if: contains(github.event.issue.labels.*.name, 'bug')
with:
project: 'https://github.com/irongut/CodeCoverageSummary/projects/1'
column_name: 'Needs triage'
- name: Assign Issues to Enhancements
uses: srggrs/assign-one-project-github-action@65a8ddab497df42ef268001e67bbf976f8fd39e1
if: contains(github.event.issue.labels.*.name, 'enhancement')
with:
project: 'https://github.com/irongut/CodeCoverageSummary/projects/2'
column_name: 'To do'
- name: Assign PRs to Bugs
uses: srggrs/assign-one-project-github-action@65a8ddab497df42ef268001e67bbf976f8fd39e1
if: contains(github.event.pull_request.labels.*.name, 'bug')
with:
project: 'https://github.com/irongut/CodeCoverageSummary/projects/1'
column_name: 'In Progress'
- name: Assign PRs to Enhancements
uses: srggrs/assign-one-project-github-action@65a8ddab497df42ef268001e67bbf976f8fd39e1
if: contains(github.event.pull_request.labels.*.name, 'enhancement')
with:
project: 'https://github.com/irongut/CodeCoverageSummary/projects/2'
column_name: 'In Progress'
+13 -3
View File
@@ -2,14 +2,24 @@
# https://github.com/samspills/assign-pr-to-author
name: Auto Assign PR
on: [pull_request]
on:
pull_request:
types: [opened]
jobs:
assignAuthor:
runs-on: ubuntu-latest
steps:
- name: Harden Runner
uses: step-security/harden-runner@2e205a28d0e1da00c5f53b161f4067b052c61f34
with:
egress-policy: block
allowed-endpoints: >
api.github.com:443
- name: Auto Assign PR
uses: samspills/assign-pr-to-author@v1.0
if: github.event_name == 'pull_request' && github.event.action == 'opened'
uses: samspills/assign-pr-to-author@b313feb250ff414d3aff26525b986f080ee7bd7a
with:
repo-token: '${{ secrets.GITHUB_TOKEN }}'
+25 -5
View File
@@ -6,18 +6,38 @@ on:
pull_request:
branches: [ master ]
permissions:
contents: read
env:
DOTNET_NOLOGO: true # Disable the .NET logo in the console output
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true # Disable the .NET first time experience to skip caching NuGet packages and speed up the build
DOTNET_CLI_TELEMETRY_OPTOUT: true # Disable sending .NET CLI telemetry to Microsoft
jobs:
build:
runs-on: ubuntu-latest
name: CI Build
steps:
- name: Harden Runner
uses: step-security/harden-runner@2e205a28d0e1da00c5f53b161f4067b052c61f34
with:
egress-policy: block
allowed-endpoints: >
api.nuget.org:443
dotnetbuilds.azureedge.net:443
dotnetcli.azureedge.net:443
dotnetcli.blob.core.windows.net:443
github.com:443
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
- name: Setup .Net
uses: actions/setup-dotnet@v1
uses: actions/setup-dotnet@4d4a70f4a5b2a5a5329f13be4ac933f2c9206ac0
with:
dotnet-version: 5.0.x
dotnet-version: 6.0.x
- name: Restore Dependencies
run: dotnet restore src/CodeCoverageSummary.sln
@@ -25,5 +45,5 @@ jobs:
- name: Build CodeCoverageSummary
run: dotnet build src/CodeCoverageSummary.sln --configuration Release --no-restore
- name: Test with sample file
run: dotnet src/CodeCoverageSummary/bin/Release/net5.0/CodeCoverageSummary.dll src/coverage.cobertura.xml --badge true
- name: Test with sample files
run: dotnet src/CodeCoverageSummary/bin/Release/net6.0/CodeCoverageSummary.dll --files **/coverage.*.xml --badge true
+73
View File
@@ -0,0 +1,73 @@
name: CodeQL Scan
on:
push:
branches: [ "master" ]
paths-ignore:
- '**/*.md'
- '**/*.gitignore'
- '**/*.gitattributes'
pull_request:
branches: [ "master" ]
schedule:
- cron: '15 5 * * 5'
permissions: # added using https://github.com/step-security/secure-workflows
contents: read
env:
DOTNET_NOLOGO: true # Disable the .NET logo in the console output
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true # Disable the .NET first time experience to skip caching NuGet packages and speed up the build
DOTNET_CLI_TELEMETRY_OPTOUT: true # Disable sending .NET CLI telemetry to Microsoft
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [ 'csharp' ]
steps:
- name: Harden Runner
uses: step-security/harden-runner@2e205a28d0e1da00c5f53b161f4067b052c61f34
with:
egress-policy: block
allowed-endpoints: >
api.github.com:443
api.nuget.org:443
dotnetbuilds.azureedge.net:443
dotnetcli.azureedge.net:443
dotnetcli.blob.core.windows.net:443
github.com:443
uploads.github.com:443
- name: Checkout repository
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
- name: Initialize CodeQL
uses: github/codeql-action/init@cc7986c02bac29104a72998e67239bb5ee2ee110
with:
languages: ${{ matrix.language }}
# queries: security-extended,security-and-quality # https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
- name: Setup .Net
uses: actions/setup-dotnet@4d4a70f4a5b2a5a5329f13be4ac933f2c9206ac0
with:
dotnet-version: 6.0.x
- name: Restore Dependencies
run: dotnet restore src/CodeCoverageSummary.sln
- name: Build CodeCoverageSummary
run: dotnet build src/CodeCoverageSummary.sln --configuration Release --no-restore /p:UseSharedCompilation=false
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@cc7986c02bac29104a72998e67239bb5ee2ee110
+51
View File
@@ -0,0 +1,51 @@
# hadolint is a Dockerfile linter written in Haskell
# More details at https://github.com/hadolint/hadolint
name: Docker Linter
on:
push:
branches: [ "master" ]
paths-ignore:
- '**/*.md'
- '**/*.gitignore'
- '**/*.gitattributes'
pull_request:
branches: [ "master" ]
workflow_dispatch:
schedule:
- cron: '35 11 * * 0'
permissions:
contents: read
jobs:
hadolint:
name: Run hadolint scan
runs-on: ubuntu-latest
permissions:
contents: read # for actions/checkout
security-events: write # for github/codeql-action/upload-sarif
steps:
- name: Harden Runner
uses: step-security/harden-runner@2e205a28d0e1da00c5f53b161f4067b052c61f34
with:
egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs
- name: Checkout
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
- name: Run hadolint
uses: hadolint/hadolint-action@f988afea3da57ee48710a9795b6bb677cc901183
with:
dockerfile: ./Dockerfile
format: sarif
output-file: hadolint-results.sarif
no-fail: true
- name: Upload Results
uses: github/codeql-action/upload-sarif@cc7986c02bac29104a72998e67239bb5ee2ee110
with:
sarif_file: hadolint-results.sarif
wait-for-processing: true
+15 -2
View File
@@ -4,14 +4,27 @@ on:
schedule:
- cron: "30 1 * * *"
permissions:
contents: read
jobs:
stale:
permissions:
issues: write # for actions/stale to close stale issues
pull-requests: write # for actions/stale to close stale PRs
runs-on: ubuntu-latest
steps:
- name: Harden Runner
uses: step-security/harden-runner@2e205a28d0e1da00c5f53b161f4067b052c61f34
with:
egress-policy: block
allowed-endpoints: >
api.github.com:443
- name: Mark Stale
uses: actions/stale@v3
uses: actions/stale@9c1b1c6e115ca2af09755448e0dbba24e5061cc8
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
exempt-all-milestones: true
+30
View File
@@ -0,0 +1,30 @@
# Applies labels to pull requests based on paths & files modified in the pull request.
#
# .github/labeler.yml contains the list of labels & files / folders to match, see:
# https://github.com/actions/labeler/blob/master/README.md
name: PR Labeler
on:
pull_request_target:
permissions:
contents: read
jobs:
label:
permissions:
contents: read # for actions/labeler to determine modified files
pull-requests: write # for actions/labeler to add labels to PRs
runs-on: ubuntu-latest
steps:
- name: Harden Runner
uses: step-security/harden-runner@2e205a28d0e1da00c5f53b161f4067b052c61f34
with:
egress-policy: block
allowed-endpoints: >
api.github.com:443
- uses: actions/labeler@5c7539237e04b714afd8ad9b4aed733815b9fab4
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
+63 -30
View File
@@ -4,7 +4,13 @@ on:
release:
types: [published]
permissions:
contents: read
env:
DOTNET_NOLOGO: true # Disable the .NET logo in the console output
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true # Disable the .NET first time experience to skip caching NuGet packages and speed up the build
DOTNET_CLI_TELEMETRY_OPTOUT: true # Disable sending .NET CLI telemetry to Microsoft
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
@@ -13,15 +19,27 @@ jobs:
name: Test Build
runs-on: ubuntu-latest
steps:
- name: Harden Runner
uses: step-security/harden-runner@2e205a28d0e1da00c5f53b161f4067b052c61f34
with:
egress-policy: block
allowed-endpoints: >
api.nuget.org:443
dotnetbuilds.azureedge.net:443
dotnetcli.azureedge.net:443
dotnetcli.blob.core.windows.net:443
github.com:443
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
with:
fetch-depth: 0
- name: Setup .Net
uses: actions/setup-dotnet@v1
uses: actions/setup-dotnet@4d4a70f4a5b2a5a5329f13be4ac933f2c9206ac0
with:
dotnet-version: 5.0.x
dotnet-version: 6.0.x
- name: Restore Dependencies
run: dotnet restore src/CodeCoverageSummary.sln
@@ -30,29 +48,7 @@ jobs:
run: dotnet build src/CodeCoverageSummary.sln --configuration Release --no-restore
- name: Test with sample file
run: dotnet src/CodeCoverageSummary/bin/Release/net5.0/CodeCoverageSummary.dll src/coverage.cobertura.xml --badge true
- name: Get Previous Tag
id: get_previous_tag
run: |
PREV_TAG=$(git describe --abbrev=0 --tags "${{ github.ref }}^")
echo "::set-output name=baseRef::${PREV_TAG}"
- name: Generate Changelog
id: generate_changelog
uses: nblagoev/pull-release-notes-action@v1.0.2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
base-ref: ${{ steps.get_previous_tag.outputs.baseRef }}
head-ref: ${{ github.ref }}
- name: Add Changelog to Release
uses: irongut/EditRelease@v1.0.0
with:
token: ${{ secrets.GITHUB_TOKEN }}
id: ${{ github.event.release.id }}
body: ${{ steps.generate_changelog.outputs.result }}
run: dotnet src/CodeCoverageSummary/bin/Release/net6.0/CodeCoverageSummary.dll --files **/coverage.*.xml --badge true
deploy:
name: Deploy to GHCR
@@ -61,12 +57,40 @@ jobs:
permissions:
contents: read
packages: write
id-token: write # Used for identity challenge with sigstore/fulcio
steps:
- name: Harden Runner
uses: step-security/harden-runner@2e205a28d0e1da00c5f53b161f4067b052c61f34
with:
egress-policy: block
allowed-endpoints: >
api.github.com:443
api.nuget.org:443
auth.docker.io:443
fulcio.sigstore.dev:443
ghcr.io:443
github.com:443
mcr.microsoft.com:443
pipelines.actions.githubusercontent.com:443
pkg-containers.githubusercontent.com:443
registry-1.docker.io:443
storage.googleapis.com:443
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
- name: Install Cosign
uses: sigstore/cosign-installer@9becc617647dfa20ae7b1151972e9b3a2c338a2b
with:
cosign-release: 'v1.9.0'
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@8c0edbc76e98fa90f69d9a2c020dcb50019dc325
- name: Login to GitHub Container Registry
uses: docker/login-action@v1
uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.repository_owner }}
@@ -74,14 +98,23 @@ jobs:
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@v3
uses: docker/metadata-action@57396166ad8aefe6098280995947635806a0e6ea
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
- name: Build + Push Docker image
uses: docker/build-push-action@v2
id: build-and-push
uses: docker/build-push-action@c56af957549030174b10d6867f20e78cfd7debc5
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
# Sign the Docker image digest
# Uses the identity token to provision an ephemeral certificate against the community Fulcio instance
# https://github.com/sigstore/cosign
- name: Sign the Docker image
env:
COSIGN_EXPERIMENTAL: "true"
run: echo "${{ steps.meta.outputs.tags }}" | xargs -I {} cosign sign {}@${{ steps.build-and-push.outputs.digest }}
+13 -3
View File
@@ -2,7 +2,6 @@ name: Test Linux Runner
on:
workflow_dispatch:
branches: [master]
permissions:
contents: read
@@ -11,8 +10,19 @@ jobs:
runs-on: ubuntu-latest
name: CI Build
steps:
- name: Checkout
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
- name: Test Action
uses: irongut/CodeCoverageSummary@master
with:
filename: '/app/sample.coverage.xml'
badge: 'true'
filename: /src/coverage.*.xml
badge: true
fail_below_min: true
format: markdown
hide_branch_rate: false
hide_complexity: true
indicators: true
output: both
thresholds: '60 80'
+9 -2
View File
@@ -14,5 +14,12 @@ jobs:
- name: Test Action
uses: irongut/CodeCoverageSummary@master
with:
filename: '/app/sample.coverage.xml'
badge: 'true'
filename: /app/sample.coverage.xml,/app/sample.coverage.xml
badge: true
fail_below_min: true
format: markdown
hide_branch_rate: false
hide_complexity: true
indicators: true
output: both
thresholds: '60 80'
+9 -2
View File
@@ -14,5 +14,12 @@ jobs:
- name: Test Action
uses: irongut/CodeCoverageSummary@master
with:
filename: '/app/sample.coverage.xml'
badge: 'true'
filename: /app/sample.coverage.xml,/app/sample.coverage.xml
badge: true
fail_below_min: true
format: markdown
hide_branch_rate: false
hide_complexity: true
indicators: true
output: both
thresholds: '60 80'
+6 -7
View File
@@ -1,11 +1,10 @@
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
COPY ["src/coverage.cobertura.xml", "/publish/sample.coverage.xml"]
WORKDIR /src
COPY ["src/CodeCoverageSummary/CodeCoverageSummary.csproj", "CodeCoverageSummary/"]
RUN dotnet restore CodeCoverageSummary/CodeCoverageSummary.csproj
COPY ["src/CodeCoverageSummary", "CodeCoverageSummary/"]
COPY ["src/coverage.cobertura.xml", "sample.coverage.xml"]
RUN dotnet build CodeCoverageSummary/CodeCoverageSummary.csproj --configuration Release --no-restore --output /app/build
RUN dotnet publish CodeCoverageSummary/CodeCoverageSummary.csproj --configuration Release --no-restore --output /app/publish
RUN dotnet publish CodeCoverageSummary/CodeCoverageSummary.csproj --configuration Release --no-restore --output /publish
# Label the container
LABEL maintainer="Irongut <murray.dave@outlook.com>"
@@ -18,8 +17,8 @@ LABEL com.github.actions.description="A GitHub Action that reads Cobertura forma
LABEL com.github.actions.icon="book-open"
LABEL com.github.actions.color="purple"
FROM mcr.microsoft.com/dotnet/runtime:5.0 AS final
FROM mcr.microsoft.com/dotnet/runtime:6.0 AS final
WORKDIR /app
COPY --from=build /app/publish .
COPY --from=build /src/sample.coverage.xml .
COPY --from=build /publish .
ENV DOTNET_EnableDiagnostics=0
ENTRYPOINT ["dotnet", "/app/CodeCoverageSummary.dll"]
+95 -32
View File
@@ -1,39 +1,72 @@
# Code Coverage Summary
<div align="center">
![.NET 6.0](https://img.shields.io/badge/Version-.NET%206.0-informational?style=flat&logo=dotnet)
&nbsp;
![Built With Docker](https://img.shields.io/badge/Built_With-Docker-informational?style=flat&logo=docker)
&nbsp;
[![OpenSSF Best Practices](https://bestpractices.coreinfrastructure.org/projects/6292/badge)](https://bestpractices.coreinfrastructure.org/projects/6292)
&nbsp;
[![CI Build](https://github.com/irongut/CodeCoverageSummary/actions/workflows/ci-build.yml/badge.svg)](https://github.com/irongut/CodeCoverageSummary/actions/workflows/ci-build.yml)
&nbsp;
[![CodeQL Scan](https://github.com/irongut/CodeCoverageSummary/actions/workflows/codeql-scan.yml/badge.svg)](https://github.com/irongut/CodeCoverageSummary/actions/workflows/codeql-scan.yml)
</div>
A GitHub Action that reads Cobertura format code coverage files from your test suite and outputs a text or markdown summary. This summary can be posted as a Pull Request comment or included in Release Notes by other actions to give you an immediate insight into the health of your code without using a third-party site.
Code Coverage Summary is designed for use with [Coverlet](https://github.com/coverlet-coverage/coverlet) and [gcovr](https://github.com/gcovr/gcovr) but it should work with any test framework that outputs coverage in Cobertura format.
Code Coverage Summary is designed for use with any test framework that outputs coverage in Cobertura XML format including [Coverlet](https://github.com/coverlet-coverage/coverlet), [gcovr](https://github.com/gcovr/gcovr), [simplecov](https://github.com/simplecov-ruby/simplecov) and [MATLAB](https://uk.mathworks.com/help/matlab/ref/matlab.unittest.plugins.codecoverageplugin-class.html). See the [FAQ](https://github.com/irongut/CodeCoverageSummary/wiki/Frequently-Asked-Questions#which-testing-tools-does-ccs-work-with) for more details. If it doesn't work with your tooling please [open an issue][new-issue] to discuss the problem.
Code Coverage Summary is compatible with [StepSecurity Secure Workflows](https://github.com/step-security/secure-workflows) and uses a Docker image that is cryptographically signed using [Sigstore](https://www.sigstore.dev/). For instructions how to verify the Docker image please see the [Wiki](https://github.com/irongut/CodeCoverageSummary/wiki/Verify-the-Docker-Image).
**As a Docker based action Code Coverage Summary requires a Linux runner.**
As a Docker based action Code Coverage Summary requires a Linux runner, see [Types of Action](https://docs.github.com/en/actions/creating-actions/about-custom-actions#types-of-actions). If you need to build with a Windows or MacOS runner a workaround would be to upload the coverage file as an artifact and use a separate job with a Linux runner to generate the summary.
## Inputs
#### `filename`
### `filename`
**Required**
Code coverage file to analyse.
A comma separated list of code coverage files to analyse. Also supports using glob patterns to match multiple files. If there are any spaces in a path or filename this value must be in quotes.
Note: Coverlet creates the coverage file in a random named directory (guid) so you need to copy it to a predictable path before running this Action, see the [.Net 5 Workflow Example](#net-5-workflow-example) below.
#### `badge`
### `badge`
Include a badge reporting the Line Rate coverage in the output using [shields.io](https://shields.io/) - `true` or `false` (default).
If the overall Line Rate is less than the lower threshold (50%) the badge will be red, if it is between thresholds it will be yellow and if it greater than or equal to the higher threshold (75%) it will be green. See [`thresholds`](#thresholds) to change these values.
Line Rate | Badge
--------- | -----
less than lower threshold (50%) | ![Code Coverage](https://img.shields.io/badge/Code%20Coverage-45%25-critical?style=flat)
between thresholds (50% - 74%) | ![Code Coverage](https://img.shields.io/badge/Code%20Coverage-65%25-yellow?style=flat)
equal or greater than upper threshold (75%) | ![Code Coverage](https://img.shields.io/badge/Code%20Coverage-83%25-success?style=flat)
#### `fail_below_min`
**v1.1.0-beta only**
See [`thresholds`](#thresholds) to change these values.
### `fail_below_min`
Fail the workflow if the overall Line Rate is below lower threshold - `true` or `false` (default). The default lower threshold is 50%, see [`thresholds`](#thresholds).
#### `format`
### `format`
Output Format - `markdown` or `text` (default).
#### `indicators`
**v1.1.0-beta only**
Include health indicators in the output - `true` (default) or `false`.'
### `hide_branch_rate`
Hide Branch Rate metrics in the output - `true` or `false` (default).
### `hide_complexity`
Hide Complexity metrics in the output - `true` or `false` (default).
### `indicators`
Include health indicators in the output - `true` (default) or `false`.
Line Rate | Indicator
--------- | ---------
@@ -43,7 +76,8 @@ equal or greater than upper threshold (75%) | ✔
See [`thresholds`](#thresholds) to change these values.
#### `output`
### `output`
Output Type - `console` (default), `file` or `both`.
@@ -53,14 +87,15 @@ Output Type - `console` (default), `file` or `both`.
`both` will output the coverage summary to the Action log and a file as above.
#### `thresholds`
**v1.1.0-beta only**
### `thresholds`
Lower and upper threshold percentages for badge and health indicators, lower threshold can also be used to fail the action. Separate the values with a space and enclose them in quotes; default `'50 75'`.
## Outputs
#### Text Example
### Text Example
```
https://img.shields.io/badge/Code%20Coverage-83%25-success?style=flat
@@ -70,22 +105,34 @@ Summary: Line Rate = 83% (1212 / 1460), Branch Rate = 69% (262 / 378), Complexit
Minimum allowed line rate is 50%
```
#### Markdown Example
![image](https://user-images.githubusercontent.com/27953302/117726304-4ac1c100-b1de-11eb-8d9a-6286ba1f5523.png)
### Markdown Example
> ![Code Coverage](https://img.shields.io/badge/Code%20Coverage-83%25-success?style=flat)
>
> Package | Line Rate | Branch Rate | Complexity | Health
> -------- | --------- | ----------- | ---------- | ------
> Company.Example | 83% | 69% | 671 | ✔
> Company.Example.Library | 27% | 100% | 11 | ❌
> **Summary** | **83%** (1212 / 1460) | **69%** (262 / 378) | 682 | ✔
>
> _Minimum allowed line rate is `50%`_
## Usage
```yaml
name: Code Coverage Summary Report
uses: irongut/CodeCoverageSummary@v1.0.5
uses: irongut/CodeCoverageSummary@v1.3.0
with:
filename: coverage/coverage.cobertura.xml
filename: coverage.cobertura.xml
```
### .Net 5 Workflow Example
### .Net Workflow Example
```yaml
name: .Net 5 CI Build
name: .Net 6 CI Build
on:
push:
@@ -104,7 +151,7 @@ jobs:
- name: Setup .NET
uses: actions/setup-dotnet@v1
with:
dotnet-version: 5.0.x
dotnet-version: 6.0.x
- name: Restore Dependencies
run: dotnet restore src/Example.sln
@@ -115,16 +162,18 @@ jobs:
- name: Test
run: dotnet test src/Example.sln --configuration Release --no-build --verbosity normal --collect:"XPlat Code Coverage" --results-directory ./coverage
- name: Copy Coverage To Predictable Location
run: cp coverage/**/coverage.cobertura.xml coverage/coverage.cobertura.xml
- name: Code Coverage Summary Report
uses: irongut/CodeCoverageSummary@v1.0.5
- name: Code Coverage Report
uses: irongut/CodeCoverageSummary@v1.3.0
with:
filename: coverage/coverage.cobertura.xml
filename: coverage/**/coverage.cobertura.xml
badge: true
format: 'markdown'
output: 'both'
fail_below_min: true
format: markdown
hide_branch_rate: false
hide_complexity: true
indicators: true
output: both
thresholds: '60 80'
- name: Add Coverage PR Comment
uses: marocchino/sticky-pull-request-comment@v2
@@ -134,6 +183,17 @@ jobs:
path: code-coverage-results.md
```
## Version Numbers
Version numbers will be assigned according to the [Semantic Versioning](https://semver.org/) scheme.
This means, given a version number MAJOR.MINOR.PATCH, we will increment the:
1. MAJOR version when we make incompatible API changes
2. MINOR version when we add functionality in a backwards compatible manner
3. PATCH version when we make backwards compatible bug fixes
## Contributing
### Report Bugs
@@ -142,10 +202,12 @@ Please make sure the bug is not already reported by searching existing [issues].
If you're unable to find an existing issue addressing the problem please [open a new one][new-issue]. Be sure to include a title and clear description, as much relevant information as possible, a workflow sample and any logs demonstrating the problem.
### Suggest an Enhancement
Please [open a new issue][new-issue].
### Submit a Pull Request
Discuss your idea first, so that your changes have a good chance of being merged in.
@@ -154,6 +216,7 @@ Submit your pull request against the `master` branch.
Pull requests that include documentation and relevant updates to README.md are merged faster, because you won't have to wait for somebody else to complete your contribution.
## License
Code Coverage Summary is available under the MIT license, see the [LICENSE](LICENSE) file for more info.
+26
View File
@@ -0,0 +1,26 @@
# Security Policy
## Supported Versions
Version | Supported
------- | ------------------
1.3.0 | :white_check_mark:
1.3.0-beta | :x:
1.2.0 | :x:
1.1.0 | :x:
1.0.x | :x:
Only the latest version is supported. If you find a security vulnerability in an eariler version please check it exists in the latest version before reporting.
## Reporting a Vulnerability
Please make sure the vulnerability is not already reported by searching existing [issues].
If you're unable to find an existing issue addressing the vulnerability please [open a new issue][new-issue].
Be sure to include a title and clear description and as much relevant information as possible.
Please tag the issue with the `Security` label.
[issues]: https://github.com/irongut/CodeCoverageSummary/issues
[new-issue]: https://github.com/irongut/CodeCoverageSummary/issues/new
+15 -2
View File
@@ -6,7 +6,7 @@ branding:
color: purple
inputs:
filename:
description: 'Code coverage file to analyse.'
description: 'A comma separated list of code coverage files to analyse. Also supports using glob patterns to match multiple files.'
required: true
badge:
description: 'Include a Line Rate coverage badge in the output using shields.io - true / false (default).'
@@ -20,6 +20,14 @@ inputs:
description: 'Output Format - markdown or text (default).'
required: false
default: 'text'
hide_branch_rate:
description: 'Hide Branch Rate values in the output - true / false (default).'
required: false
default: 'false'
hide_complexity:
description: 'Hide Complexity values in the output - true / false (default).'
required: false
default: 'false'
indicators:
description: 'Include health indicators in the output - true (default) / false.'
required: false
@@ -34,8 +42,9 @@ inputs:
default: '50 75'
runs:
using: 'docker'
image: 'docker://ghcr.io/irongut/codecoveragesummary:v1.1.0-beta'
image: 'docker://ghcr.io/irongut/codecoveragesummary:v1.3.0'
args:
- '--files'
- ${{ inputs.filename }}
- '--badge'
- ${{ inputs.badge }}
@@ -43,6 +52,10 @@ runs:
- ${{ inputs.fail_below_min }}
- '--format'
- ${{ inputs.format }}
- '--hidebranch'
- ${{ inputs.hide_branch_rate }}
- '--hidecomplexity'
- ${{ inputs.hide_complexity }}
- '--indicators'
- ${{ inputs.indicators }}
- '--output'
@@ -2,24 +2,25 @@
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net5.0</TargetFramework>
<TargetFramework>net6.0</TargetFramework>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
<Company>Taranis Software</Company>
<Authors>Irongut</Authors>
<Description>A GitHub Action that reads Cobertura format code coverage files and outputs a text or markdown summary.</Description>
<Copyright>Copyright © 2021 Taranis Software</Copyright>
<Copyright>Copyright © 2021 - 2022 Taranis Software</Copyright>
<PackageId>Taranis.CodeCoverageSummary</PackageId>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<PackageProjectUrl>https://github.com/irongut/CodeCoverageSummary</PackageProjectUrl>
<RepositoryUrl>https://github.com/irongut/CodeCoverageSummary</RepositoryUrl>
<RepositoryType>git</RepositoryType>
<PackageTags>coverage test-coverage cobertura action code-coverage coverlet github-actions</PackageTags>
<Version>1.1.0</Version>
<Version>1.3.0</Version>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="CommandLineParser" Version="2.8.0" />
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.11.1" />
<PackageReference Include="CommandLineParser" Version="2.9.1" />
<PackageReference Include="Microsoft.Extensions.FileSystemGlobbing" Version="10.0.8" />
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.17.0" />
</ItemGroup>
</Project>
+1 -4
View File
@@ -31,9 +31,6 @@ namespace CodeCoverageSummary
public List<CodeCoverage> Packages { get; set; }
public CodeSummary()
{
Packages = new List<CodeCoverage>();
}
public CodeSummary() => Packages = new();
}
}
+13 -2
View File
@@ -1,12 +1,13 @@
using CommandLine;
using System;
using System.Collections.Generic;
namespace CodeCoverageSummary
{
public class CommandLineOptions
{
[Value(index: 0, Required = true, HelpText = "Code coverage file to analyse.")]
public string Filename { get; set; }
[Option(longName: "files", Separator = ',', Required = true, HelpText = "A comma separated list of code coverage files to analyse. Also accepts glob patterns.")]
public IEnumerable<string> Files { get; set; }
[Option(longName: "badge", Required = false, HelpText = "Include a Line Rate coverage badge in the output using shields.io - true or false.", Default = "false")]
public string BadgeString { get; set; }
@@ -21,6 +22,16 @@ namespace CodeCoverageSummary
[Option(longName: "format", Required = false, HelpText = "Output Format - markdown or text.", Default = "text")]
public string Format { get; set; }
[Option(longName: "hidebranch", Required = false, HelpText = "Hide Branch Rate values in the output - true or false.", Default = "false")]
public string HideBranchString { get; set; }
public bool HideBranchRate => HideBranchString.Equals("true", StringComparison.OrdinalIgnoreCase);
[Option(longName: "hidecomplexity", Required = false, HelpText = "Hide Complexity values in the output - true or false.", Default = "false")]
public string HideComplexityString { get; set; }
public bool HideComplexity => HideComplexityString.Equals("true", StringComparison.OrdinalIgnoreCase);
[Option(longName: "indicators", Required = false, HelpText = "Include health indicators in the output - true or false.", Default = "true")]
public string IndicatorsString { get; set; }
+105 -42
View File
@@ -1,5 +1,7 @@
using CommandLine;
using Microsoft.Extensions.FileSystemGlobbing;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
@@ -19,22 +21,53 @@ namespace CodeCoverageSummary
{
try
{
if (!File.Exists(o.Filename))
// use glob patterns to match files
Matcher matcher = new();
matcher.AddIncludePatterns(o.Files.ToArray());
IEnumerable<string> matchingFiles = matcher.GetResultsInFullPath(".");
if (matchingFiles?.Any() == false)
{
Console.WriteLine("Error: Code coverage file not found.");
Console.WriteLine("Error: No files found matching glob pattern.");
return -2; // error
}
// parse code coverage file
Console.WriteLine($"Code Coverage File: {o.Filename}");
CodeSummary summary = ParseTestResults(o.Filename);
if (summary == null)
// check files exist
foreach (var file in matchingFiles)
{
Console.WriteLine("Error: Parsing code coverage file.");
if (!File.Exists(file))
{
Console.WriteLine($"Error: Coverage file not found - {file}.");
return -2; // error
}
}
// parse code coverage file
CodeSummary summary = new();
foreach (var file in matchingFiles)
{
Console.WriteLine($"Coverage File: {file}");
summary = ParseTestResults(file, summary);
}
if (summary == null)
return -2; // error
summary.LineRate /= matchingFiles.Count();
summary.BranchRate /= matchingFiles.Count();
if (summary.Packages.Count == 0)
{
Console.WriteLine("Parsing Error: No packages found in coverage files.");
return -2; // error
}
else
{
// hide branch rate if metrics missing
bool hideBranchRate = o.HideBranchRate;
if (summary.BranchRate == 0 && summary.BranchesCovered == 0 && summary.BranchesValid == 0)
hideBranchRate = true;
// set health badge thresholds
if (!string.IsNullOrWhiteSpace(o.Thresholds))
SetThresholds(o.Thresholds);
@@ -48,14 +81,14 @@ namespace CodeCoverageSummary
if (o.Format.Equals("text", StringComparison.OrdinalIgnoreCase))
{
fileExt = "txt";
output = GenerateTextOutput(summary, badgeUrl, o.Indicators);
output = GenerateTextOutput(summary, badgeUrl, o.Indicators, hideBranchRate, o.HideComplexity);
if (o.FailBelowThreshold)
output += $"Minimum allowed line rate is {lowerThreshold * 100:N0}%{Environment.NewLine}";
}
else if (o.Format.Equals("md", StringComparison.OrdinalIgnoreCase) || o.Format.Equals("markdown", StringComparison.OrdinalIgnoreCase))
{
fileExt = "md";
output = GenerateMarkdownOutput(summary, badgeUrl, o.Indicators);
output = GenerateMarkdownOutput(summary, badgeUrl, o.Indicators, hideBranchRate, o.HideComplexity);
if (o.FailBelowThreshold)
output += $"{Environment.NewLine}_Minimum allowed line rate is `{lowerThreshold * 100:N0}%`_{Environment.NewLine}";
}
@@ -68,6 +101,7 @@ namespace CodeCoverageSummary
// output
if (o.Output.Equals("console", StringComparison.OrdinalIgnoreCase))
{
Console.WriteLine();
Console.WriteLine(output);
}
else if (o.Output.Equals("file", StringComparison.OrdinalIgnoreCase))
@@ -76,6 +110,7 @@ namespace CodeCoverageSummary
}
else if (o.Output.Equals("both", StringComparison.OrdinalIgnoreCase))
{
Console.WriteLine();
Console.WriteLine(output);
File.WriteAllText($"code-coverage-results.{fileExt}", output);
}
@@ -103,9 +138,11 @@ namespace CodeCoverageSummary
_ => -1); // invalid arguments
}
private static CodeSummary ParseTestResults(string filename)
private static CodeSummary ParseTestResults(string filename, CodeSummary summary)
{
CodeSummary summary = new();
if (summary == null)
return null;
try
{
string rss = File.ReadAllText(filename);
@@ -115,51 +152,73 @@ namespace CodeCoverageSummary
var coverage = from item in xdoc.Descendants("coverage")
select item;
if (!coverage.Any())
throw new Exception("Coverage file invalid, data not found");
var lineR = from item in coverage.Attributes()
where item.Name == "line-rate"
select item;
summary.LineRate = double.Parse(lineR.First().Value);
if (!lineR.Any())
throw new Exception("Overall line rate not found");
summary.LineRate += double.Parse(lineR.First().Value);
var linesCovered = from item in coverage.Attributes()
where item.Name == "lines-covered"
select item;
summary.LinesCovered = int.Parse(linesCovered.First().Value);
if (!linesCovered.Any())
throw new Exception("Overall lines covered not found");
summary.LinesCovered += int.Parse(linesCovered.First().Value);
var linesValid = from item in coverage.Attributes()
where item.Name == "lines-valid"
select item;
summary.LinesValid = int.Parse(linesValid.First().Value);
if (!linesValid.Any())
throw new Exception("Overall lines valid not found");
summary.LinesValid += int.Parse(linesValid.First().Value);
var branchR = from item in coverage.Attributes()
where item.Name == "branch-rate"
select item;
summary.BranchRate = double.Parse(branchR.First().Value);
var branchesCovered = from item in coverage.Attributes()
where item.Name == "branches-covered"
select item;
summary.BranchesCovered = int.Parse(branchesCovered.First().Value);
if (branchR.Any())
{
summary.BranchRate += double.TryParse(branchR.First().Value, out double bRate) ? bRate : 0;
var branchesValid = from item in coverage.Attributes()
where item.Name == "branches-valid"
select item;
summary.BranchesValid = int.Parse(branchesValid.First().Value);
var branchesCovered = from item in coverage.Attributes()
where item.Name == "branches-covered"
select item;
summary.Complexity = 0;
summary.BranchesCovered += int.TryParse(branchesCovered?.First().Value ?? "0", out int bCovered) ? bCovered : 0;
var branchesValid = from item in coverage.Attributes()
where item.Name == "branches-valid"
select item;
summary.BranchesValid += int.TryParse(branchesValid?.First().Value ?? "0", out int bValid) ? bValid : 0;
}
// test coverage for individual packages
var packages = from item in coverage.Descendants("package")
select item;
if (!packages.Any())
throw new Exception("No package data found");
int i = 1;
foreach (var item in packages)
{
CodeCoverage packageCoverage = new()
{
Name = string.IsNullOrWhiteSpace(item.Attribute("name").Value) ? $"Package {i}" : item.Attribute("name").Value,
Name = string.IsNullOrWhiteSpace(item.Attribute("name")?.Value) ? $"{Path.GetFileNameWithoutExtension(filename)} Package {i}" : item.Attribute("name").Value,
LineRate = double.Parse(item.Attribute("line-rate")?.Value ?? "0"),
BranchRate = double.Parse(item.Attribute("branch-rate")?.Value ?? "0"),
Complexity = double.Parse(item.Attribute("complexity")?.Value ?? "0")
BranchRate = double.TryParse(item.Attribute("branch-rate")?.Value ?? "0", out double bRate) ? bRate : 0,
Complexity = double.TryParse(item.Attribute("complexity")?.Value ?? "0", out double complex) ? complex : 0
};
summary.Packages.Add(packageCoverage);
summary.Complexity += packageCoverage.Complexity;
@@ -170,7 +229,7 @@ namespace CodeCoverageSummary
}
catch (Exception ex)
{
Console.WriteLine($"Parse Error: {ex.Message}");
Console.WriteLine($"Parsing Error: {ex.Message} - {filename}");
return null;
}
}
@@ -191,10 +250,10 @@ namespace CodeCoverageSummary
}
else
{
if (!int.TryParse(thresholds.Substring(0, s), out lowerPercentage))
if (!int.TryParse(thresholds.AsSpan(0, s), out lowerPercentage))
throw new ArgumentException("Threshold parameter set incorrectly.");
if (!int.TryParse(thresholds.Substring(s + 1), out upperPercentage))
if (!int.TryParse(thresholds.AsSpan(s + 1), out upperPercentage))
throw new ArgumentException("Threshold parameter set incorrectly.");
}
lowerThreshold = lowerPercentage / 100.0;
@@ -244,7 +303,7 @@ namespace CodeCoverageSummary
}
}
private static string GenerateTextOutput(CodeSummary summary, string badgeUrl, bool indicators)
private static string GenerateTextOutput(CodeSummary summary, string badgeUrl, bool indicators, bool hideBranchRate, bool hideComplexity)
{
StringBuilder textOutput = new();
@@ -257,20 +316,20 @@ namespace CodeCoverageSummary
foreach (CodeCoverage package in summary.Packages)
{
textOutput.Append($"{package.Name}: Line Rate = {package.LineRate * 100:N0}%")
.Append($", Branch Rate = {package.BranchRate * 100:N0}%")
.Append((package.Complexity % 1 == 0) ? $", Complexity = {package.Complexity}" : $", Complexity = {package.Complexity:N4}")
.Append(hideBranchRate ? string.Empty : $", Branch Rate = {package.BranchRate * 100:N0}%")
.Append(hideComplexity ? string.Empty : (package.Complexity % 1 == 0) ? $", Complexity = {package.Complexity}" : $", Complexity = {package.Complexity:N4}")
.AppendLine(indicators ? $", {GenerateHealthIndicator(package.LineRate)}" : string.Empty);
}
textOutput.Append($"Summary: Line Rate = {summary.LineRate * 100:N0}% ({summary.LinesCovered} / {summary.LinesValid})")
.Append($", Branch Rate = {summary.BranchRate * 100:N0}% ({summary.BranchesCovered} / {summary.BranchesValid})")
.Append((summary.Complexity % 1 == 0) ? $", Complexity = {summary.Complexity}" : $", Complexity = {summary.Complexity:N4}")
.Append(hideBranchRate ? string.Empty : $", Branch Rate = {summary.BranchRate * 100:N0}% ({summary.BranchesCovered} / {summary.BranchesValid})")
.Append(hideComplexity ? string.Empty : (summary.Complexity % 1 == 0) ? $", Complexity = {summary.Complexity}" : $", Complexity = {summary.Complexity:N4}")
.AppendLine(indicators ? $", {GenerateHealthIndicator(summary.LineRate)}" : string.Empty);
return textOutput.ToString();
}
private static string GenerateMarkdownOutput(CodeSummary summary, string badgeUrl, bool indicators)
private static string GenerateMarkdownOutput(CodeSummary summary, string badgeUrl, bool indicators, bool hideBranchRate, bool hideComplexity)
{
StringBuilder markdownOutput = new();
@@ -280,22 +339,26 @@ namespace CodeCoverageSummary
.AppendLine();
}
markdownOutput.Append("Package | Line Rate | Branch Rate | Complexity")
markdownOutput.Append("Package | Line Rate")
.Append(hideBranchRate ? string.Empty : " | Branch Rate")
.Append(hideComplexity ? string.Empty : " | Complexity")
.AppendLine(indicators ? " | Health" : string.Empty)
.Append("-------- | --------- | ----------- | ----------")
.Append("-------- | ---------")
.Append(hideBranchRate ? string.Empty : " | -----------")
.Append(hideComplexity ? string.Empty : " | ----------")
.AppendLine(indicators ? " | ------" : string.Empty);
foreach (CodeCoverage package in summary.Packages)
{
markdownOutput.Append($"{package.Name} | {package.LineRate * 100:N0}%")
.Append($" | {package.BranchRate * 100:N0}%")
.Append((package.Complexity % 1 == 0) ? $" | {package.Complexity}" : $" | {package.Complexity:N4}" )
.Append(hideBranchRate ? string.Empty : $" | {package.BranchRate * 100:N0}%")
.Append(hideComplexity ? string.Empty : (package.Complexity % 1 == 0) ? $" | {package.Complexity}" : $" | {package.Complexity:N4}" )
.AppendLine(indicators ? $" | {GenerateHealthIndicator(package.LineRate)}" : string.Empty);
}
markdownOutput.Append($"**Summary** | **{summary.LineRate * 100:N0}%** ({summary.LinesCovered} / {summary.LinesValid})")
.Append($" | **{summary.BranchRate * 100:N0}%** ({summary.BranchesCovered} / {summary.BranchesValid})")
.Append((summary.Complexity % 1 == 0) ? $" | {summary.Complexity}" : $" | {summary.Complexity:N4}")
.Append(hideBranchRate ? string.Empty : $" | **{summary.BranchRate * 100:N0}%** ({summary.BranchesCovered} / {summary.BranchesValid})")
.Append(hideComplexity ? string.Empty : (summary.Complexity % 1 == 0) ? $" | **{summary.Complexity}**" : $" | **{summary.Complexity:N4}**")
.AppendLine(indicators ? $" | {GenerateHealthIndicator(summary.LineRate)}" : string.Empty);
return markdownOutput.ToString();
@@ -2,11 +2,11 @@
"profiles": {
"CodeCoverageSummary": {
"commandName": "Project",
"commandLineArgs": "../../../../coverage.cobertura.xml --format=md --badge true --thresholds=\"85 90\" --fail true"
"commandLineArgs": "--files **/coverage.*.xml --format=text --badge true --thresholds=\"85 90\" --fail true"
},
"Docker": {
"commandName": "Docker",
"commandLineArgs": "/src/coverage.cobertura.xml --format=md --badge=true"
"commandLineArgs": "--files /app/sample.coverage.xml --format=text --badge=true"
}
}
}
+476
View File
@@ -0,0 +1,476 @@
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<coverage branch-rate="NaN" branches-covered="NaN" branches-valid="NaN" complexity="NaN" line-rate="0.3705" lines-covered="103" lines-valid="278" timestamp="1656158672.7938" version="">
<sources>
<source>/home/runner/work/climatedatastore/climatedatastore/climatedatastoreToolbox/</source>
</sources>
<packages>
<package branch-rate="NaN" complexity="NaN" line-rate="0.3705" name="">
<classes>
<class branch-rate="NaN" complexity="NaN" filename="climateDataStoreDownload.m" line-rate="0.91667" name="climateDataStoreDownload">
<methods/>
<lines>
<line hits="5" number="42"/>
<line hits="5" number="44"/>
<line hits="5" number="45"/>
<line hits="5" number="46"/>
<line hits="0" number="47"/>
<line hits="5" number="50"/>
<line hits="5" number="51"/>
<line hits="5" number="52"/>
<line hits="3" number="53"/>
<line hits="2" number="55"/>
<line hits="2" number="57"/>
<line hits="2" number="58"/>
</lines>
</class>
<class branch-rate="NaN" complexity="NaN" filename="climateDataStoreDownloadAsync.m" line-rate="0.8" name="climateDataStoreDownloadAsync">
<methods/>
<lines>
<line hits="5" number="54"/>
<line hits="4" number="56"/>
<line hits="5" number="57"/>
<line hits="0" number="58"/>
<line hits="5" number="61"/>
</lines>
</class>
<class branch-rate="NaN" complexity="NaN" filename="climateDataStoreDownloadFuture.m" line-rate="0.86275" name="climateDataStoreDownloadFuture">
<methods>
<method branch-rate="NaN" line-rate="0.90909" name="climateDataStoreDownloadFuture" signature="obj = climateDataStoreDownloadFuture(datasetName, datasetOptions, options)">
<lines>
<line hits="10" number="83"/>
<line hits="10" number="84"/>
<line hits="10" number="85"/>
<line hits="10" number="86"/>
<line hits="10" number="89"/>
<line hits="10" number="99"/>
<line hits="10" number="101"/>
<line hits="10" number="102"/>
<line hits="7" number="103"/>
<line hits="3" number="104"/>
<line hits="3" number="105"/>
<line hits="3" number="106"/>
<line hits="3" number="107"/>
<line hits="2" number="108"/>
<line hits="1" number="109"/>
<line hits="1" number="110"/>
<line hits="0" number="112"/>
<line hits="0" number="115"/>
<line hits="3" number="117"/>
<line hits="3" number="118"/>
<line hits="7" number="122"/>
<line hits="7" number="123"/>
</lines>
</method>
<method branch-rate="NaN" line-rate="0.875" name="cancel" signature="cancel(obj)">
<lines>
<line hits="1" number="131"/>
<line hits="0" number="132"/>
<line hits="1" number="135"/>
<line hits="1" number="136"/>
<line hits="1" number="138"/>
<line hits="1" number="139"/>
<line hits="1" number="140"/>
<line hits="1" number="141"/>
</lines>
</method>
<method branch-rate="NaN" line-rate="0.9" name="wait" signature="wait(obj, timeout)">
<lines>
<line hits="8" number="158"/>
<line hits="2" number="159"/>
<line hits="6" number="162"/>
<line hits="6" number="163"/>
<line hits="6" number="164"/>
<line hits="2" number="165"/>
<line hits="2" number="166"/>
<line hits="2" number="167"/>
<line hits="6" number="169"/>
<line hits="0" number="170"/>
</lines>
</method>
<method branch-rate="NaN" line-rate="1" name="get.OutputArguments" signature="result = get.OutputArguments(obj)">
<lines>
<line hits="16" number="178"/>
<line hits="16" number="179"/>
</lines>
</method>
<method branch-rate="NaN" line-rate="1" name="get.RunningDuration" signature="result = get.RunningDuration(obj)">
<lines>
<line hits="3" number="183"/>
<line hits="3" number="184"/>
<line hits="2" number="186"/>
<line hits="1" number="189"/>
</lines>
</method>
<method branch-rate="NaN" line-rate="1" name="get.State" signature="result = get.State(obj)">
<lines>
<line hits="15" number="194"/>
<line hits="15" number="195"/>
</lines>
</method>
<method branch-rate="NaN" line-rate="0.5625" name="update" signature="update(obj)">
<lines>
<line hits="50" number="210"/>
<line hits="5" number="211"/>
<line hits="45" number="214"/>
<line hits="45" number="215"/>
<line hits="0" number="216"/>
<line hits="0" number="217"/>
<line hits="0" number="218"/>
<line hits="0" number="219"/>
<line hits="0" number="221"/>
<line hits="0" number="223"/>
<line hits="0" number="224"/>
<line hits="45" number="228"/>
<line hits="45" number="229"/>
<line hits="34" number="230"/>
<line hits="11" number="231"/>
<line hits="3" number="232"/>
</lines>
</method>
<method branch-rate="NaN" line-rate="1" name="getResultsIfAvailable" signature="getResultsIfAvailable(obj)">
<lines>
<line hits="34" number="237"/>
<line hits="29" number="238"/>
<line hits="5" number="243"/>
<line hits="5" number="244"/>
<line hits="5" number="246"/>
<line hits="5" number="247"/>
<line hits="5" number="248"/>
<line hits="5" number="249"/>
<line hits="5" number="252"/>
<line hits="5" number="255"/>
<line hits="5" number="259"/>
<line hits="3" number="261"/>
<line hits="3" number="262"/>
<line hits="3" number="265"/>
<line hits="2" number="268"/>
<line hits="2" number="269"/>
<line hits="2" number="270"/>
<line hits="5" number="272"/>
<line hits="5" number="273"/>
</lines>
</method>
<method branch-rate="NaN" line-rate="0.72727" name="getErrorInfo" signature="getErrorInfo(obj)">
<lines>
<line hits="3" number="278"/>
<line hits="2" number="279"/>
<line hits="1" number="282"/>
<line hits="1" number="293"/>
<line hits="1" number="294"/>
<line hits="0" number="295"/>
<line hits="0" number="296"/>
<line hits="0" number="298"/>
<line hits="1" number="300"/>
<line hits="1" number="301"/>
<line hits="1" number="302"/>
</lines>
</method>
<method branch-rate="NaN" line-rate="1" name="makeStringsChars" signature="theStruct = makeStringsChars(theStruct)">
<lines>
<line hits="10" number="308"/>
<line hits="10" number="309"/>
<line hits="70" number="310"/>
<line hits="70" number="311"/>
<line hits="60" number="313"/>
<line hits="10" number="316"/>
</lines>
</method>
</methods>
<lines>
<line hits="10" number="73"/>
<line hits="10" number="83"/>
<line hits="10" number="84"/>
<line hits="10" number="85"/>
<line hits="10" number="86"/>
<line hits="10" number="89"/>
<line hits="10" number="99"/>
<line hits="10" number="101"/>
<line hits="10" number="102"/>
<line hits="7" number="103"/>
<line hits="3" number="104"/>
<line hits="3" number="105"/>
<line hits="3" number="106"/>
<line hits="3" number="107"/>
<line hits="2" number="108"/>
<line hits="1" number="109"/>
<line hits="1" number="110"/>
<line hits="0" number="112"/>
<line hits="0" number="115"/>
<line hits="3" number="117"/>
<line hits="3" number="118"/>
<line hits="7" number="122"/>
<line hits="7" number="123"/>
<line hits="1" number="131"/>
<line hits="0" number="132"/>
<line hits="1" number="135"/>
<line hits="1" number="136"/>
<line hits="1" number="138"/>
<line hits="1" number="139"/>
<line hits="1" number="140"/>
<line hits="1" number="141"/>
<line hits="8" number="155"/>
<line hits="8" number="158"/>
<line hits="2" number="159"/>
<line hits="6" number="162"/>
<line hits="6" number="163"/>
<line hits="6" number="164"/>
<line hits="2" number="165"/>
<line hits="2" number="166"/>
<line hits="2" number="167"/>
<line hits="6" number="169"/>
<line hits="0" number="170"/>
<line hits="16" number="178"/>
<line hits="16" number="179"/>
<line hits="3" number="183"/>
<line hits="3" number="184"/>
<line hits="2" number="186"/>
<line hits="1" number="189"/>
<line hits="15" number="194"/>
<line hits="15" number="195"/>
<line hits="50" number="210"/>
<line hits="5" number="211"/>
<line hits="45" number="214"/>
<line hits="45" number="215"/>
<line hits="0" number="216"/>
<line hits="0" number="217"/>
<line hits="0" number="218"/>
<line hits="0" number="219"/>
<line hits="0" number="221"/>
<line hits="0" number="223"/>
<line hits="0" number="224"/>
<line hits="45" number="228"/>
<line hits="45" number="229"/>
<line hits="34" number="230"/>
<line hits="11" number="231"/>
<line hits="3" number="232"/>
<line hits="34" number="237"/>
<line hits="29" number="238"/>
<line hits="5" number="243"/>
<line hits="5" number="244"/>
<line hits="5" number="246"/>
<line hits="5" number="247"/>
<line hits="5" number="248"/>
<line hits="5" number="249"/>
<line hits="5" number="252"/>
<line hits="5" number="255"/>
<line hits="5" number="259"/>
<line hits="3" number="261"/>
<line hits="3" number="262"/>
<line hits="3" number="265"/>
<line hits="2" number="268"/>
<line hits="2" number="269"/>
<line hits="2" number="270"/>
<line hits="5" number="272"/>
<line hits="5" number="273"/>
<line hits="3" number="278"/>
<line hits="2" number="279"/>
<line hits="1" number="282"/>
<line hits="1" number="293"/>
<line hits="1" number="294"/>
<line hits="0" number="295"/>
<line hits="0" number="296"/>
<line hits="0" number="298"/>
<line hits="1" number="300"/>
<line hits="1" number="301"/>
<line hits="1" number="302"/>
<line hits="10" number="308"/>
<line hits="10" number="309"/>
<line hits="70" number="310"/>
<line hits="70" number="311"/>
<line hits="60" number="313"/>
<line hits="10" number="316"/>
</lines>
</class>
<class branch-rate="NaN" complexity="NaN" filename="doc/readSatelliteSeaIceThickness.m" line-rate="0" name="readSatelliteSeaIceThickness">
<methods/>
<lines>
<line hits="0" number="4"/>
<line hits="0" number="7"/>
<line hits="0" number="8"/>
<line hits="0" number="9"/>
<line hits="0" number="10"/>
<line hits="0" number="11"/>
<line hits="0" number="12"/>
<line hits="0" number="13"/>
<line hits="0" number="14"/>
<line hits="0" number="15"/>
<line hits="0" number="16"/>
<line hits="0" number="17"/>
<line hits="0" number="18"/>
<line hits="0" number="19"/>
</lines>
</class>
<class branch-rate="NaN" complexity="NaN" filename="doc/ComparingIceThickness.mlx" line-rate="0" name="ComparingIceThickness">
<methods/>
<lines>
<line hits="0" number="1"/>
<line hits="0" number="2"/>
<line hits="0" number="3"/>
<line hits="0" number="4"/>
<line hits="0" number="5"/>
<line hits="0" number="6"/>
<line hits="0" number="7"/>
<line hits="0" number="8"/>
<line hits="0" number="9"/>
<line hits="0" number="10"/>
<line hits="0" number="11"/>
<line hits="0" number="12"/>
<line hits="0" number="13"/>
<line hits="0" number="14"/>
<line hits="0" number="15"/>
<line hits="0" number="16"/>
<line hits="0" number="17"/>
<line hits="0" number="18"/>
<line hits="0" number="19"/>
<line hits="0" number="21"/>
<line hits="0" number="22"/>
<line hits="0" number="23"/>
<line hits="0" number="24"/>
<line hits="0" number="25"/>
<line hits="0" number="26"/>
<line hits="0" number="27"/>
<line hits="0" number="28"/>
<line hits="0" number="29"/>
<line hits="0" number="30"/>
</lines>
</class>
<class branch-rate="NaN" complexity="NaN" filename="doc/GettingStarted.mlx" line-rate="0" name="GettingStarted">
<methods/>
<lines>
<line hits="0" number="1"/>
<line hits="0" number="2"/>
<line hits="0" number="3"/>
<line hits="0" number="4"/>
<line hits="0" number="5"/>
<line hits="0" number="6"/>
<line hits="0" number="7"/>
<line hits="0" number="8"/>
<line hits="0" number="9"/>
<line hits="0" number="10"/>
<line hits="0" number="11"/>
<line hits="0" number="12"/>
<line hits="0" number="13"/>
<line hits="0" number="14"/>
<line hits="0" number="15"/>
<line hits="0" number="16"/>
<line hits="0" number="17"/>
<line hits="0" number="19"/>
<line hits="0" number="20"/>
<line hits="0" number="21"/>
<line hits="0" number="22"/>
<line hits="0" number="23"/>
<line hits="0" number="24"/>
<line hits="0" number="25"/>
<line hits="0" number="26"/>
<line hits="0" number="27"/>
<line hits="0" number="28"/>
</lines>
</class>
<class branch-rate="NaN" complexity="NaN" filename="util/getUserDirectory.m" line-rate="0" name="getUserDirectory">
<methods/>
<lines>
<line hits="0" number="5"/>
<line hits="0" number="6"/>
<line hits="0" number="7"/>
<line hits="0" number="9"/>
</lines>
</class>
<class branch-rate="NaN" complexity="NaN" filename="util/setupCDSAPIIfNeeded.m" line-rate="0" name="setupCDSAPIIfNeeded">
<methods/>
<lines>
<line hits="0" number="8"/>
<line hits="0" number="10"/>
<line hits="0" number="12"/>
<line hits="0" number="14"/>
<line hits="0" number="18"/>
<line hits="0" number="19"/>
<line hits="0" number="21"/>
<line hits="0" number="22"/>
<line hits="0" number="23"/>
<line hits="0" number="28"/>
<line hits="0" number="30"/>
<line hits="0" number="32"/>
<line hits="0" number="33"/>
<line hits="0" number="35"/>
<line hits="0" number="36"/>
<line hits="0" number="37"/>
<line hits="0" number="38"/>
<line hits="0" number="39"/>
<line hits="0" number="42"/>
<line hits="0" number="43"/>
<line hits="0" number="46"/>
<line hits="0" number="47"/>
<line hits="0" number="50"/>
<line hits="0" number="51"/>
<line hits="0" number="52"/>
<line hits="0" number="53"/>
<line hits="0" number="55"/>
<line hits="0" number="56"/>
</lines>
</class>
<class branch-rate="NaN" complexity="NaN" filename="util/setupPythonIfNeeded.m" line-rate="0" name="setupPythonIfNeeded">
<methods/>
<lines>
<line hits="0" number="8"/>
<line hits="0" number="9"/>
<line hits="0" number="13"/>
<line hits="0" number="15"/>
<line hits="0" number="17"/>
<line hits="0" number="22"/>
<line hits="0" number="25"/>
<line hits="0" number="27"/>
<line hits="0" number="29"/>
<line hits="0" number="31"/>
<line hits="0" number="34"/>
<line hits="0" number="35"/>
<line hits="0" number="36"/>
<line hits="0" number="37"/>
<line hits="0" number="38"/>
<line hits="0" number="39"/>
<line hits="0" number="41"/>
<line hits="0" number="42"/>
<line hits="0" number="43"/>
<line hits="0" number="44"/>
<line hits="0" number="45"/>
<line hits="0" number="51"/>
<line hits="0" number="53"/>
<line hits="0" number="55"/>
<line hits="0" number="63"/>
<line hits="0" number="64"/>
<line hits="0" number="65"/>
<line hits="0" number="66"/>
<line hits="0" number="67"/>
<line hits="0" number="68"/>
<line hits="0" number="69"/>
<line hits="0" number="70"/>
<line hits="0" number="71"/>
<line hits="0" number="72"/>
<line hits="0" number="73"/>
<line hits="0" number="74"/>
<line hits="0" number="75"/>
<line hits="0" number="76"/>
<line hits="0" number="77"/>
<line hits="0" number="80"/>
<line hits="0" number="85"/>
<line hits="0" number="86"/>
<line hits="0" number="87"/>
<line hits="0" number="89"/>
<line hits="0" number="90"/>
<line hits="0" number="95"/>
<line hits="0" number="96"/>
<line hits="0" number="97"/>
<line hits="0" number="99"/>
<line hits="0" number="100"/>
<line hits="0" number="106"/>
<line hits="0" number="107"/>
<line hits="0" number="108"/>
<line hits="0" number="109"/>
<line hits="0" number="112"/>
<line hits="0" number="113"/>
<line hits="0" number="114"/>
</lines>
</class>
</classes>
</package>
</packages>
</coverage>
+441
View File
@@ -0,0 +1,441 @@
<?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>