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

[TT-12596] fork and patch gitHub.com/qor/qor for resources to support custom ids #2

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
version: 2
updates:
# Maintain dependencies for GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
78 changes: 78 additions & 0 deletions .github/workflows/ci-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
name: CI tests and linters

on:
pull_request:
branches:
- master
- release-**
types:
- opened
- reopened
- synchronize
- ready_for_review

permissions:
contents: read
pull-requests: read
checks: write


env:
GOPRIVATE: github.com/TykTechnologies/*

jobs:
golangci-lint:
name: golangci-lint
runs-on: ubuntu-latest
steps:
- name: use gh token
env:
TOKEN: '${{ secrets.ORG_GH_TOKEN }}'
run: >
git config --global url."https://${TOKEN}@github.com".insteadOf "https://github.com"
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: '1.22.7'
- name: golangci-lint
uses: golangci/golangci-lint-action@v5
if: ${{ github.event_name == 'pull_request' }}
with:
version: v1.57.2
only-new-issues: true
args: --timeout=600s --out-format checkstyle:golanglint.xml,github-actions
- uses: actions/upload-artifact@v4
with:
name: golangcilint
retention-days: 1
path: |
golanglint.xml
tests:
name: Unit tests
runs-on: ubuntu-latest
steps:
- name: use gh token
env:
TOKEN: '${{ secrets.ORG_GH_TOKEN }}'
run: >
git config --global url."https://${TOKEN}@github.com".insteadOf "https://github.com"
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: '1.22.7'
- name: Cache Go modules
uses: actions/cache@v3
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Run unit tests
run: |
make test
- uses: actions/upload-artifact@v4
with:
name: coverage
retention-days: 1
path: |
*.cov
23 changes: 23 additions & 0 deletions .github/workflows/pr_agent.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: AI PR Agent

on:
pull_request:
types:
- opened
- reopened
- synchronize
- ready_for_review
issue_comment:
jobs:
pr_agent_job:
runs-on: ubuntu-latest
name: Run pr agent on every pull request, respond to user comments
if: ${{ !github.event.pull_request.draft }}
steps:
- name: PR Agent action step
id: pragent
uses: Codium-ai/[email protected]
env:
OPENAI_KEY: ${{ secrets.OPENAI_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ANTHROPIC.KEY: ${{ secrets.ANTHROPIC_KEY }}
180 changes: 180 additions & 0 deletions .golangci.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,180 @@
run:
# The default concurrency value is the number of available CPU.
concurrency: 4

# Timeout for analysis, e.g. 30s, 5m.
# Default: 1m
timeout: 5m

# Include test files or not.
# Default: true
tests: true


# Which dirs to skip: issues from them won't be reported.
# Can use regexp here: `generated.*`, regexp is applied on full path.
# Default value is empty list,
# but default dirs are skipped independently of this option's value (see skip-dirs-use-default).
# "/" will be replaced by current OS file path separator to properly work on Windows.
skip-dirs:
- ui-tests
- themes
- repo-policy
- docs

# Enables skipping of directories:
# - vendor$, third_party$, testdata$, examples$, Godeps$, builtin$
# Default: true
skip-dirs-use-default: true


# If set we pass it to "go list -mod={option}". From "go help modules":
# If invoked with -mod=readonly, the go command is disallowed from the implicit
# automatic updating of go.mod described above. Instead, it fails when any changes
# to go.mod are needed. This setting is most useful to check that go.mod does
# not need updates, such as in a continuous integration and testing system.
# If invoked with -mod=vendor, the go command assumes that the vendor
# directory holds the correct copies of dependencies and ignores
# the dependency descriptions in go.mod.
#
# Allowed values: readonly|vendor|mod
# By default, it isn't set.
modules-download-mode: readonly

# Allow multiple parallel golangci-lint instances running.
# If false (default) - golangci-lint acquires file lock on start.
allow-parallel-runners: false

# Define the Go version limit.
# Mainly related to generics support since go1.18.
# Default: use Go version from the go.mod file, fallback on the env var `GOVERSION`, fallback on 1.18
# go: '1.21'

issues:
exclude:
- "^exported: exported var Err[A-Za-z0-9]+ should have comment or be unexported$"
- "shadow: declaration of .err. shadows declaration"

# Excluding configuration per-path, per-linter, per-text and per-source
exclude-rules:
# Exclude some linters from running on test files.
- path: _test\.go
linters:
- dupl

# Show only new issues created since branching away from default branch on the remote
# new-from-rev: origin/master

linters:
enable:
- dupl
- errcheck
- gocritic
- gofmt
- gofumpt
- goimports
- govet
- gosec
- ineffassign
- lll
- misspell
- revive
- staticcheck
- wsl

linters-settings:
dupl:
# tokens count to trigger issue, 150 by default
threshold: 200

errcheck:
# Report about assignment of errors to blank identifier: `num, _ := strconv.Atoi(numStr)`.
check-blank: true

# Report about not checking of errors in type assertions: `a := b.(MyStruct)`.
check-type-assertions: true

gocritic:
# See https://go-critic.github.io/overview#checks-overview
# To check which checks are enabled run `GL_DEBUG=gocritic golangci-lint run`
enabled-tags:
- performance
disabled-checks:
- hugeParam

gofmt:
# Simplify code with '-s' option
simplify: true

gofumpt:
# Choose whether or not to use the extra rules that are disabled by default
extra-rules: true

# Select the Go version to target.
lang-version: "1.22.7"


govet:
# Report about shadowed variables
check-shadowing: true
enable-all: true
disable:
- fieldalignment

gosec:
excludes:
- G601
lll:
# Max line length; lines longer will be reported
# '\t' is counted as 1 character by default, and can be changed with the 'tab-width' option
line-length: 120
# Tab width in spaces
tab-width: 2

misspell:
# Correct spellings using locale preferences for US or UK.
# Default is to use a neutral variety of English.
# Setting locale to US will correct the British spelling of 'colour' to 'color'.

# Intentionally leaving this unset as most engineering terminology skews US however Tyk standard is UK.
# locale: UK

ignore-words: []

staticcheck:
# https://staticcheck.io/docs/options#checks
checks: [ "all" ]
# Select the Go version to target.
go: "1.22.7"

whitespace:
multi-if: false # Enforces newlines (or comments) after every multi-line if statement
multi-func: false # Enforces newlines (or comments) after every multi-line function signature

wsl:
# Controls if you may cuddle assignments and anything without needing an empty line between them.
allow-assign-and-anything: false
# Allow calls and assignments to be cuddled as long as the lines have any matching variables, fields or types.
# Default is true.
allow-assign-and-call: true
# Controls if you may end case statements with a whitespace.
allow-case-trailing-whitespace: true
# Allow declarations (var) to be cuddled.
allow-cuddle-declarations: true
# Allow multiline assignments to be cuddled. Default is true.
allow-multiline-assign: true
# This option allows whitespace after each comment group that begins a block.
allow-separated-leading-comment: false
# Allow trailing comments in ending of blocks
allow-trailing-comment: false
# Enforces that an if statement checking an error variable
# is cuddled with the line that assigned that error variable.
enforce-err-cuddling: true
# Force newlines in end of case at this limit (0 = never).
force-case-trailing-whitespace: 0
# Enforces that an assignment which is actually a short declaration (using :=)
# is only allowed to cuddle with other short declarations, and not plain assignments, blocks, etc.
force-short-decl-cuddling: false
# Append is only allowed to be cuddled if appending value is matching variables, fields or types on line above.
# Default is true.
strict-append: true
4 changes: 4 additions & 0 deletions .pr_agent.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[config]
model="anthropic/claude-3-opus-20240229"
model_turbo="anthropic/claude-3-opus-20240229"
fallback_models=["anthropic/claude-3-opus-20240229"]
30 changes: 30 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Makefile

.PHONY: build-portal run-binary

go-mod:
@echo "Preparing Go mod files..."
@go mod tidy -v
@go mod download -x
@echo "Go mod files completed."

.PHONY: lint-install lint

lint-install:
@if ! command -v golangci-lint >/dev/null 2>&1; then \
echo "golangci-lint is not installed, installing..."; \
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(shell go env GOPATH)/bin v1.53.3; \
else \
echo "golangci-lint is already installed"; \
fi


lint: lint-install
@golangci-lint run --out-format checkstyle --timeout=300s --max-issues-per-linter=0 --max-same-issues=0 --issues-exit-code=0 --new-from-rev=origin/master

.PHONY: test
test:
@echo "Running tests with coverage..."
@./bin/ci-tests.sh


7 changes: 7 additions & 0 deletions bin/_common.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# listPackages lists local go packages. In case a subpackage contains
# it's own go.mod file, it will not be listed as part of the output.
function listPackages {
# Skip MDCB tests until under a tag
# Skip mocks
go list ./... | egrep -v "/(mock)$"
}
39 changes: 39 additions & 0 deletions bin/ci-tests.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#!/bin/bash

# exit on non-zero exit from go test/vet
set -e

TEST_TIMEOUT=15m

# change path into root directory
cd $(dirname $(dirname $(readlink -f $0)))

# import common functions
. ./bin/_common.sh

PKGS="$(go list ./...)"

# Support passing custom flags (-json, etc.)
OPTS="$@"
if [[ -z "$OPTS" ]]; then
OPTS="-race -count=1 -failfast -v"
fi



for pkg in $(listPackages); do
trimmed_pkg=${pkg/github.com\/TykTechnologies\//}
pkg_name=${trimmed_pkg//\//.}
coveragefile=$(echo "$pkg_name")


set -x
go test \
-failfast \
-timeout ${TEST_TIMEOUT:-"20m"} \
-cover \
-coverprofile=${coveragefile}.cov \
-v ${pkg}
set +x

done
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,6 @@ require (
github.com/qor/roles v0.0.0-20171127035124-d6375609fe3e
github.com/qor/sorting v0.0.0-20200724034229-cdba739ba535
github.com/qor/validations v0.0.0-20171228122639-f364bca61b46
github.com/stretchr/testify v1.5.1
golang.org/x/net v0.23.0 // indirect
)
Loading
Loading