Merge remote-tracking branch 'origin/dev' into dev
测试构建 / 代码检查 (push) Has been cancelled
测试构建 / 单元测试和构建 (push) Has been cancelled
测试构建 / 构建验证 (push) Has been cancelled

This commit is contained in:
ZacharyZcR
2026-05-16 06:57:16 +08:00
2 changed files with 40 additions and 5 deletions
+31 -1
View File
@@ -590,6 +590,18 @@ func TestParseIP_IPRange(t *testing.T) {
} }
} }
func TestParseIP_IPRangeLimit(t *testing.T) {
result, err := parseIPRangeString("192.168.1.1-5", 3)
if err != nil {
t.Fatalf("parseIPRangeString error = %v", err)
}
expected := []string{"192.168.1.1", "192.168.1.2", "192.168.1.3"}
if !reflect.DeepEqual(result, expected) {
t.Errorf("parseIPRangeString limit = %v, want %v", result, expected)
}
}
// TestParseIP_FromFile 测试从文件读取 // TestParseIP_FromFile 测试从文件读取
// //
// 验证:文件中的IP列表被正确读取 // 验证:文件中的IP列表被正确读取
@@ -969,6 +981,24 @@ func TestParseIP_FullIPRange(t *testing.T) {
} }
} }
func TestParseIP_FullIPRangeNoLimit(t *testing.T) {
result, err := parseIPRangeString("192.168.1.1-192.168.1.5", -1)
if err != nil {
t.Fatalf("parseIPRangeString error = %v", err)
}
expected := []string{
"192.168.1.1",
"192.168.1.2",
"192.168.1.3",
"192.168.1.4",
"192.168.1.5",
}
if !reflect.DeepEqual(result, expected) {
t.Errorf("parseIPRangeString no limit = %v, want %v", result, expected)
}
}
// TestParseIP_InvalidCIDR 测试无效CIDR // TestParseIP_InvalidCIDR 测试无效CIDR
func TestParseIP_InvalidCIDR(t *testing.T) { func TestParseIP_InvalidCIDR(t *testing.T) {
tests := []struct { tests := []struct {
@@ -1173,7 +1203,7 @@ test:
{"admin", "password123"}, {"admin", "password123"},
{"root", "toor"}, {"root", "toor"},
{"user", "pass:with:colons"}, // 密码可以包含冒号 {"user", "pass:with:colons"}, // 密码可以包含冒号
{"test", ""}, // 空密码 {"test", ""}, // 空密码
} }
if len(result) != len(tests) { if len(result) != len(tests) {
+9 -4
View File
@@ -302,7 +302,7 @@ func parseIPCIDR(cidr string, maxTargets int) ([]string, error) {
for ipNet.Contains(ip) { for ipNet.Contains(ip) {
ips = append(ips, ip.String()) ips = append(ips, ip.String())
count++ count++
if count >= maxTargets { if maxTargets > 0 && count >= maxTargets {
break break
} }
incrementIP(ip) incrementIP(ip)
@@ -346,7 +346,7 @@ func parseIPRangeString(rangeStr string, maxTargets int) ([]string, error) {
// 处理简写格式 (如: 192.168.1.1-100) // 处理简写格式 (如: 192.168.1.1-100)
if len(endIPStr) < 4 || !strings.Contains(endIPStr, ".") { if len(endIPStr) < 4 || !strings.Contains(endIPStr, ".") {
return parseIPShortRange(startIPStr, endIPStr) return parseIPShortRange(startIPStr, endIPStr, maxTargets)
} }
// 处理完整格式 (如: 192.168.1.1-192.168.1.100) // 处理完整格式 (如: 192.168.1.1-192.168.1.100)
@@ -359,7 +359,7 @@ func parseIPRangeString(rangeStr string, maxTargets int) ([]string, error) {
} }
// parseIPShortRange 解析短格式IP范围 // parseIPShortRange 解析短格式IP范围
func parseIPShortRange(startIPStr, endSuffix string) ([]string, error) { func parseIPShortRange(startIPStr, endSuffix string, maxTargets int) ([]string, error) {
endNum, err := strconv.Atoi(endSuffix) endNum, err := strconv.Atoi(endSuffix)
if err != nil || endNum > 255 { if err != nil || endNum > 255 {
return nil, fmt.Errorf("无效的IP范围结束值: %s", endSuffix) return nil, fmt.Errorf("无效的IP范围结束值: %s", endSuffix)
@@ -377,8 +377,13 @@ func parseIPShortRange(startIPStr, endSuffix string) ([]string, error) {
} }
var allIP []string var allIP []string
count := 0
for i := startNum; i <= endNum; i++ { for i := startNum; i <= endNum; i++ {
allIP = append(allIP, fmt.Sprintf("%s.%d", prefixIP, i)) allIP = append(allIP, fmt.Sprintf("%s.%d", prefixIP, i))
count++
if maxTargets > 0 && count >= maxTargets {
break
}
} }
return allIP, nil return allIP, nil
@@ -408,7 +413,7 @@ func parseIPFullRange(startIP, endIP net.IP, maxTargets int) ([]string, error) {
ips = append(ips, current.String()) ips = append(ips, current.String())
count++ count++
if current.Equal(end4) || count >= maxTargets { if current.Equal(end4) || (maxTargets > 0 && count >= maxTargets) {
break break
} }
incrementIP(current) incrementIP(current)