Test that allowed_domain config option removes domains and subdomains from output. -- Testcase -- import adb from 'adblock-fast'; import { readfile } from 'fs'; let ti = adb._test_internals; adb.env.load_config(); ti.set_cfg('dns', 'dnsmasq.servers'); ti.set_cfg('dnsmasq_sanity_check', false); ti.set_cfg('dnsmasq_validity_check', false); ti.set_cfg('heartbeat_domain', null); ti.set_cfg('config_update_enabled', false); ti.set_cfg('update_config_sizes', false); ti.set_cfg('allowed_domain', 'ad.doubleclick.test.example.com tracker.analytics.test.example.com'); ti.env.dns_set_output_values('dnsmasq.servers'); ti.append_urls(); let ok = ti.download_lists(); if (!ok) { print('download_lists failed\n'); } else { let content = readfile(ti.dns_output.file) || ''; // These should be removed by allowed_domain let allowed = [ 'ad.doubleclick.test.example.com', 'tracker.analytics.test.example.com', ]; // This should still be present let blocked = [ 'pixel.tracking.test.example.com', 'beacon.metrics.test.example.com', ]; let results = []; for (let a in allowed) { // Check for block format "server=/domain/\n" — not allow format "server=/domain/#\n" let found = index(content, 'server=/' + a + '/\n') >= 0; push(results, sprintf('allowed %s: %s', a, found ? 'STILL PRESENT (BAD)' : 'REMOVED')); } for (let b in blocked) { let found = index(content, 'server=/' + b + '/\n') >= 0; push(results, sprintf('blocked %s: %s', b, found ? 'PRESENT' : 'MISSING')); } print(join('\n', results) + '\n'); } -- End -- -- Expect stdout -- allowed ad.doubleclick.test.example.com: REMOVED allowed tracker.analytics.test.example.com: REMOVED blocked pixel.tracking.test.example.com: PRESENT blocked beacon.metrics.test.example.com: PRESENT -- End --