mirror of
https://github.com/shadowsocks/ShadowsocksX-NG.git
synced 2026-11-02 08:33:46 +00:00
test: 为代理控制集成测试注入小规则夹具
This commit is contained in:
@@ -73,6 +73,8 @@ final class ProxyControlWorkflowIntegrationTests: XCTestCase {
|
||||
settings: ActivationFixture.listen, unreadableError: nil),
|
||||
settingsStore: settingsStore ?? InMemoryProxySettingsStore(),
|
||||
appBundle: AppArtifact.bundle,
|
||||
// Keep real ACL compilation; corpus coverage belongs to the packaged-rule tests.
|
||||
ruleSnapshots: BuiltinRuleSnapshots(loader: Self.controlFlowRuleSnapshot),
|
||||
settingsRestore: RestoredProxySettings(
|
||||
settings: settings ?? ProxySettings(listen: ActivationFixture.listen),
|
||||
unreadableError: nil),
|
||||
@@ -304,3 +306,34 @@ final class ProxyControlWorkflowIntegrationTests: XCTestCase {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
extension ProxyControlWorkflowIntegrationTests {
|
||||
fileprivate nonisolated static func controlFlowRuleSnapshot(_ source: RulesSource) throws
|
||||
-> RuleSnapshot
|
||||
{
|
||||
switch source {
|
||||
case .geolocationCN:
|
||||
return rulesFixture(
|
||||
source,
|
||||
rules: [
|
||||
ProxyRule(action: .direct, match: .domainExact("direct.example")),
|
||||
ProxyRule(action: .direct, match: .domainSuffix("internal.example")),
|
||||
])
|
||||
case .chinaIPv4:
|
||||
return rulesFixture(
|
||||
source,
|
||||
rules: [
|
||||
ProxyRule(action: .direct, match: .ipv4CIDR("1.0.0.0/24"))
|
||||
])
|
||||
case .gfwlist:
|
||||
return rulesFixture(
|
||||
source,
|
||||
rules: [
|
||||
ProxyRule(action: .proxy, match: .domainSuffix("proxy.example")),
|
||||
ProxyRule(action: .direct, match: .domainExact("safe.proxy.example")),
|
||||
])
|
||||
case .custom, .fixed:
|
||||
throw RuleSnapshotError.missing
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user