1#!/bin/sh
2
3# Author:     Héctor Molinero Fernández <hector@molinero.dev>
4# License:    MIT, https://opensource.org/licenses/MIT
5# Repository: https://github.com/hectorm/hblock
6
7set -eu
8export LC_ALL='C'
9
10SCRIPT_DIR="$(CDPATH='' cd -- "$(dirname -- "${0:?}")" && pwd -P)"
11
12# shellcheck disable=SC1091
13. "${SCRIPT_DIR:?}"/env.sh
14
15main() {
16	export HBLOCK_SOURCES="file://${SCRIPT_DIR:?}/test-domains-source.txt"
17	export HBLOCK_DENYLIST_FILE=''
18
19	printf 'Test - Main - Denylist: "-D" short option\n'
20	actual="$(runInTestShell "${SCRIPT_DIR:?}/../../hblock" -qO- -D "${SCRIPT_DIR:?}/denylist.txt")"
21	expected="$(cat -- "${0%.sh}".out)"
22	if ! assertEquals "${actual?}" "${expected?}"; then
23		exit 1
24	fi
25
26	printf 'Test - Main - Denylist: "--denylist" long option\n'
27	actual="$(runInTestShell "${SCRIPT_DIR:?}/../../hblock" -qO- --denylist="${SCRIPT_DIR:?}/denylist.txt")"
28	expected="$(cat -- "${0%.sh}".out)"
29	if ! assertEquals "${actual?}" "${expected?}"; then
30		exit 1
31	fi
32
33	printf 'Test - Main - Denylist: "--denylist" long option with "builtin" value\n'
34	actual="$(runInTestShell "${SCRIPT_DIR:?}/../../hblock" -qO- --denylist='builtin')"
35	expected="$(cat -- "${0%.sh}"-builtin.out)"
36	if ! assertEquals "${actual?}" "${expected?}"; then
37		exit 1
38	fi
39
40	printf 'Test - Main - Denylist: "--denylist" long option with "none" value\n'
41	actual="$(runInTestShell "${SCRIPT_DIR:?}/../../hblock" -qO- --denylist='none')"
42	expected="$(cat -- "${0%.sh}"-none.out)"
43	if ! assertEquals "${actual?}" "${expected?}"; then
44		exit 1
45	fi
46
47	printf 'Test - Main - Denylist: "--denylist" long option with "-" value\n'
48	actual="$(cat -- "${SCRIPT_DIR:?}/denylist.txt" | runInTestShell "${SCRIPT_DIR:?}/../../hblock" -qO- --denylist='-')"
49	expected="$(cat -- "${0%.sh}".out)"
50	if ! assertEquals "${actual?}" "${expected?}"; then
51		exit 1
52	fi
53
54	printf 'Test - Main - Denylist: "--denylist" long option with a non-existent file\n'
55	actual="$(runInTestShell "${SCRIPT_DIR:?}/../../hblock" -qO- --denylist='/hblock/invalid.txt')"
56	expected="$(cat -- "${0%.sh}"-invalid.out)"
57	if ! assertEquals "${actual?}" "${expected?}"; then
58		exit 1
59	fi
60
61	printf 'Test - Main - Denylist: "HBLOCK_DENYLIST_FILE" environment variable\n'
62	actual="$(set -a; HBLOCK_DENYLIST_FILE="${SCRIPT_DIR:?}/denylist.txt" runInTestShell "${SCRIPT_DIR:?}/../../hblock" -qO-)"
63	expected="$(cat -- "${0%.sh}".out)"
64	if ! assertEquals "${actual?}" "${expected?}"; then
65		exit 1
66	fi
67
68	printf 'Test - Main - Denylist: "HBLOCK_DENYLIST_FILE" environment variable with a non-existent file\n'
69	actual="$(set -a; HBLOCK_DENYLIST_FILE='/hblock/invalid.txt' runInTestShell "${SCRIPT_DIR:?}/../../hblock" -qO-)"
70	expected="$(cat -- "${0%.sh}"-invalid.out)"
71	if ! assertEquals "${actual?}" "${expected?}"; then
72		exit 1
73	fi
74
75	printf 'Test - Main - Denylist: "HBLOCK_DENYLIST" environment variable\n'
76	actual="$(set -a; HBLOCK_DENYLIST="$(cat -- "${SCRIPT_DIR:?}/denylist.txt")" runInTestShell "${SCRIPT_DIR:?}/../../hblock" -qO-)"
77	expected="$(cat -- "${0%.sh}".out)"
78	if ! assertEquals "${actual?}" "${expected?}"; then
79		exit 1
80	fi
81}
82
83main "${@-}"
84