mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	Substitute variables in path names of template repos too (#25294)
### Summary Extend the template variable substitution to replace file paths. This can be helpful for setting up log files & directories that should match the repository name. ### PR Changes - Move files matching glob pattern when setting up repos from template - For security, added ~escaping~ sanitization for cross-platform support and to prevent directory traversal (thanks @silverwind for the reference) - Added unit testing for escaping function - Fixed the integration tests for repo template generation by passing the repo_template_id - Updated the integration testfiles to add some variable substitution & assert the outputs I had to fix the existing repo template integration test and extend it to add a check for variable substitutions. Example: 
This commit is contained in:
		@@ -54,3 +54,14 @@ func TestGiteaTemplate(t *testing.T) {
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestFileNameSanitize(t *testing.T) {
 | 
			
		||||
	assert.Equal(t, "test_CON", fileNameSanitize("test_CON"))
 | 
			
		||||
	assert.Equal(t, "test CON", fileNameSanitize("test CON "))
 | 
			
		||||
	assert.Equal(t, "__traverse__", fileNameSanitize("../traverse/.."))
 | 
			
		||||
	assert.Equal(t, "http___localhost_3003_user_test.git", fileNameSanitize("http://localhost:3003/user/test.git"))
 | 
			
		||||
	assert.Equal(t, "_", fileNameSanitize("CON"))
 | 
			
		||||
	assert.Equal(t, "_", fileNameSanitize("con"))
 | 
			
		||||
	assert.Equal(t, "_", fileNameSanitize("\u0000"))
 | 
			
		||||
	assert.Equal(t, "目标", fileNameSanitize("目标"))
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user