mirror of
				https://github.com/go-gitea/gitea
				synced 2025-10-31 11:28:24 +00:00 
			
		
		
		
	The old code just parses an invalid key to `TypeInvalid` and uses it as normal, and duplicate keys will be kept. So this PR will ignore invalid key and log warning and also deduplicate valid units.
		
			
				
	
	
		
			54 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright 2023 The Gitea Authors. All rights reserved.
 | |
| // SPDX-License-Identifier: MIT
 | |
| 
 | |
| package unit
 | |
| 
 | |
| import (
 | |
| 	"testing"
 | |
| 
 | |
| 	"code.gitea.io/gitea/modules/setting"
 | |
| 
 | |
| 	"github.com/stretchr/testify/assert"
 | |
| )
 | |
| 
 | |
| func TestLoadUnitConfig(t *testing.T) {
 | |
| 	defer func(disabledRepoUnits, defaultRepoUnits, defaultForkRepoUnits []Type) {
 | |
| 		DisabledRepoUnits = disabledRepoUnits
 | |
| 		DefaultRepoUnits = defaultRepoUnits
 | |
| 		DefaultForkRepoUnits = defaultForkRepoUnits
 | |
| 	}(DisabledRepoUnits, DefaultRepoUnits, DefaultForkRepoUnits)
 | |
| 	defer func(disabledRepoUnits, defaultRepoUnits, defaultForkRepoUnits []string) {
 | |
| 		setting.Repository.DisabledRepoUnits = disabledRepoUnits
 | |
| 		setting.Repository.DefaultRepoUnits = defaultRepoUnits
 | |
| 		setting.Repository.DefaultForkRepoUnits = defaultForkRepoUnits
 | |
| 	}(setting.Repository.DisabledRepoUnits, setting.Repository.DefaultRepoUnits, setting.Repository.DefaultForkRepoUnits)
 | |
| 
 | |
| 	t.Run("regular", func(t *testing.T) {
 | |
| 		setting.Repository.DisabledRepoUnits = []string{"repo.issues"}
 | |
| 		setting.Repository.DefaultRepoUnits = []string{"repo.code", "repo.releases", "repo.issues", "repo.pulls"}
 | |
| 		setting.Repository.DefaultForkRepoUnits = []string{"repo.releases"}
 | |
| 		LoadUnitConfig()
 | |
| 		assert.Equal(t, []Type{TypeIssues}, DisabledRepoUnits)
 | |
| 		assert.Equal(t, []Type{TypeCode, TypeReleases, TypePullRequests}, DefaultRepoUnits)
 | |
| 		assert.Equal(t, []Type{TypeCode, TypeReleases}, DefaultForkRepoUnits)
 | |
| 	})
 | |
| 	t.Run("invalid", func(t *testing.T) {
 | |
| 		setting.Repository.DisabledRepoUnits = []string{"repo.issues", "invalid.1"}
 | |
| 		setting.Repository.DefaultRepoUnits = []string{"repo.code", "invalid.2", "repo.releases", "repo.issues", "repo.pulls"}
 | |
| 		setting.Repository.DefaultForkRepoUnits = []string{"invalid.3", "repo.releases"}
 | |
| 		LoadUnitConfig()
 | |
| 		assert.Equal(t, []Type{TypeIssues}, DisabledRepoUnits)
 | |
| 		assert.Equal(t, []Type{TypeCode, TypeReleases, TypePullRequests}, DefaultRepoUnits)
 | |
| 		assert.Equal(t, []Type{TypeCode, TypeReleases}, DefaultForkRepoUnits)
 | |
| 	})
 | |
| 	t.Run("duplicate", func(t *testing.T) {
 | |
| 		setting.Repository.DisabledRepoUnits = []string{"repo.issues", "repo.issues"}
 | |
| 		setting.Repository.DefaultRepoUnits = []string{"repo.code", "repo.releases", "repo.issues", "repo.pulls", "repo.code"}
 | |
| 		setting.Repository.DefaultForkRepoUnits = []string{"repo.releases", "repo.releases"}
 | |
| 		LoadUnitConfig()
 | |
| 		assert.Equal(t, []Type{TypeIssues}, DisabledRepoUnits)
 | |
| 		assert.Equal(t, []Type{TypeCode, TypeReleases, TypePullRequests}, DefaultRepoUnits)
 | |
| 		assert.Equal(t, []Type{TypeCode, TypeReleases}, DefaultForkRepoUnits)
 | |
| 	})
 | |
| }
 |