Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

delta #473

Merged
merged 20 commits into from
Jan 26, 2024
16 changes: 6 additions & 10 deletions .github/workflows/go.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@ name: go
on:
pull_request:
push:
branches:
- 'master'
permissions:
contents: read

jobs:
build-and-test:
env:
Expand All @@ -11,7 +16,7 @@ jobs:
strategy:
fail-fast: true
matrix:
go: ['1.21.5']
go: ['1.21.6']
os:
- ubuntu-latest
- windows-latest
Expand Down Expand Up @@ -67,15 +72,6 @@ jobs:
- run: go fmt ./...
- run: git --no-pager diff --exit-code

- if: runner.os == 'Linux'
name: golangci-lint
uses: golangci/golangci-lint-action@v3
with:
version: v1.55

- id: govulncheck
uses: golang/govulncheck-action@v1

- run: go test ./... -coverprofile=coverage.txt -covermode=atomic
env:
CGO_ENABLED: '1'
Expand Down
50 changes: 50 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: golangci-lint
on:
push:
pull_request:

permissions:
contents: read

jobs:
golangci:
name: lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-go@v4
with:
go-version: '1.21'
cache: false
- name: Run golangci-lint
uses: golangci/golangci-lint-action@v3
with:
# Require: The version of golangci-lint to use.
# When `install-mode` is `binary` (default) the value can be v1.2 or v1.2.3 or `latest` to use the latest version.
# When `install-mode` is `goinstall` the value can be v1.2.3, `latest`, or the hash of a commit.
version: latest

# Optional: working directory, useful for monorepos
# working-directory: somedir

# Optional: golangci-lint command line arguments.
#
# Note: By default, the `.golangci.yml` file should be at the root of the repository.
# The location of the configuration file can be changed by using `--config=`
# args: --timeout=30m --config=/my/path/.golangci.yml --issues-exit-code=0

# Optional: show only new issues if it's a pull request. The default value is `false`.
# only-new-issues: true

# Optional: if set to true, then all caching functionality will be completely disabled,
# takes precedence over all other caching options.
# skip-cache: true

# Optional: if set to true, then the action won't cache or restore ~/go/pkg.
# skip-pkg-cache: true

# Optional: if set to true, then the action won't cache or restore ~/.cache/go-build.
# skip-build-cache: true

# Optional: The mode to install golangci-lint. It can be 'binary' or 'goinstall'.
# install-mode: "goinstall"
19 changes: 19 additions & 0 deletions .github/workflows/vuln.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
name: govulncheck
on:
push:
pull_request:

permissions:
contents: read
# Optional: allow read access to pull request. Use with `only-new-issues` option.
# pull-requests: read

jobs:
govulncheck_job:
runs-on: ubuntu-latest
name: Run govulncheck
steps:
- id: govulncheck
uses: golang/govulncheck-action@v1
with:
go-version-input: 1.21.6
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
### Go get dependecies and build ###
FROM golang:1.21.5 as builder
FROM golang:1.21.6 as builder
ENV PLATFORM docker
WORKDIR /go/src/app
COPY go.mod go.sum ./
Expand Down
5 changes: 5 additions & 0 deletions data/empty.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
openapi: 3.0.1
info:
title: Test API
version: v1
paths:
14 changes: 14 additions & 0 deletions data/simple3.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
info:
title: Tufin
version: 1.0.0
openapi: 3.0.3
paths:
/api/test:
get:
responses:
200:
description: OK
post:
responses:
201:
description: OK
19 changes: 19 additions & 0 deletions data/simple4.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
info:
title: Tufin
version: 1.0.0
openapi: 3.0.3
paths:
/api/test:
get:
parameters:
- name: a
in: query
schema:
type: integer
responses:
200:
description: OK
post:
responses:
201:
description: OK
19 changes: 19 additions & 0 deletions data/simple5.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
info:
title: Tufin
version: 1.0.0
openapi: 3.0.3
paths:
/api/test:
get:
parameters:
- name: a
in: query
schema:
type: string
responses:
200:
description: OK
post:
responses:
201:
description: OK
38 changes: 38 additions & 0 deletions delta/delta.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package delta

import (
"github.com/tufin/oasdiff/diff"
)

const coefficient = 0.5

func Get(asymmetric bool, diffReport *diff.Diff) float64 {
if diffReport.Empty() {
return 0
}

return getEndpointsDelta(asymmetric, diffReport.EndpointsDiff)
}

func ratio(asymmetric bool, added int, deleted int, modifiedDelta float64, all int) float64 {
if asymmetric {
added = 0
}

return (float64(added+deleted) + modifiedDelta) / float64(all)
}

func modifiedLeafDelta(asymmetric bool, modified float64) float64 {
if asymmetric {
return modified / 2
}

return modified
}

func boolToFloat64(b bool) float64 {
if b {
return 1.0
}
return 0.0
}
Loading
Loading