* feat(tests): add comprehensive unit tests for various utility functions and views
- Implement tests for cache utility to ensure proper behavior with no cache and TTL keys.
- Add tests for common utilities including string manipulation and path handling.
- Introduce tests for directory import functionality to validate file imports and pattern matching.
- Create tests for git hash retrieval to handle fallback scenarios.
- Develop tests for deprecated got utility to verify response handling and retry logic.
- Enhance got utility tests to include request hooks and search parameter handling.
- Mock header generator tests to validate user agent handling.
- Expand helpers tests to cover current path retrieval and duration parsing.
- Implement tests for ofetch utility to ensure proper proxy handling and logging.
- Add OpenTelemetry metric tests to validate metric serialization.
- Create proxy tests to verify multi-proxy selection and failure handling.
- Introduce request rewriter tests to validate fetch and get wrapper functionality.
- Add timezone utility tests to handle various input types.
- Implement view tests for Atom and RSS rendering to ensure correct output.
- Create index view tests to validate debug information display based on configuration.
* refactor: remove deprecated got implementation and associated tests
* test: expand coverage for api, middleware, and utils
* fix(core): CACHE_TYPE='' does not disable cache
The documentation of config always states that CACHE_TYPE being empty
will disable the cache.
The regression was introduced in 847724ca. The corresponding test case
was mistakenly "fixed" in 719af907.
Signed-off-by: Rongrong <i@rong.moe>
* fix(core): false RSS <ttl> when cache unavailable
Some RSS readers may probe <ttl> to determine the minimum interval of
polling. However, it is always set to `config.cache.routeExpire / 60`
even when cache is unavailable. This may not be expected when the cache
is explicitly disabled.
Set it to 1 (minute) under such a circumstance. The minimum <ttl> (when
cache is available) is also limited to 1 to avoid potential misuse.
The Cache-Control header remains untouched as caching can be done by a
reverse proxy.
Signed-off-by: Rongrong <i@rong.moe>
---------
Signed-off-by: Rongrong <i@rong.moe>
* test: add critical routes test
* fix: youtube channels config
* test: add full routes test
* test: output full routes test result
* test: build routes before test
* test: use one reporter
* test: fix cache test errors
* test: fix cache test errors
* chore: puppeteerrc.cjs
* chore: puppeteerrc.cjs
* chore: puppeteerrc.cjs
* fix: build script
* chore: puppeteerrc rename
* test: route test names
* chore: pass test result to docs