From 5ec09c0317f642b1ef7758f72dc68a08b60d5ade Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=85=89=E6=98=A5?= Date: Thu, 5 May 2022 20:51:14 +0800 Subject: [PATCH] update --- .circleci/config.yml | 42 +++++++++++++++++++++++++++++ .drone.yml | 11 ++++++++ .github/workflows/coverage.yml | 38 +++++++++++++++++++++++++++ .github/workflows/go.yml | 27 +++++++++++++++++++ .gitignore | 3 +-- .travis.yml | 7 +++++ gomod.sh | 3 +++ gostring_test.go | 48 ++++++++++++++++++++++++++++++++++ 8 files changed, 177 insertions(+), 2 deletions(-) create mode 100644 .circleci/config.yml create mode 100644 .drone.yml create mode 100644 .github/workflows/coverage.yml create mode 100644 .github/workflows/go.yml create mode 100644 .travis.yml create mode 100644 gomod.sh create mode 100644 gostring_test.go diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..b02a38e --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,42 @@ +# Use the latest 2.1 version of CircleCI pipeline process engine. +# See: https://circleci.com/docs/2.0/configuration-reference +version: 2.1 + +# Define a job to be invoked later in a workflow. +# See: https://circleci.com/docs/2.0/configuration-reference/#jobs +jobs: + build: + working_directory: ~/repo + # Specify the execution environment. You can specify an image from Dockerhub or use one of our Convenience Images from CircleCI's Developer Hub. + # See: https://circleci.com/docs/2.0/configuration-reference/#docker-machine-macos-windows-executor + docker: + - image: circleci/golang:1.18 + # Add steps to the job + # See: https://circleci.com/docs/2.0/configuration-reference/#steps + steps: + - checkout + - restore_cache: + keys: + - go-mod-v4-{{ checksum "go.sum" }} + - run: + name: Install Dependencies + command: go mod download + - save_cache: + key: go-mod-v4-{{ checksum "go.sum" }} + paths: + - "/go/pkg/mod" + - run: + name: Run tests + command: | + mkdir -p /tmp/test-reports + gotestsum --junitfile /tmp/test-reports/unit-tests.xml + - store_test_results: + path: /tmp/test-reports + +# Invoke jobs via workflows +# See: https://circleci.com/docs/2.0/configuration-reference/#workflows +workflows: + sample: # This is the name of the workflow, feel free to change it to better match your workflow. + # Inside the workflow, you define the jobs you want to run. + jobs: + - build \ No newline at end of file diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..511f0fc --- /dev/null +++ b/.drone.yml @@ -0,0 +1,11 @@ +kind: pipeline +type: docker +name: clone + +steps: + - name: test-golang + image: golang:1.18 + commands: + - go env -w GO111MODULE=on + - go env -w GOPROXY=https://goproxy.cn,direct + - go test -v ./... \ No newline at end of file diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml new file mode 100644 index 0000000..1d4bb34 --- /dev/null +++ b/.github/workflows/coverage.yml @@ -0,0 +1,38 @@ +name: coverage + +on: + push: + branches: [ master ] + paths-ignore: + - '**.md' + pull_request: + branches: [ master ] + paths-ignore: + - '**.md' + +jobs: + test: + name: Test with Coverage + runs-on: ubuntu-latest + steps: + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: 1.18 + + - name: Check out code + uses: actions/checkout@v2 + + - name: Install dependencies + run: | + go mod download + - name: Run Unit tests + run: | + go test -race -covermode atomic -coverprofile=covprofile ./... + - name: Install goveralls + run: go install github.com/mattn/goveralls@latest + + - name: Send coverage + env: + COVERALLS_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: goveralls -coverprofile=covprofile -service=github \ No newline at end of file diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml new file mode 100644 index 0000000..cc923fb --- /dev/null +++ b/.github/workflows/go.yml @@ -0,0 +1,27 @@ +name: Go + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: 1.18 + + - name: Test + run: go test -v ./... + + - name: Test + run: go test ./... -race -coverprofile=coverage.txt -covermode=atomic + + - name: Coverage + run: bash <(curl -s https://codecov.io/bash) \ No newline at end of file diff --git a/.gitignore b/.gitignore index 34509e3..2b895f4 100644 --- a/.gitignore +++ b/.gitignore @@ -4,5 +4,4 @@ .idea .vscode *.log -gitmod.sh -*_test.go \ No newline at end of file +gitmod.sh \ No newline at end of file diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..688142c --- /dev/null +++ b/.travis.yml @@ -0,0 +1,7 @@ +language: go + +go: + - master + +script: + - go test -v ./... \ No newline at end of file diff --git a/gomod.sh b/gomod.sh new file mode 100644 index 0000000..c03f9f0 --- /dev/null +++ b/gomod.sh @@ -0,0 +1,3 @@ +go get -u && go mod tidy +go get -u all +go mod vendor \ No newline at end of file diff --git a/gostring_test.go b/gostring_test.go new file mode 100644 index 0000000..1dfe2cc --- /dev/null +++ b/gostring_test.go @@ -0,0 +1,48 @@ +package gostring + +import ( + "fmt" + "strings" + "testing" +) + +func TestName(t *testing.T) { + str := "iPhone 11 Pro Max" + fmt.Printf("%d\n", strings.LastIndex(str, "<")) + fmt.Printf("%d\n", strings.LastIndex(str, "(")) + fmt.Printf("%d\n", strings.LastIndex("iPad (6th generation, WiFi)", "<")) + fmt.Printf("%d\n", strings.LastIndex("iPad (6th generation, WiFi)", "(")) + s := str[0:17] + fmt.Printf("%s\n", s) + str = "iPad (6th generation, WiFi)" + s = str[0:5] + fmt.Printf("%s\n", s) + fmt.Printf(strings.TrimSpace(s)) +} + +func TestToInt64(t *testing.T) { + t.Log(ToInt64("120")) + t.Log(ToInt64("120.9")) + t.Log(strings.Contains("120", ",")) + t.Log(strings.Contains("120,1", ",")) +} + +func TestString(t *testing.T) { + str := "wx6566ef69e8738ad9" + fmt.Println(strings.Contains(str, "wx")) + myString := "www.5lmh.com" + if strings.HasPrefix(myString, "www") { + fmt.Println("Hello to you too") + } else { + fmt.Println("Goodbye") + } +} + +func TestSplit(t *testing.T) { + t.Log(Split("1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20", ",")) +} + +func TestContains(t *testing.T) { + t.Log(Contains("1", ",")) + t.Log(Contains("1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20", ",")) +}