Test that show_blocklist() outputs parsed domains to stdout. -- Testcase -- import adb from 'adblock-fast'; import { popen } from 'fs'; let ti = adb._test_internals; // Build the blocklist 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.env.dns_set_output_values('dnsmasq.servers'); ti.append_urls(); ti.download_lists(); // show_blocklist() uses system() to run sed parse_filter on the output file, // which outputs plain domains to stdout. Count lines and check a few domains. let cmd = sprintf("sed '%s' %s", ti.dns_output.parse_filter, ti.dns_output.file); let p = popen(cmd, 'r'); let out = p ? (p.read('all') || '') : ''; if (p) p.close(); let domains = filter(split(out, '\n'), l => length(l) > 0); let count = length(domains); let must_have = [ 'ad.doubleclick.test.example.com', 'common-shared-1.test.example.com', 'adhost-zero-1.test.example.org', ]; let domain_set = {}; for (let d in domains) domain_set[d] = true; let results = []; push(results, sprintf('domain_count: %d', count)); for (let d in must_have) { push(results, sprintf('%s: %s', d, domain_set[d] ? 'PRESENT' : 'MISSING')); } print(join('\n', results) + '\n'); -- End -- -- Expect stdout -- domain_count: 162 ad.doubleclick.test.example.com: PRESENT common-shared-1.test.example.com: PRESENT adhost-zero-1.test.example.org: PRESENT -- End --