mirror of
https://codeberg.org/woodpecker-plugins/go-plugin.git
synced 2024-12-27 12:57:43 +01:00
127 lines
4.8 KiB
Go
127 lines
4.8 KiB
Go
// Copyright 2023 Woodpecker Authors
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package plugin
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func testMetadata() map[string]string {
|
|
return map[string]string{
|
|
"CI": "woodpecker",
|
|
// Repository
|
|
"CI_REPO": "woodpecker-ci/woodpecker",
|
|
"CI_REPO_NAME": "woodpecker",
|
|
"CI_REPO_OWNER": "woodpecker-ci",
|
|
"CI_REPO_SCM": "git",
|
|
"CI_REPO_URL": "https://codeberg.org/woodpecker-plugins/go-plugin",
|
|
"CI_REPO_CLONE_URL": "https://codeberg.org/woodpecker-plugins/go-plugin.git",
|
|
"CI_REPO_DEFAULT_BRANCH": "main",
|
|
"CI_REPO_PRIVATE": "false",
|
|
// Commit
|
|
"CI_COMMIT_SHA": "a1b2c3d4",
|
|
"CI_COMMIT_REF": "refs/heads/main",
|
|
"CI_COMMIT_REFSPEC": "refs/heads/main",
|
|
"CI_COMMIT_BRANCH": "main",
|
|
"CI_COMMIT_MESSAGE": "test commit",
|
|
"CI_COMMIT_AUTHOR": "John Doe",
|
|
"CI_COMMIT_AUTHOR_EMAIL": "john@example.com",
|
|
"CI_COMMIT_AUTHOR_AVATAR": "https://avatars.githubusercontent.com/u/1234567?v=4",
|
|
"CI_COMMIT_URL": "https://codeberg.org/woodpecker-plugins/go-plugin/commit/a1b2c3d4",
|
|
// Build
|
|
"CI_PIPELINE_NUMBER": "1",
|
|
"CI_PIPELINE_EVENT": EventTypePush,
|
|
"CI_PIPELINE_URL": "https://ci.woodpecker-ci.org/woodpecker-ci/woodpecker/1",
|
|
"CI_PIPELINE_STATUS": "running",
|
|
"CI_PIPELINE_CREATED": "1611234567",
|
|
"CI_PIPELINE_STARTED": "1611234567",
|
|
"CI_PIPELINE_FILES": `["README.md", "main.go"]`,
|
|
// Step
|
|
"CI_STEP_NUMBER": "1",
|
|
"CI_STEP_NAME": "test",
|
|
"CI_STEP_STATUS": "running",
|
|
"CI_STEP_STARTED": "1611234567",
|
|
// System
|
|
"CI_SYSTEM_NAME": "woodpecker",
|
|
"CI_SYSTEM_URL": "https://ci.woodpecker-ci.org",
|
|
"CI_SYSTEM_VERSION": "1.0.0",
|
|
"CI_SYSTEM_HOST": "woodpecker-ci.org",
|
|
// Forge
|
|
"CI_FORGE_TYPE": ForgeTypeGitea,
|
|
"CI_FORGE_URL": "https://codeberg.org",
|
|
}
|
|
}
|
|
|
|
func TestMetadata(t *testing.T) {
|
|
for k, v := range testMetadata() {
|
|
os.Setenv(k, v)
|
|
defer os.Unsetenv(k)
|
|
}
|
|
plugin := New(Options{
|
|
Execute: func(ctx context.Context) error {
|
|
return nil
|
|
},
|
|
})
|
|
err := plugin.app.Run(plugin.ctx, []string{"test"})
|
|
require.NoError(t, err)
|
|
|
|
// Repository
|
|
assert.Equal(t, "woodpecker", plugin.Metadata.Repository.Name)
|
|
assert.Equal(t, "woodpecker-ci", plugin.Metadata.Repository.Owner)
|
|
assert.Equal(t, "https://codeberg.org/woodpecker-plugins/go-plugin", plugin.Metadata.Repository.URL)
|
|
assert.Equal(t, "https://codeberg.org/woodpecker-plugins/go-plugin.git", plugin.Metadata.Repository.CloneURL)
|
|
assert.Equal(t, "main", plugin.Metadata.Repository.Branch)
|
|
assert.False(t, plugin.Metadata.Repository.Private)
|
|
|
|
// Commit
|
|
assert.Equal(t, "a1b2c3d4", plugin.Metadata.Curr.Sha)
|
|
assert.Equal(t, "refs/heads/main", plugin.Metadata.Curr.Ref)
|
|
assert.Equal(t, "refs/heads/main", plugin.Metadata.Curr.Refspec)
|
|
assert.Equal(t, "main", plugin.Metadata.Curr.Branch)
|
|
assert.Equal(t, "test commit", plugin.Metadata.Curr.Message)
|
|
assert.Equal(t, "John Doe", plugin.Metadata.Curr.Author.Name)
|
|
assert.Equal(t, "john@example.com", plugin.Metadata.Curr.Author.Email)
|
|
assert.Equal(t, "https://avatars.githubusercontent.com/u/1234567?v=4", plugin.Metadata.Curr.Author.Avatar)
|
|
|
|
// Pipeline
|
|
assert.Equal(t, int64(1), plugin.Metadata.Pipeline.Number)
|
|
assert.Equal(t, EventTypePush, plugin.Metadata.Pipeline.Event)
|
|
assert.Equal(t, "https://ci.woodpecker-ci.org/woodpecker-ci/woodpecker/1", plugin.Metadata.Pipeline.URL)
|
|
assert.Equal(t, "running", plugin.Metadata.Pipeline.Status)
|
|
assert.Equal(t, time.Unix(1611234567, 0), plugin.Metadata.Pipeline.Created)
|
|
assert.Equal(t, time.Unix(1611234567, 0), plugin.Metadata.Pipeline.Started)
|
|
assert.Equal(t, []string{"README.md", "main.go"}, plugin.Metadata.Pipeline.ChangedFiles)
|
|
|
|
// Step
|
|
assert.Equal(t, 1, plugin.Metadata.Step.Number)
|
|
assert.Equal(t, time.Unix(1611234567, 0), plugin.Metadata.Step.Started)
|
|
|
|
// System
|
|
assert.Equal(t, "woodpecker", plugin.Metadata.System.Name)
|
|
assert.Equal(t, "https://ci.woodpecker-ci.org", plugin.Metadata.System.URL)
|
|
assert.Equal(t, "1.0.0", plugin.Metadata.System.Version)
|
|
assert.Equal(t, "woodpecker-ci.org", plugin.Metadata.System.Host)
|
|
|
|
// Forge
|
|
assert.Equal(t, ForgeTypeGitea, plugin.Metadata.Forge.Type)
|
|
assert.Equal(t, "https://codeberg.org", plugin.Metadata.Forge.URL)
|
|
}
|