diff --git a/ShadowsocksX-NG2/Tests/ProxyControlWorkflowIntegrationTests.swift b/ShadowsocksX-NG2/Tests/ProxyControlWorkflowIntegrationTests.swift index 2a6e5dd5..a8accfb7 100644 --- a/ShadowsocksX-NG2/Tests/ProxyControlWorkflowIntegrationTests.swift +++ b/ShadowsocksX-NG2/Tests/ProxyControlWorkflowIntegrationTests.swift @@ -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 + } + } +}