mirror of
				https://github.com/woodpecker-ci/woodpecker.git
				synced 2025-11-04 03:34:16 +00:00 
			
		
		
		
	@@ -19,6 +19,7 @@ import (
 | 
			
		||||
	"context"
 | 
			
		||||
	"crypto/tls"
 | 
			
		||||
	"errors"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"net/http"
 | 
			
		||||
	"os"
 | 
			
		||||
	"runtime"
 | 
			
		||||
@@ -182,9 +183,8 @@ func loop(c *cli.Context) error {
 | 
			
		||||
		"repo":     "*", // allow all repos by default
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, v := range c.StringSlice("filter") {
 | 
			
		||||
		parts := strings.SplitN(v, "=", 2)
 | 
			
		||||
		labels[parts[0]] = parts[1]
 | 
			
		||||
	if err := stringSliceAddToMap(c.StringSlice("filter"), labels); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	filter := rpc.Filter{
 | 
			
		||||
@@ -245,3 +245,21 @@ func loop(c *cli.Context) error {
 | 
			
		||||
	wg.Wait()
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func stringSliceAddToMap(sl []string, m map[string]string) error {
 | 
			
		||||
	if m == nil {
 | 
			
		||||
		m = make(map[string]string)
 | 
			
		||||
	}
 | 
			
		||||
	for _, v := range sl {
 | 
			
		||||
		parts := strings.SplitN(v, "=", 2)
 | 
			
		||||
		switch len(parts) {
 | 
			
		||||
		case 2:
 | 
			
		||||
			m[parts[0]] = parts[1]
 | 
			
		||||
		case 1:
 | 
			
		||||
			return fmt.Errorf("key '%s' does not have a value assigned", parts[0])
 | 
			
		||||
		default:
 | 
			
		||||
			return fmt.Errorf("empty string in slice")
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										75
									
								
								cmd/agent/agent_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								cmd/agent/agent_test.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,75 @@
 | 
			
		||||
// 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 main
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"testing"
 | 
			
		||||
 | 
			
		||||
	"github.com/stretchr/testify/assert"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func TestStringSliceAddToMap(t *testing.T) {
 | 
			
		||||
	tests := []struct {
 | 
			
		||||
		name     string
 | 
			
		||||
		sl       []string
 | 
			
		||||
		m        map[string]string
 | 
			
		||||
		expected map[string]string
 | 
			
		||||
		err      bool
 | 
			
		||||
	}{
 | 
			
		||||
		{
 | 
			
		||||
			name: "add values to map",
 | 
			
		||||
			sl:   []string{"foo=bar", "baz=qux=nux"},
 | 
			
		||||
			m:    make(map[string]string),
 | 
			
		||||
			expected: map[string]string{
 | 
			
		||||
				"foo": "bar",
 | 
			
		||||
				"baz": "qux=nux",
 | 
			
		||||
			},
 | 
			
		||||
			err: false,
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			name:     "empty slice",
 | 
			
		||||
			sl:       []string{},
 | 
			
		||||
			m:        make(map[string]string),
 | 
			
		||||
			expected: map[string]string{},
 | 
			
		||||
			err:      false,
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			name:     "missing value",
 | 
			
		||||
			sl:       []string{"foo", "baz=qux"},
 | 
			
		||||
			m:        make(map[string]string),
 | 
			
		||||
			expected: map[string]string{},
 | 
			
		||||
			err:      true,
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			name:     "empty string in slice",
 | 
			
		||||
			sl:       []string{"foo=bar", "", "baz=qux"},
 | 
			
		||||
			m:        make(map[string]string),
 | 
			
		||||
			expected: map[string]string{},
 | 
			
		||||
			err:      true,
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, tt := range tests {
 | 
			
		||||
		t.Run(tt.name, func(t *testing.T) {
 | 
			
		||||
			err := stringSliceAddToMap(tt.sl, tt.m)
 | 
			
		||||
 | 
			
		||||
			if tt.err {
 | 
			
		||||
				assert.Error(t, err)
 | 
			
		||||
			} else {
 | 
			
		||||
				assert.EqualValues(t, tt.expected, tt.m)
 | 
			
		||||
			}
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user