github.com/erda-project/erda-infra@v1.0.9/pkg/strutil/regexp_test.go (about) 1 // Copyright (c) 2021 Terminus, Inc. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package strutil 16 17 import ( 18 "regexp" 19 "testing" 20 21 "github.com/stretchr/testify/assert" 22 ) 23 24 func TestReplaceAllStringSubmatchFunc(t *testing.T) { 25 s := "${java:OUTPUT:image} ${js:OUTPUT:image}" 26 m := map[string]map[string]string{ 27 "java": { 28 "image": "openjdk:8", 29 }, 30 "js": { 31 "image": "herd:1.3", 32 }, 33 } 34 re := regexp.MustCompile(`\${([^:]+):OUTPUT:([^:]+)}`) 35 replaced := ReplaceAllStringSubmatchFunc(re, s, func(sub []string) string { 36 return m[sub[1]][sub[2]] 37 }) 38 assert.Equal(t, "openjdk:8 herd:1.3", replaced) 39 }