* fix(tests): properly silence log output
Using `init` allows it to also work for benchmarks.
And `log.Silence` was sometimes getting overridden by `log.init`.
* squash: fix(server): don't setup the logger again
* Whietlist dot imports for test packages
* improved generate-lcov script
* moved mock_call_sequence to helpertest
* removed default config for markdown
* generate seperate lcov.info for each directory
* path fix in lcov generation script
* ginkgo -> v2.13.1
* fixed redundant strings
* added exampleComKey
* added folder name to finish message
* hide lcov.info in devcontainer
* coverage plugin is bugged if lcov file is excluded
* moved all lcov files to coverage folder
* added requested toos #1251
* extension cleanup & added ginkgo watch
* added gcov2lcov
* added test explorer and reworked scripts
* go mod tidy
* use package cache volume
* script rework
* defined tasks
* defined launch
* don't try to convert if test was canceld
* generate lcov only in devcontainer
* disable coverage upload on forks
* wip: make lcov
* fixed unit tests for parallel
* parallel test for lists
* fix serve test for parallel
* parallel test fixes
* deleted accident commit
* wip: make lcov
* restructured settings location
* start script refactoring
* added GetProcessPort
* fixed parallel ports
* race fix
* changed port for github runner binding
* fixed local list var in test
* more local vars in tests fix
* less local vars
* run test & race parallel
* removed invalid error check
* fixed error check
* less local variables
* fixed timing problem
* removed gcov2lcov
* added generate-lcov
* added GINKGO_PROCS to makefile
* fixed workflow
* run generate-lcov on save *.go
* added tooltitude
* Add maxErrorsPerFile blocking configuration
The default max errors per file of 5 is too small IMHO.
This commit makes this number user-configurable.
* squash: fix lint
* squash: docs
* squash: change type to int to allow -1
* squash: test that the `maxErrorsPerFile` is actually used
---------
Co-authored-by: ThinkChaos <ThinkChaos@users.noreply.github.com>
* Added fork sync workflow(syncs the main branch with upstream every 30 minutes)
* Added monthly workflow run deletion(all skipped or canceld and runs older than 30days will be deleted)
* Removed Docker image build for main branch on forks
* Added documentation how to enable sync and docker build workflows
* refactor: make `config.Duration` a struct with `time.Duration` embed
Allows directly calling `time.Duration` methods.
* refactor(HostsFileResolver): don't copy individual config items
The idea is to make adding configuration options easier, and searching
for references straight forward.
* refactor: move config printing to struct and use a logger
Using a logger allows using multiple levels so the whole configuration
can be printed in trace/verbose mode, but only important parts are
shown by default.
* squash: rename `Cast` to `ToDuration`
* squash: revert `Duration` to a simple wrapper ("new type" pattern)
* squash: `Duration.IsZero` tests
* squash: refactor resolvers to rely on their config directly if possible
* squash: implement `IsEnabled` and `LogValues` for all resolvers
* refactor: use go-enum `--values` to simplify getting all log fields
* refactor: simplify `QType` unmarshaling
* squash: rename `ValueLogger` to `Configurable`
* squash: rename `UpstreamConfig` to `ParallelBestConfig`
* squash: rename `RewriteConfig` to `RewriterConfig`
* squash: config tests
* squash: resolver tests
* squash: add `ForEach` test and improve `Chain` ones
* squash: simplify implementing `config.Configurable`
* squash: minor changes for better coverage
* squash: more `UnmarshalYAML` -> `UnmarshalText`
* refactor: move `config.Upstream` into own file
* refactor: add `Resolver.Type` method
* squash: add `log` method to `typed` to use `Resolover.Type` as prefix
* squash: tweak startup config logging
* squash: add `LogResolverConfig` tests
* squash: make sure all options of type `Duration` use `%s`
Unify the hosts file parsing between the hosts resolver and lists so
the resolver supports more data sources than local files.
Lists' group cache is now re-used if refresh fails.
Also improve lookups in hosts:
Instead of iterating through all hosts+aliases for each A/AAAA query,
we can do a single lookup.
For PTR we search through only the hosts with an IP version that matches
the question. And compare IPs instead of building the reverse DNS name
for each IP in the hosts database.
* Enable start if one upstream resolver fails
* Will now check if upstream actually works
* Fixed default upstream in some tests
* Increase timeouts in some tests
* change default value of "StartVerifyUpstream" to false
Co-authored-by: Dimitri Herzog <dimitri.herzog@gmail.com>
* go test -> ginkgo
* removed flake-attempts as suggested
* added FlakeAttempts to flaky test definition
* as net.DNSError qualifies as net.Error check and correct the response
* fix in downloader.go resolves flaky tests
* unwrap maybe?
* excluede DownloadFile from funlen linter
* use eventually on io operations in file_writer_test
* file_writer_test flaky fixes
* fix linter errors
* Serve test reversed go routine
* matcher fix
* serve test rework 2
* DeferCleanup tmp files
* fixed some flakiness in resolver tests
* go mod tidy
* fixed linter errors
* JustAfterEach -> DeferCleanup
* changed close to defer
* moved unwrap from downloader to test
* fix linter error
* propper cleanup in "should return error"
Co-authored-by: Dimitri Herzog <dimitri.herzog@gmail.com>
* Update to Go 1.18
* remove "nolint:unparam", since unparam is currently disabled with go 1.18
* update golangci-lint to 1.46.2
Co-authored-by: Dimitri Herzog <dimitri.herzog@gmail.com>