Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test failure for 0.12.0 on Arch Linux #1047

Open
orhun opened this issue Apr 17, 2023 · 13 comments
Open

Test failure for 0.12.0 on Arch Linux #1047

orhun opened this issue Apr 17, 2023 · 13 comments
Labels
question Further information is requested waiting-for-feedback

Comments

@orhun
Copy link
Contributor

orhun commented Apr 17, 2023

Hello!

I got this error while packaging lychee 0.12.0 for Arch Linux:

Logs
    Finished test [unoptimized + debuginfo] target(s) in 47.38s
    Starting 203 tests across 13 binaries (5 skipped)
        PASS [   0.115s] lychee::cli cli::test_cache_config
        PASS [   0.113s] lychee::cli cli::test_config_example
        PASS [   0.113s] lychee::cli cli::test_config_smoketest
        PASS [   0.112s] lychee::cli cli::test_dump_to_file
        PASS [   0.112s] lychee::cli cli::test_email_html_with_subject
        PASS [   0.112s] lychee::cli cli::test_email_markdown_with_subject
        PASS [   0.111s] lychee::cli cli::test_exclude_all_private
        PASS [   0.111s] lychee::cli cli::test_empty_config
        PASS [   0.109s] lychee::cli cli::test_failure_404_link
        PASS [   0.110s] lychee::cli cli::test_exclude_wildcard
        PASS [   0.108s] lychee::cli cli::test_glob_ignore_case
        PASS [   0.108s] lychee::cli cli::test_glob
        PASS [   0.108s] lychee::cli cli::test_glob_recursive
        PASS [   0.107s] lychee::cli cli::test_handle_nonexistent_relative_paths_as_input
        PASS [   0.107s] lychee::cli cli::test_handle_relative_paths_as_input
        PASS [   0.064s] lychee::cli cli::test_include_verbatim_via_remote_url
        PASS [   0.106s] lychee::cli cli::test_ignore_absolute_local_links_without_base
        PASS [   0.064s] lychee::cli cli::test_invalid_config
        PASS [   0.065s] lychee::cli cli::test_include_verbatim
        PASS [   0.063s] lychee::cli cli::test_lycheeignore_file
        PASS [   0.062s] lychee::cli cli::test_missing_config_error
        PASS [   0.061s] lychee::cli cli::test_print_excluded_links_in_verbose_mode
        PASS [   0.061s] lychee::cli cli::test_remap_uri
        PASS [   0.060s] lychee::cli cli::test_stdin_input_failure
        PASS [   0.061s] lychee::cli cli::test_resolve_paths
        FAIL [   0.061s] lychee::cli cli::test_skip_cache_unsupported

--- STDOUT:              lychee::cli cli::test_skip_cache_unsupported ---

running 1 test
test cli::test_skip_cache_unsupported ... FAILED

failures:

failures:
    cli::test_skip_cache_unsupported

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 53 filtered out; finished in 0.04s


--- STDERR:              lychee::cli cli::test_skip_cache_unsupported ---
thread 'cli::test_skip_cache_unsupported' panicked at 'assertion failed: buf.is_empty()', lychee-bin/tests/cli.rs:914:9
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

   Canceling due to test failure: 37 tests still running
        PASS [   0.059s] lychee::cli cli::test_verbatim_skipped_by_default
        PASS [   0.059s] lychee::cli cli::test_verbatim_skipped_by_default_via_remote_url
        PASS [   0.059s] lychee::cli cli::test_verbatim_skipped_by_default_via_file
        PASS [   0.058s] lychee::data_uris cli::test_dont_dump_data_uris_by_default
        PASS [   0.058s] lychee::data_uris cli::test_dump_data_uris_in_verbose_mode
        PASS [   0.058s] lychee::local_files cli::test_local_dir
        PASS [   0.058s] lychee::local_files cli::test_local_file
        PASS [   0.057s] lychee::usage readme::test_readme_usage_up_to_date
        PASS [   0.061s] lychee::cli cli::test_stdin_input_multiple
        PASS [   0.061s] lychee::cli cli::test_stdin_input
        PASS [   0.004s] lychee::bin/lychee commands::check::tests::test_show_cached_responses_in_progress_debug_output
        PASS [   0.004s] lychee::bin/lychee commands::check::tests::test_skip_cached_responses_in_progress_output
        PASS [   0.004s] lychee::bin/lychee formatters::duration::tests::test_formatting
        PASS [   0.004s] lychee::bin/lychee formatters::stats::markdown::tests::test_markdown_response_cached_err
        PASS [   0.004s] lychee::bin/lychee formatters::stats::markdown::tests::test_markdown_response_cached_ok
        PASS [   0.076s] lychee::cli cli::test_lycheecache_file
        PASS [   0.078s] lychee::cli cli::test_lycheecache_accept_custom_status_codes
        PASS [   0.222s] lychee::cli cli::test_cratesio_quirk
        PASS [   0.239s] lychee::cli cli::test_youtube_quirk
        PASS [   0.342s] lychee::cli cli::test_failure_github_404_no_token
        PASS [   0.666s] lychee::cli cli::test_exclude_email
        PASS [   0.670s] lychee::cli cli::test_caching_across_files
        PASS [   0.672s] lychee::cli cli::test_caching_single_file
        PASS [   0.617s] lychee::cli cli::test_unsupported_uri_schemes_are_ignored
        PASS [   0.619s] lychee::cli cli::test_schemes
        PASS [   0.671s] lychee::cli cli::test_excluded_paths
        PASS [   0.739s] lychee::cli cli::test_exclude_file
        PASS [   0.738s] lychee::cli cli::test_formatted_file_output
        PASS [   0.754s] lychee::cli cli::test_check_github_no_token
        PASS [   0.723s] lychee::cli cli::test_prevent_too_many_redirects
        PASS [   0.900s] benches::bench/extract extract from large docs
        PASS [   0.929s] lychee::cli cli::test_multiple_exclude_files
        PASS [   0.964s] lychee::bin/lychee archive::wayback::tests::wayback_suggestion
        PASS [   0.986s] lychee::cli cli::test_lycheeignore_and_exclude_file
        PASS [   1.048s] lychee::cli cli::test_require_https
        PASS [   1.296s] lychee::cli cli::test_inputs_without_scheme
        PASS [   1.434s] lychee::cli cli::test_exclude_multiple_urls
        PASS [   4.560s] lychee::bin/lychee archive::wayback::tests::wayback_suggestion_unknown_url
        PASS [   7.183s] lychee::cli cli::test_missing_file_ok_if_skip_missing
------------
     Summary [   7.237s] 65/203 tests run: 64 passed, 1 failed, 3 skipped
        FAIL [   0.061s] lychee::cli cli::test_skip_cache_unsupported
error: test run failed
make: *** [Makefile:43: test] Error 100

I'm simply running make test. Is there anything else I need to do?

@mre
Copy link
Member

mre commented Apr 17, 2023

Weird! I tried it locally inside a Docker container, and it worked for me. 🤔

Logs

~ ❯❯❯ docker run -it --rm menci/archlinuxarm
[root@e089761b79ce /]# curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
info: downloading installer

Welcome to Rust!

This will download and install the official compiler for the Rust
programming language, and its package manager, Cargo.

Rustup metadata and toolchains will be installed into the Rustup
home directory, located at:

/root/.rustup

This can be modified with the RUSTUP_HOME environment variable.

The Cargo home directory is located at:

/root/.cargo

This can be modified with the CARGO_HOME environment variable.

The cargo, rustc, rustup and other commands will be added to
Cargo's bin directory, located at:

/root/.cargo/bin

This path will then be added to your PATH environment variable by
modifying the profile file located at:

/root/.profile

You can uninstall at any time with rustup self uninstall and
these changes will be reverted.

Current installation options:

default host triple: aarch64-unknown-linux-gnu
default toolchain: stable (default)
profile: default
modify PATH variable: yes

  1. Proceed with installation (default)
  2. Customize installation
  3. Cancel installation

info: profile set to 'default'
info: default host triple is aarch64-unknown-linux-gnu
info: syncing channel updates for 'stable-aarch64-unknown-linux-gnu'
info: latest update on 2023-03-28, rust version 1.68.2 (9eb3afe9e 2023-03-27)
info: downloading component 'cargo'
info: downloading component 'clippy'
info: downloading component 'rust-docs'
19.4 MiB / 19.4 MiB (100 %) 16.4 MiB/s in 1s ETA: 0s
info: downloading component 'rust-std'
40.3 MiB / 40.3 MiB (100 %) 16.7 MiB/s in 2s ETA: 0s
info: downloading component 'rustc'
89.4 MiB / 89.4 MiB (100 %) 16.1 MiB/s in 5s ETA: 0s
info: downloading component 'rustfmt'
info: installing component 'cargo'
info: installing component 'clippy'
info: installing component 'rust-docs'
19.4 MiB / 19.4 MiB (100 %) 6.5 MiB/s in 2s ETA: 0s
info: installing component 'rust-std'
40.3 MiB / 40.3 MiB (100 %) 16.0 MiB/s in 2s ETA: 0s
info: installing component 'rustc'
89.4 MiB / 89.4 MiB (100 %) 19.0 MiB/s in 5s ETA: 0s
info: installing component 'rustfmt'
info: default toolchain set to 'stable-aarch64-unknown-linux-gnu'

stable-aarch64-unknown-linux-gnu installed - rustc 1.68.2 (9eb3afe9e 2023-03-27)

Rust is installed now. Great!

To get started you may need to restart your current shell.
This would reload your PATH environment variable to include
Cargo's bin directory ($HOME/.cargo/bin).

To configure your current shell, run:
source "$HOME/.cargo/env"
[root@e089761b79ce /]# git clone git@github.com:lycheeverse/lychee.git
bash: git: command not found
[root@e089761b79ce /]# pacman -S git
warning: database file for 'core' does not exist (use '-Sy' to download)
warning: database file for 'extra' does not exist (use '-Sy' to download)
warning: database file for 'community' does not exist (use '-Sy' to download)
warning: database file for 'alarm' does not exist (use '-Sy' to download)
warning: database file for 'aur' does not exist (use '-Sy' to download)
error: target not found: git
[root@e089761b79ce /]# sudo pacman -Syu
bash: sudo: command not found
[root@e089761b79ce /]# pacman -Syu
:: Synchronizing package databases...
core 247.6 KiB 187 KiB/s 00:01 [#################################################################] 100%
extra 2.5 MiB 6.61 MiB/s 00:00 [#################################################################] 100%
community 6.5 MiB 11.7 MiB/s 00:01 [#################################################################] 100%
alarm 57.4 KiB 146 KiB/s 00:00 [#################################################################] 100%
aur 9.3 KiB 60.1 KiB/s 00:00 [#################################################################] 100%
:: Starting full system upgrade...
there is nothing to do
[root@e089761b79ce /]# pacman -S git
resolving dependencies...
looking for conflicting packages...

Packages (6) db5.3-5.3.28-2 perl-5.36.0-3 perl-error-0.17029-4 perl-mailtools-2.21-6 perl-timedate-2.33-4 git-2.40.0-1

Total Download Size: 22.36 MiB
Total Installed Size: 116.76 MiB

:: Proceed with installation? [Y/n]
:: Retrieving packages...
perl-5.36.0-3-aarch64 14.7 MiB 6.14 MiB/s 00:02 [#################################################################] 100%
git-2.40.0-1-aarch64 6.2 MiB 3.21 MiB/s 00:02 [#################################################################] 100%
db5.3-5.3.28-2-aarch64 1413.5 KiB 988 KiB/s 00:01 [#################################################################] 100%
perl-mailtools-2.21-6-any 62.0 KiB 61.6 KiB/s 00:01 [#################################################################] 100%
perl-timedate-2.33-4-any 34.8 KiB 31.7 KiB/s 00:01 [#################################################################] 100%
perl-error-0.17029-4-any 21.6 KiB 21.5 KiB/s 00:01 [#################################################################] 100%
Total (6/6) 22.4 MiB 2.47 MiB/s 00:09 [#################################################################] 100%
(6/6) checking keys in keyring [#################################################################] 100%
(6/6) checking package integrity [#################################################################] 100%
(6/6) loading package files [#################################################################] 100%
(6/6) checking for file conflicts [#################################################################] 100%
(6/6) checking available disk space [#################################################################] 100%
:: Processing package changes...
(1/6) installing db5.3 [#################################################################] 100%
(2/6) installing perl [#################################################################] 100%
(3/6) installing perl-error [#################################################################] 100%
(4/6) installing perl-timedate [#################################################################] 100%
(5/6) installing perl-mailtools [#################################################################] 100%
(6/6) installing git [#################################################################] 100%
Optional dependencies for git
tk: gitk and git gui
perl-libwww: git svn
perl-term-readkey: git svn and interactive.singlekey setting
perl-io-socket-ssl: git send-email TLS support
perl-authen-sasl: git send-email TLS support
perl-mediawiki-api: git mediawiki support
perl-datetime-format-iso8601: git mediawiki support
perl-lwp-protocol-https: git mediawiki https support
perl-cgi: gitweb (web interface) support
python: git svn & git p4
subversion: git svn
org.freedesktop.secrets: keyring credential helper
libsecret: libsecret credential helper [installed]
:: Running post-transaction hooks...
(1/4) Creating system user accounts...
Creating group 'git' with GID 974.
Creating user 'git' (git daemon user) with UID 974 and GID 974.
(2/4) Reloading system manager configuration...
Skipped: Current root is not booted.
(3/4) Arming ConditionNeedsUpdate...
(4/4) Warn about old perl modules
[root@e089761b79ce /]# git clone git@github.com:lycheeverse/lychee.git
Cloning into 'lychee'...
error: cannot run ssh: No such file or directory
fatal: unable to fork
[root@e089761b79ce /]# git clone https://github.com/lycheeverse/lychee.git
Cloning into 'lychee'...
remote: Enumerating objects: 8558, done.
remote: Counting objects: 100% (47/47), done.
remote: Compressing objects: 100% (42/42), done.
remote: Total 8558 (delta 19), reused 17 (delta 5), pack-reused 8511
Receiving objects: 100% (8558/8558), 3.86 MiB | 4.28 MiB/s, done.
Resolving deltas: 100% (5727/5727), done.
[root@e089761b79ce /]# cd lychee/
[root@e089761b79ce lychee]# make test
bash: make: command not found
[root@e089761b79ce lychee]# pacman -S build-essential
error: target not found: build-essential
[root@e089761b79ce lychee]# sudo pacman -Sy base-devel
bash: sudo: command not found
[root@e089761b79ce lychee]# pacman -Sy base-devel
:: Synchronizing package databases...
core is up to date
extra is up to date
community is up to date
alarm is up to date
aur is up to date
resolving dependencies...
looking for conflicting packages...

Packages (23) autoconf-2.71-4 automake-1.16.5-2 binutils-2.38-5.1 bison-3.8.2-5 debugedit-5.0-5 diffutils-3.9-1 fakeroot-1.31-2 flex-2.6.4-5 gc-8.2.2-1 gcc-12.1.0-2.1
groff-1.22.4-10 guile-3.0.9-1 libisl-0.26-1 libmpc-1.3.1-1 libtool-2.4.7-2 m4-1.4.19-3 make-4.4.1-2 patch-2.7.6-9 pkgconf-1.8.1-1 sudo-1.9.13.p3-1
texinfo-7.0.3-1 which-2.21-6 base-devel-1-1

Total Download Size: 55.67 MiB
Total Installed Size: 277.84 MiB

:: Proceed with installation? [Y/n]
:: Retrieving packages...
gcc-12.1.0-2.1-aarch64 32.5 MiB 8.09 MiB/s 00:04 [#################################################################] 100%
guile-3.0.9-1-aarch64 7.2 MiB 4.43 MiB/s 00:02 [#################################################################] 100%
binutils-2.38-5.1-aarch64 5.2 MiB 2.88 MiB/s 00:02 [#################################################################] 100%
groff-1.22.4-10-aarch64 2003.1 KiB 1388 KiB/s 00:01 [#################################################################] 100%
sudo-1.9.13.p3-1-aarch64 1638.5 KiB 1417 KiB/s 00:01 [#################################################################] 100%
texinfo-7.0.3-1-aarch64 1530.1 KiB 1299 KiB/s 00:01 [#################################################################] 100%
libisl-0.26-1-aarch64 1492.7 KiB 1266 KiB/s 00:01 [#################################################################] 100%
bison-3.8.2-5-aarch64 733.7 KiB 597 KiB/s 00:01 [#################################################################] 100%
autoconf-2.71-4-any 638.8 KiB 570 KiB/s 00:01 [#################################################################] 100%
automake-1.16.5-2-any 606.6 KiB 489 KiB/s 00:01 [#################################################################] 100%
make-4.4.1-2-aarch64 482.2 KiB 484 KiB/s 00:01 [#################################################################] 100%
libtool-2.4.7-2-aarch64 404.7 KiB 425 KiB/s 00:01 [#################################################################] 100%
diffutils-3.9-1-aarch64 320.9 KiB 224 KiB/s 00:01 [#################################################################] 100%
flex-2.6.4-5-aarch64 289.2 KiB 194 KiB/s 00:01 [#################################################################] 100%
m4-1.4.19-3-aarch64 241.6 KiB 188 KiB/s 00:01 [#################################################################] 100%
gc-8.2.2-1-aarch64 219.8 KiB 153 KiB/s 00:01 [#################################################################] 100%
patch-2.7.6-9-aarch64 91.1 KiB 79.0 KiB/s 00:01 [#################################################################] 100%
libmpc-1.3.1-1-aarch64 82.9 KiB 67.8 KiB/s 00:01 [#################################################################] 100%
fakeroot-1.31-2-aarch64 68.3 KiB 64.7 KiB/s 00:01 [#################################################################] 100%
pkgconf-1.8.1-1-aarch64 54.8 KiB 41.3 KiB/s 00:01 [#################################################################] 100%
debugedit-5.0-5-aarch64 42.0 KiB 38.0 KiB/s 00:01 [#################################################################] 100%
which-2.21-6-aarch64 15.5 KiB 15.7 KiB/s 00:01 [#################################################################] 100%
base-devel-1-1-any 2.0 KiB 1915 B/s 00:01 [#################################################################] 100%
Total (23/23) 55.7 MiB 1756 KiB/s 00:32 [#################################################################] 100%
(23/23) checking keys in keyring [#################################################################] 100%
(23/23) checking package integrity [#################################################################] 100%
(23/23) loading package files [#################################################################] 100%
(23/23) checking for file conflicts [#################################################################] 100%
(23/23) checking available disk space [#################################################################] 100%
:: Processing package changes...
( 1/23) installing m4 [#################################################################] 100%
( 2/23) installing diffutils [#################################################################] 100%
( 3/23) installing autoconf [#################################################################] 100%
( 4/23) installing automake [#################################################################] 100%
( 5/23) installing binutils [#################################################################] 100%
Optional dependencies for binutils
debuginfod: for debuginfod server/client functionality
( 6/23) installing bison [#################################################################] 100%
( 7/23) installing debugedit [#################################################################] 100%
( 8/23) installing fakeroot [#################################################################] 100%
( 9/23) installing flex [#################################################################] 100%
(10/23) installing libmpc [#################################################################] 100%
(11/23) installing libisl [#################################################################] 100%
(12/23) installing gcc [#################################################################] 100%
(13/23) installing groff [#################################################################] 100%
Optional dependencies for groff
netpbm: for use together with man -H command interaction in browsers
psutils: for use together with man -H command interaction in browsers
libxaw: for gxditview
perl-file-homedir: for use with glilypond
(14/23) installing libtool [#################################################################] 100%
(15/23) installing gc [#################################################################] 100%
(16/23) installing guile [#################################################################] 100%
(17/23) installing make [#################################################################] 100%
(18/23) installing patch [#################################################################] 100%
Optional dependencies for patch
ed: for patch -e functionality
(19/23) installing pkgconf [#################################################################] 100%
(20/23) installing sudo [#################################################################] 100%
(21/23) installing texinfo [#################################################################] 100%
Optional dependencies for texinfo
perl-archive-zip: EPUB file output via texi2any
(22/23) installing which [#################################################################] 100%
(23/23) installing base-devel [#################################################################] 100%
:: Running post-transaction hooks...
(1/4) Reloading system manager configuration...
Skipped: Current root is not booted.
(2/4) Creating temporary files...
(3/4) Arming ConditionNeedsUpdate...
(4/4) Updating the info directory file...
[root@e089761b79ce lychee]# make test
cargo nextest run --all-targets --all-features --filter-expr '!test(test_exclude_example_domains)'
/bin/bash: line 1: cargo: command not found
make: *** [Makefile:43: test] Error 127
[root@e089761b79ce lychee]# curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
info: downloading installer

Welcome to Rust!

This will download and install the official compiler for the Rust
programming language, and its package manager, Cargo.

Rustup metadata and toolchains will be installed into the Rustup
home directory, located at:

/root/.rustup

This can be modified with the RUSTUP_HOME environment variable.

The Cargo home directory is located at:

/root/.cargo

This can be modified with the CARGO_HOME environment variable.

The cargo, rustc, rustup and other commands will be added to
Cargo's bin directory, located at:

/root/.cargo/bin

This path will then be added to your PATH environment variable by
modifying the profile file located at:

/root/.profile

You can uninstall at any time with rustup self uninstall and
these changes will be reverted.

Current installation options:

default host triple: aarch64-unknown-linux-gnu
default toolchain: stable (default)
profile: default
modify PATH variable: yes

  1. Proceed with installation (default)
  2. Customize installation
  3. Cancel installation

info: profile set to 'default'
info: default host triple is aarch64-unknown-linux-gnu
warning: Updating existing toolchain, profile choice will be ignored
info: syncing channel updates for 'stable-aarch64-unknown-linux-gnu'
info: default toolchain set to 'stable-aarch64-unknown-linux-gnu'

stable-aarch64-unknown-linux-gnu unchanged - rustc 1.68.2 (9eb3afe9e 2023-03-27)

Rust is installed now. Great!

To get started you may need to restart your current shell.
This would reload your PATH environment variable to include
Cargo's bin directory ($HOME/.cargo/bin).

To configure your current shell, run:
source "$HOME/.cargo/env"
[root@e089761b79ce lychee]# source "$HOME/.cargo/env"
[root@e089761b79ce lychee]# cargo
Rust's package manager

Usage: cargo [+toolchain] [OPTIONS] [COMMAND]

Options:
-V, --version Print version info and exit
--list List installed commands
--explain Run rustc --explain CODE
-v, --verbose... Use verbose output (-vv very verbose/build.rs output)
-q, --quiet Do not print cargo log messages
--color Coloring: auto, always, never
--frozen Require Cargo.lock and cache are up to date
--locked Require Cargo.lock is up to date
--offline Run without accessing the network
--config <KEY=VALUE> Override a configuration value
-Z Unstable (nightly-only) flags to Cargo, see 'cargo -Z help' for details
-h, --help Print help

Some common cargo commands are (see all commands with --list):
build, b Compile the current package
check, c Analyze the current package and report errors, but don't build object files
clean Remove the target directory
doc, d Build this package's and its dependencies' documentation
new Create a new cargo package
init Create a new cargo package in an existing directory
add Add dependencies to a manifest file
remove Remove dependencies from a manifest file
run, r Run a binary or example of the local package
test, t Run the tests
bench Run the benchmarks
update Update dependencies listed in Cargo.lock
search Search registry for crates
publish Package and upload this package to the registry
install Install a Rust binary. Default location is $HOME/.cargo/bin
uninstall Uninstall a Rust binary

See 'cargo help ' for more information on a specific command.
[root@e089761b79ce lychee]# make test
cargo nextest run --all-targets --all-features --filter-expr '!test(test_exclude_example_domains)'
error: no such command: nextest

    Did you mean `test`?

    View all installed commands with `cargo --list`

make: *** [Makefile:43: test] Error 101
[root@e089761b79ce lychee]# pacman -S cargo-nextest
resolving dependencies...
looking for conflicting packages...

Packages (1) cargo-nextest-0.9.51-1

Total Download Size: 1.98 MiB
Total Installed Size: 7.47 MiB

:: Proceed with installation? [Y/n]
:: Retrieving packages...
cargo-nextest-0.9.51-1-aarch64 2031.9 KiB 1236 KiB/s 00:02 [#################################################################] 100%
(1/1) checking keys in keyring [#################################################################] 100%
(1/1) checking package integrity [#################################################################] 100%
(1/1) loading package files [#################################################################] 100%
(1/1) checking for file conflicts [#################################################################] 100%
(1/1) checking available disk space [#################################################################] 100%
:: Processing package changes...
(1/1) installing cargo-nextest [#################################################################] 100%
:: Running post-transaction hooks...
(1/1) Arming ConditionNeedsUpdate...
[root@e089761b79ce lychee]# make test
cargo nextest run --all-targets --all-features --filter-expr '!test(test_exclude_example_domains)'
Updating crates.io index
Updating git repository https://github.com/bheisler/criterion.rs
Downloaded blocking v1.3.0
Downloaded addr2line v0.19.0
Downloaded darling_macro v0.14.2
Downloaded cpufeatures v0.2.5
Downloaded difflib v0.4.0
Downloaded email_address v0.2.4
Downloaded doc-comment v0.3.3
Downloaded dirs-sys v0.3.7
Downloaded digest v0.10.6
Downloaded crc32fast v1.3.2
Downloaded env_logger v0.10.0
Downloaded dirs v4.0.0
Downloaded enum-as-inner v0.5.1
Downloaded walkdir v2.3.2
Downloaded crossbeam-queue v0.3.8
Downloaded tokio-io-timeout v1.2.0
Downloaded mailchecker v5.0.5
Downloaded arc-swap v1.5.1
Downloaded async-smtp v0.5.0
Downloaded async-recursion v1.0.0
Downloaded assert_cmd v2.0.11
Downloaded bufstream v0.1.4
Downloaded bytes v1.1.0
Downloaded check-if-email-exists v0.9.0
Downloaded cached v0.43.0
Downloaded by_address v1.1.0
Downloaded async-trait v0.1.60
Downloaded darling_core v0.14.2
Downloaded derivative v2.2.0
Downloaded deadpool v0.9.5
Downloaded fastrand v1.8.0
Downloaded concurrent-queue v2.0.0
Downloaded crossbeam-deque v0.8.2
Downloaded crossbeam-channel v0.5.6
Downloaded try-lock v0.2.3
Downloaded version_check v0.9.4
Downloaded pin-project v1.0.12
Downloaded zeroize v1.5.7
Downloaded anstyle v1.0.0
Downloaded typenum v1.16.0
Downloaded assert-json-diff v2.0.2
Downloaded uuid v1.3.1
Downloaded async-channel v1.8.0
Downloaded utf-8 v0.7.6
Downloaded async-global-executor v2.3.1
Downloaded adler v1.0.2
Downloaded untrusted v0.7.1
Downloaded phf_shared v0.10.0
Downloaded async-stream-impl v0.3.5
Downloaded bytecount v0.6.3
Downloaded ciborium-io v0.2.0
Downloaded bitflags v1.3.2
Downloaded tokio-socks v0.5.1
Downloaded ciborium-ll v0.2.0
Downloaded base64 v0.13.1
Downloaded atty v0.2.14
Downloaded tokio-macros v2.0.0
Downloaded cfg-if v1.0.0
Downloaded cast v0.3.0
Downloaded backtrace v0.3.67
Downloaded async-stream v0.3.5
Downloaded autocfg v1.1.0
Downloaded async-io v1.12.0
Downloaded block-buffer v0.10.3
Downloaded async-task v4.3.0
Downloaded anyhow v1.0.70
Downloaded aho-corasick v0.7.20
Downloaded toml_datetime v0.6.1
Downloaded tower-service v0.3.2
Downloaded tower-layer v0.3.2
Downloaded clap_lex v0.2.4
Downloaded async-std v1.12.0
Downloaded unicode-bidi v0.3.8
Downloaded value-bag v1.0.0-alpha.9
Downloaded trust-dns-resolver v0.22.0
Downloaded unicase v2.6.0
Downloaded event-listener v2.5.3
Downloaded clap_lex v0.3.0
Downloaded clap_derive v4.1.9
Downloaded cc v1.0.78
Downloaded cached_proc_macro v0.16.0
Downloaded bitflags v2.0.2
Downloaded ciborium v0.2.0
Downloaded async-process v1.6.0
Downloaded async-native-tls v0.4.0
Downloaded async-lock v2.6.0
Downloaded async-executor v1.5.0
Downloaded anes v0.1.6
Downloaded async_once v0.2.6
Downloaded cached_proc_macro_types v0.1.0
Downloaded crossbeam v0.8.2
Downloaded atomic-waker v1.0.0
Downloaded async-std-resolver v0.21.2
Downloaded clap v4.1.11
Downloaded clap v3.2.23
Downloaded tracing-attributes v0.1.23
Downloaded const_format_proc_macros v0.2.29
Downloaded wait-timeout v0.2.0
Downloaded console v0.15.5
Downloaded toml v0.7.3
Downloaded matchers v0.1.0
Downloaded tinyvec_macros v0.1.0
Downloaded serde_spanned v0.6.1
Downloaded retain_mut v0.1.9
Downloaded rand_chacha v0.3.1
Downloaded either v1.8.0
Downloaded same-file v1.0.6
Downloaded resolv-conf v0.7.0
Downloaded plotters v0.3.4
Downloaded ryu v1.0.12
Downloaded trust-dns-proto v0.21.2
Downloaded tracing-core v0.1.30
Downloaded match_cfg v0.1.0
Downloaded html5ever v0.26.0
Downloaded html5gum v0.5.2
Downloaded async-compression v0.3.15
Downloaded tower v0.4.13
Downloaded rand_chacha v0.2.2
Downloaded portable-atomic v0.3.18
Downloaded getopts v0.2.21
Downloaded getrandom v0.2.8
Downloaded futures-sink v0.3.27
Downloaded futures-core v0.3.27
Downloaded futures v0.3.27
Downloaded bstr v1.1.0
Downloaded serde_qs v0.8.5
Downloaded miniz_oxide v0.6.2
Downloaded glob v0.3.1
Downloaded ppv-lite86 v0.2.17
Downloaded polling v2.5.2
Downloaded octocrab v0.20.0
Downloaded tracing v0.1.37
Downloaded tinyvec v1.6.0
Downloaded unicode-width v0.1.10
Downloaded string_cache v0.8.4
Downloaded par-stream v0.10.2
Downloaded toml_edit v0.19.6
Downloaded typed-builder v0.14.0
Downloaded syn v1.0.107
Downloaded percent-encoding v2.2.0
Downloaded pem v1.1.0
Downloaded path-clean v1.0.1
Downloaded parking_lot_core v0.9.5
Downloaded reqwest v0.11.16
Downloaded half v1.8.2
Downloaded strum v0.24.1
Downloaded native-tls v0.2.11
Downloaded httpdate v1.0.2
Downloaded http-body v0.4.5
Downloaded regex-syntax v0.6.29
Downloaded num-traits v0.2.15
Downloaded iana-time-zone v0.1.53
Downloaded hashbrown v0.12.3
Downloaded winnow v0.3.5
Downloaded tokio-stream v0.1.12
Downloaded reacher-fast-socks5 v0.8.1
Downloaded wiremock v0.5.18
Downloaded waker-fn v1.1.0
Downloaded rayon-core v1.10.1
Downloaded rayon v1.6.1
Downloaded url v2.3.1
Downloaded tower-http v0.4.0
Downloaded tokio-native-tls v0.3.0
Downloaded itertools v0.10.5
Downloaded ascii_utils v0.9.3
Downloaded kv-log-macro v1.0.7
Downloaded hostname v0.3.1
Downloaded heck v0.4.0
Downloaded headers-core v0.2.0
Downloaded num-integer v0.1.45
Downloaded form_urlencoded v1.1.0
Downloaded regex-automata v0.1.10
Downloaded unicode-xid v0.2.4
Downloaded humantime v2.1.0
Downloaded hyper v0.14.26
Downloaded dashmap v5.4.0
Downloaded serde v1.0.160
Downloaded httparse v1.8.0
Downloaded float-cmp v0.9.0
Downloaded enum-as-inner v0.4.0
Downloaded ctor v0.1.26
Downloaded deadpool-runtime v0.1.2
Downloaded hyper-timeout v0.4.1
Downloaded humantime-serde v1.1.1
Downloaded http-range-header v0.3.0
Downloaded futures-timer v3.0.2
Downloaded futures-lite v1.12.0
Downloaded precomputed-hash v0.1.1
Downloaded object v0.30.0
Downloaded crypto-common v0.1.6
Downloaded futures-util v0.3.27
Downloaded unicode-ident v1.0.6
Downloaded thiserror-impl v1.0.40
Downloaded regex v1.7.3
Downloaded proc-macro-error-attr v1.0.4
Downloaded rand_core v0.6.4
Downloaded rand_core v0.5.1
Downloaded scopeguard v1.1.0
Downloaded sharded-slab v0.1.4
Downloaded serde_derive v1.0.160
Downloaded yansi v0.5.1
Downloaded indicatif v0.17.3
Downloaded serde_json v1.0.96
Downloaded tracing-subscriber v0.3.16
Downloaded string_cache_codegen v0.5.2
Downloaded spin v0.5.2
Downloaded spin v0.9.4
Downloaded strsim v0.10.0
Downloaded snafu v0.7.3
Downloaded termcolor v1.1.3
Downloaded phf v0.10.1
Downloaded time-core v0.1.0
Downloaded predicates v3.0.3
Downloaded new_debug_unreachable v1.0.4
Downloaded tendril v0.4.3
Downloaded plotters-svg v0.3.3
Downloaded num_cpus v1.14.0
Downloaded slab v0.4.7
Downloaded socket2 v0.4.9
Downloaded snafu-derive v0.7.3
Downloaded signal-hook v0.3.14
Downloaded unicode-normalization v0.1.22
Downloaded nom v7.1.1
Downloaded tabled_derive v0.6.0
Downloaded encoding_rs v0.8.31
Downloaded serde_urlencoded v0.7.1
Downloaded termtree v0.4.0
Downloaded pad v0.1.6
Downloaded num-bigint v0.4.3
Downloaded rustversion v1.0.12
Downloaded tinytemplate v1.2.1
Downloaded time-macros v0.2.6
Downloaded time v0.3.17
Downloaded strum_macros v0.24.3
Downloaded syn v2.0.3
Downloaded thread_local v1.1.4
Downloaded thiserror v1.0.40
Downloaded textwrap v0.16.0
Downloaded fast_chemail v0.9.6
Downloaded supports-color v2.0.0
Downloaded predicates-core v1.0.6
Downloaded openssl v0.10.44
Downloaded fast-socks5 v0.8.1
Downloaded quick-error v1.2.3
Downloaded papergrid v0.8.2
Downloaded pin-project-internal v1.0.12
Downloaded siphasher v0.3.10
Downloaded number_prefix v0.4.0
Downloaded openssl-macros v0.1.0
Downloaded memchr v2.5.0
Downloaded trust-dns-proto v0.22.0
Downloaded rustix v0.36.5
Downloaded matches v0.1.9
Downloaded linked-hash-map v0.5.6
Downloaded is_ci v1.1.1
Downloaded foreign-types-shared v0.1.1
Downloaded signal-hook-registry v1.4.0
Downloaded proc-macro-error v1.0.4
Downloaded sha1 v0.10.5
Downloaded indexmap v1.9.2
Downloaded idna v0.3.0
Downloaded hashbrown v0.13.1
Downloaded hyper-tls v0.5.0
Downloaded fnv v1.0.7
Downloaded serde_path_to_error v0.1.9
Downloaded rustc-demangle v0.1.21
Downloaded diff v0.1.13
Downloaded parking_lot v0.12.1
Downloaded parking v2.0.0
Downloaded csv v1.2.1
Downloaded jsonwebtoken v8.2.0
Downloaded jetscii v0.5.3
Downloaded http-types v2.12.0
Downloaded io-lifetimes v1.0.3
Downloaded phf_codegen v0.10.0
Downloaded once_cell v1.17.1
Downloaded tokio v1.27.0
Downloaded jwalk v0.8.1
Downloaded crossbeam-epoch v0.9.13
Downloaded const_format v0.2.30
Downloaded chrono v0.4.23
Downloaded base64 v0.21.0
Downloaded linkify v0.9.0
Downloaded crossbeam-utils v0.8.14
Downloaded foreign-types v0.3.2
Downloaded data-encoding v2.3.3
Downloaded darling v0.14.2
Downloaded csv-core v0.1.10
Downloaded flate2 v1.0.25
Downloaded futf v0.1.5
Downloaded futures-task v0.3.27
Downloaded futures-io v0.3.27
Downloaded ring v0.16.20
Downloaded lru-cache v0.1.2
Downloaded openssl-probe v0.1.5
Downloaded nanorand v0.7.0
Downloaded memoffset v0.7.1
Downloaded predicates-tree v1.0.7
Downloaded pin-utils v0.1.0
Downloaded http v0.2.9
Downloaded plotters-backend v0.3.4
Downloaded pkg-config v0.3.26
Downloaded pin-project-lite v0.2.9
Downloaded h2 v0.3.17
Downloaded phf_generator v0.10.0
Downloaded mime v0.3.16
Downloaded log v0.4.17
Downloaded lazy_static v1.4.0
Downloaded openssl-sys v0.9.85
Downloaded idna v0.2.3
Downloaded normalize-line-endings v0.3.0
Downloaded lock_api v0.4.9
Downloaded itoa v1.0.5
Downloaded getrandom v0.1.16
Downloaded instant v0.1.12
Downloaded futures-macro v0.3.27
Downloaded quote v1.0.26
Downloaded pulldown-cmark v0.9.2
Downloaded is-terminal v0.4.1
Downloaded generic-array v0.14.6
Downloaded futures-channel v0.3.27
Downloaded futures-executor v0.3.27
Downloaded flume v0.10.14
Downloaded mio v0.8.5
Downloaded proc-macro2 v1.0.52
Downloaded pretty_assertions v1.3.0
Downloaded ipnet v2.7.0
Downloaded ip_network v0.4.1
Downloaded markup5ever v0.11.0
Downloaded infer v0.2.3
Downloaded headers v0.3.8
Downloaded rand v0.7.3
Downloaded rand v0.8.5
Downloaded oorandom v11.1.3
Downloaded mac v0.1.1
Downloaded os_str_bytes v6.4.1
Downloaded tokio-util v0.7.4
Downloaded trust-dns-resolver v0.21.2
Downloaded minimal-lexical v0.2.1
Downloaded ident_case v1.0.1
Downloaded smallvec v1.10.0
Downloaded simple_asn1 v0.6.2
Downloaded secrecy v0.8.0
Downloaded shellexpand v3.1.0
Downloaded want v0.3.0
Downloaded tempfile v3.5.0
Downloaded tabled v0.11.1
Downloaded libc v0.2.140
Downloaded rustix v0.37.4
Downloaded linux-raw-sys v0.1.4
Downloaded gimli v0.27.0
Downloaded linux-raw-sys v0.3.0
Downloaded openssl-src v111.24.0+1.1.1s
Downloaded 353 crates (33.2 MB) in 2.89s (largest was openssl-src at 5.1 MB)
Compiling proc-macro2 v1.0.52
Compiling quote v1.0.26
Compiling unicode-ident v1.0.6
Compiling cfg-if v1.0.0
Compiling autocfg v1.1.0
Compiling libc v0.2.140
Compiling syn v1.0.107
Compiling version_check v0.9.4
Compiling memchr v2.5.0
Compiling pin-project-lite v0.2.9
Compiling log v0.4.17
Compiling value-bag v1.0.0-alpha.9
Compiling syn v2.0.3
Compiling scopeguard v1.1.0
Compiling futures-core v0.3.27
Compiling serde_derive v1.0.160
Compiling once_cell v1.17.1
Compiling serde v1.0.160
Compiling lock_api v0.4.9
Compiling parking_lot_core v0.9.5
Compiling smallvec v1.10.0
Compiling bytes v1.1.0
Compiling socket2 v0.4.9
Compiling num_cpus v1.14.0
Compiling parking_lot v0.12.1
Compiling signal-hook-registry v1.4.0
Compiling futures-io v0.3.27
Compiling slab v0.4.7
Compiling tokio v1.27.0
Compiling futures-sink v0.3.27
Compiling crossbeam-utils v0.8.14
Compiling itoa v1.0.5
Compiling futures-channel v0.3.27
Compiling futures-task v0.3.27
Compiling cc v1.0.78
Compiling pin-utils v0.1.0
Compiling ppv-lite86 v0.2.17
Compiling futures-util v0.3.27
Compiling fnv v1.0.7
Compiling bitflags v1.3.2
Compiling thiserror v1.0.40
Compiling heck v0.4.0
Compiling tinyvec_macros v0.1.0
Compiling tinyvec v1.6.0
Compiling percent-encoding v2.2.0
Compiling tracing-core v0.1.30
Compiling getrandom v0.2.8
Compiling tokio-macros v2.0.0
Compiling thiserror-impl v1.0.40
Compiling unicode-normalization v0.1.22
Compiling unicode-bidi v0.3.8
Compiling hashbrown v0.12.3
Compiling form_urlencoded v1.1.0
Compiling openssl-src v111.24.0+1.1.1s
Compiling ctor v0.1.26
Compiling futures-macro v0.3.27
Compiling tracing-attributes v0.1.23
Compiling indexmap v1.9.2
Compiling async-trait v0.1.60
Compiling mio v0.8.5
Compiling pkg-config v0.3.26
Compiling openssl-sys v0.9.85
Compiling tracing v0.1.37
Compiling idna v0.3.0
Compiling http v0.2.9
Compiling num-traits v0.2.15
Compiling lazy_static v1.4.0
Compiling ryu v1.0.12
Compiling fastrand v1.8.0
Compiling url v2.3.1
Compiling parking v2.0.0
Compiling serde_json v1.0.96
Compiling waker-fn v1.1.0
Compiling event-listener v2.5.3
Compiling futures-lite v1.12.0
Compiling concurrent-queue v2.0.0
Compiling either v1.8.0
Compiling regex-syntax v0.6.29
Compiling rand_core v0.6.4
Compiling memoffset v0.7.1
Compiling openssl v0.10.44
Compiling siphasher v0.3.10
Compiling foreign-types-shared v0.1.1
Compiling foreign-types v0.3.2
Compiling phf_shared v0.10.0
Compiling rand_chacha v0.3.1
Compiling tokio-util v0.7.4
Compiling openssl-macros v0.1.0
Compiling crossbeam-epoch v0.9.13
Compiling matches v0.1.9
Compiling httparse v1.8.0
Compiling match_cfg v0.1.0
Compiling tower-service v0.3.2
Compiling native-tls v0.2.11
Compiling hostname v0.3.1
Compiling idna v0.2.3
Compiling rand v0.8.5
Compiling async-lock v2.6.0
Compiling http-body v0.4.5
Compiling aho-corasick v0.7.20
Compiling polling v2.5.2
Compiling httpdate v1.0.2
Compiling anyhow v1.0.70
Compiling openssl-probe v0.1.5
Compiling data-encoding v2.3.3
Compiling base64 v0.13.1
Compiling try-lock v0.2.3
Compiling ipnet v2.7.0
Compiling adler v1.0.2
Compiling miniz_oxide v0.6.2
Compiling want v0.3.0
Compiling regex v1.7.3
Compiling h2 v0.3.17
Compiling async-channel v1.8.0
Compiling futures-executor v0.3.27
Compiling pin-project-internal v1.0.12
Compiling async-io v1.12.0
Compiling num-integer v0.1.45
Compiling crc32fast v1.3.2
Compiling linked-hash-map v0.5.6
Compiling unicode-width v0.1.10
Compiling quick-error v1.2.3
Compiling resolv-conf v0.7.0
Compiling lru-cache v0.1.2
Compiling pin-project v1.0.12
Compiling futures v0.3.27
Compiling phf_generator v0.10.0
Compiling crossbeam-deque v0.8.2
Compiling crossbeam-channel v0.5.6
Compiling signal-hook v0.3.14
Compiling strsim v0.10.0
Compiling async-task v4.3.0
Compiling hyper v0.14.26
Compiling serde_urlencoded v0.7.1
Compiling enum-as-inner v0.5.1
Compiling async-process v1.6.0
Compiling num-bigint v0.4.3
Compiling time-core v0.1.0
Compiling ident_case v1.0.1
Compiling rayon-core v1.10.1
Compiling atomic-waker v1.0.0
Compiling new_debug_unreachable v1.0.4
Compiling encoding_rs v0.8.31
Compiling crossbeam-queue v0.3.8
Compiling doc-comment v0.3.3
Compiling blocking v1.3.0
Compiling darling_core v0.14.2
Compiling time-macros v0.2.6
Compiling trust-dns-proto v0.22.0
Compiling flate2 v1.0.25
Compiling async-executor v1.5.0
Compiling string_cache_codegen v0.5.2
Compiling phf_codegen v0.10.0
Compiling tokio-stream v0.1.12
Compiling enum-as-inner v0.4.0
Compiling ring v0.16.20
Compiling backtrace v0.3.67
Compiling mime v0.3.16
Compiling base64 v0.21.0
Compiling gimli v0.27.0
Compiling mac v0.1.1
Compiling futf v0.1.5
Compiling trust-dns-proto v0.21.2
Compiling markup5ever v0.11.0
Compiling darling_macro v0.14.2
Compiling async-global-executor v2.3.1
Compiling addr2line v0.19.0
Compiling trust-dns-resolver v0.22.0
Compiling async-compression v0.3.15
Compiling time v0.3.17
Compiling tokio-socks v0.5.1
Compiling kv-log-macro v1.0.7
Compiling object v0.30.0
Compiling unicase v2.6.0
Compiling rustc-demangle v0.1.21
Compiling minimal-lexical v0.2.1
Compiling spin v0.5.2
Compiling utf-8 v0.7.6
Compiling precomputed-hash v0.1.1
Compiling jetscii v0.5.3
Compiling untrusted v0.7.1
Compiling tower-layer v0.3.2
Compiling ascii_utils v0.9.3
Compiling fast_chemail v0.9.6
Compiling string_cache v0.8.4
Compiling tendril v0.4.3
Compiling nom v7.1.1
Compiling async-std v1.12.0
Compiling rayon v1.6.1
Compiling crossbeam v0.8.2
Compiling simple_asn1 v0.6.2
Compiling darling v0.14.2
Compiling trust-dns-resolver v0.21.2
Compiling fast-socks5 v0.8.1
Compiling pem v1.1.0
Compiling phf v0.10.1
Compiling tokio-io-timeout v1.2.0
Compiling snafu-derive v0.7.3
Compiling html5ever v0.26.0
Compiling nanorand v0.7.0
Compiling spin v0.9.4
Compiling dirs-sys v0.3.7
Compiling io-lifetimes v1.0.3
Compiling cached_proc_macro_types v0.1.0
Compiling pulldown-cmark v0.9.2
Compiling iana-time-zone v0.1.53
Compiling http-range-header v0.3.0
Compiling bufstream v0.1.4
Compiling zeroize v1.5.7
Compiling tower-http v0.4.0
Compiling secrecy v0.8.0
Compiling chrono v0.4.23
Compiling snafu v0.7.3
Compiling cached_proc_macro v0.16.0
Compiling dirs v4.0.0
Compiling flume v0.10.14
Compiling hyper-timeout v0.4.1
Compiling jsonwebtoken v8.2.0
Compiling async-std-resolver v0.21.2
Compiling mailchecker v5.0.5
Compiling tower v0.4.13
Compiling reacher-fast-socks5 v0.8.1
Compiling getopts v0.2.21
Compiling serde_path_to_error v0.1.9
Compiling dashmap v5.4.0
Compiling async-recursion v1.0.0
Compiling derivative v2.2.0
Compiling async-stream-impl v0.3.5
Compiling instant v0.1.12
Compiling by_address v1.1.0
Compiling hashbrown v0.13.1
Compiling arc-swap v1.5.1
Compiling async_once v0.2.6
Compiling cached v0.43.0
Compiling async-stream v0.3.5
Compiling html5gum v0.5.2
Compiling shellexpand v3.1.0
Compiling jwalk v0.8.1
Compiling email_address v0.2.4
Compiling typed-builder v0.14.0
Compiling linkify v0.9.0
Compiling par-stream v0.10.2
Compiling path-clean v1.0.1
Compiling typenum v1.16.0
Compiling ip_network v0.4.1
Compiling glob v0.3.1
Compiling proc-macro-error-attr v1.0.4
Compiling generic-array v0.14.6
Compiling getrandom v0.1.16
Compiling proc-macro-error v1.0.4
Compiling rustix v0.36.5
Compiling os_str_bytes v6.4.1
Compiling linux-raw-sys v0.1.4
Compiling rand_core v0.5.1
Compiling itertools v0.10.5
Compiling rustversion v1.0.12
Compiling block-buffer v0.10.3
Compiling crypto-common v0.1.6
Compiling rand_chacha v0.2.2
Compiling regex-automata v0.1.10
Compiling portable-atomic v0.3.18
Compiling is-terminal v0.4.1
Compiling http-types v2.12.0
Compiling rustix v0.37.4
Compiling rand v0.7.3
Compiling digest v0.10.6
Compiling toml_datetime v0.6.1
Compiling serde_qs v0.8.5
Compiling serde_spanned v0.6.1
Compiling cpufeatures v0.2.5
Compiling predicates-core v1.0.6
Compiling unicode-xid v0.2.4
Compiling humantime v2.1.0
Compiling deadpool-runtime v0.1.2
Compiling winnow v0.3.5
Compiling retain_mut v0.1.9
Compiling linux-raw-sys v0.3.0
Compiling termcolor v1.1.3
Compiling infer v0.2.3
Compiling bytecount v0.6.3
Compiling papergrid v0.8.2
Compiling toml_edit v0.19.6
Compiling deadpool v0.9.5
Compiling strum_macros v0.24.3
Compiling const_format_proc_macros v0.2.29
Compiling sha1 v0.10.5
Compiling tabled_derive v0.6.0
Compiling clap_derive v4.1.9
Compiling clap_lex v0.3.0
Compiling console v0.15.5
Compiling assert-json-diff v2.0.2
Compiling float-cmp v0.9.0
Compiling headers-core v0.2.0
Compiling csv-core v0.1.10
Compiling is_ci v1.1.1
Compiling futures-timer v3.0.2
Compiling difflib v0.4.0
Compiling bitflags v2.0.2
Compiling termtree v0.4.0
Compiling normalize-line-endings v0.3.0
Compiling anstyle v1.0.0
Compiling number_prefix v0.4.0
Compiling clap v4.1.11
Compiling indicatif v0.17.3
Compiling predicates v3.0.3
Compiling predicates-tree v1.0.7
Compiling wiremock v0.5.18
Compiling csv v1.2.1
Compiling supports-color v2.0.0
Compiling headers v0.3.8
Compiling tabled v0.11.1
Compiling strum v0.24.1
Compiling const_format v0.2.30
Compiling toml v0.7.3
Compiling tempfile v3.5.0
Compiling env_logger v0.10.0
Compiling humantime-serde v1.1.1
Compiling bstr v1.1.0
Compiling matchers v0.1.0
Compiling pad v0.1.6
Compiling sharded-slab v0.1.4
Compiling thread_local v1.1.4
Compiling wait-timeout v0.2.0
Compiling diff v0.1.13
Compiling yansi v0.5.1
Compiling assert_cmd v2.0.11
Compiling pretty_assertions v1.3.0
Compiling tracing-subscriber v0.3.16
Compiling uuid v1.3.1
Compiling ciborium-io v0.2.0
Compiling half v1.8.2
Compiling plotters-backend v0.3.4
Compiling clap_lex v0.2.4
Compiling plotters-svg v0.3.3
Compiling ciborium-ll v0.2.0
Compiling cast v0.3.0
Compiling textwrap v0.16.0
Compiling same-file v1.0.6
Compiling criterion-plot v0.5.0 (https://github.com/bheisler/criterion.rs#2f536073)
Compiling clap v3.2.23
Compiling walkdir v2.3.2
Compiling ciborium v0.2.0
Compiling plotters v0.3.4
Compiling tinytemplate v1.2.1
Compiling atty v0.2.14
Compiling anes v0.1.6
Compiling oorandom v11.1.3
Compiling criterion v0.4.0 (https://github.com/bheisler/criterion.rs#2f536073)
Compiling tokio-native-tls v0.3.0
Compiling async-native-tls v0.4.0
Compiling hyper-tls v0.5.0
Compiling async-smtp v0.5.0
Compiling reqwest v0.11.16
Compiling octocrab v0.20.0
Compiling check-if-email-exists v0.9.0
Compiling lychee-lib v0.12.0 (/lychee/lychee-lib)
Compiling lychee v0.12.0 (/lychee/lychee-bin)
Compiling benches v0.0.0 (/lychee/benches)
Compiling client_pool v0.1.0 (/lychee/examples/client_pool)
Compiling simple v0.1.0 (/lychee/examples/simple)
Compiling extract v0.1.0 (/lychee/examples/extract)
Compiling collect_links v0.1.0 (/lychee/examples/collect_links)
Compiling builder v0.1.0 (/lychee/examples/builder)
Finished test [unoptimized + debuginfo] target(s) in 2m 35s
Starting 203 tests across 13 binaries (5 skipped)
PASS [ 0.075s] lychee::cli cli::test_cache_config
PASS [ 0.025s] lychee::cli cli::test_config_example
PASS [ 0.023s] lychee::cli cli::test_config_smoketest
PASS [ 0.176s] lychee::cli cli::test_cratesio_quirk
PASS [ 0.020s] lychee::cli cli::test_dump_to_file
PASS [ 0.019s] lychee::cli cli::test_email_html_with_subject
PASS [ 0.019s] lychee::cli cli::test_email_markdown_with_subject
PASS [ 0.026s] lychee::cli cli::test_empty_config
PASS [ 0.020s] lychee::cli cli::test_exclude_all_private
PASS [ 0.503s] lychee::cli cli::test_caching_single_file
PASS [ 0.507s] lychee::cli cli::test_caching_across_files
PASS [ 0.746s] lychee::cli cli::test_check_github_no_token
PASS [ 0.020s] lychee::cli cli::test_exclude_wildcard
PASS [ 0.771s] benches::bench/extract extract from large docs
PASS [ 0.027s] lychee::cli cli::test_failure_404_link
PASS [ 0.477s] lychee::cli cli::test_exclude_email
PASS [ 0.269s] lychee::cli cli::test_failure_github_404_no_token
PASS [ 0.027s] lychee::cli cli::test_glob
PASS [ 0.029s] lychee::cli cli::test_glob_ignore_case
PASS [ 0.028s] lychee::cli cli::test_glob_recursive
PASS [ 0.648s] lychee::cli cli::test_exclude_file
PASS [ 0.014s] lychee::cli cli::test_handle_nonexistent_relative_paths_as_input
PASS [ 0.022s] lychee::cli cli::test_handle_relative_paths_as_input
PASS [ 0.021s] lychee::cli cli::test_ignore_absolute_local_links_without_base
PASS [ 0.021s] lychee::cli cli::test_include_verbatim
PASS [ 0.025s] lychee::cli cli::test_include_verbatim_via_remote_url
PASS [ 0.013s] lychee::cli cli::test_invalid_config
PASS [ 0.476s] lychee::cli cli::test_excluded_paths
PASS [ 0.047s] lychee::cli cli::test_lycheecache_accept_custom_status_codes
PASS [ 0.048s] lychee::cli cli::test_lycheecache_file
PASS [ 0.024s] lychee::cli cli::test_lycheeignore_file
PASS [ 0.014s] lychee::cli cli::test_missing_config_error
PASS [ 0.127s] lychee::cli cli::test_missing_file_ok_if_skip_missing
PASS [ 0.607s] lychee::cli cli::test_formatted_file_output
PASS [ 0.494s] lychee::cli cli::test_lycheeignore_and_exclude_file
PASS [ 0.025s] lychee::cli cli::test_print_excluded_links_in_verbose_mode
PASS [ 0.021s] lychee::cli cli::test_remap_uri
PASS [ 1.323s] lychee::cli cli::test_exclude_multiple_urls
PASS [ 0.023s] lychee::cli cli::test_resolve_paths
PASS [ 0.702s] lychee::cli cli::test_inputs_without_scheme
PASS [ 0.026s] lychee::cli cli::test_skip_cache_unsupported
PASS [ 0.494s] lychee::cli cli::test_multiple_exclude_files
PASS [ 0.032s] lychee::cli cli::test_stdin_input
PASS [ 0.027s] lychee::cli cli::test_stdin_input_failure
PASS [ 0.026s] lychee::cli cli::test_stdin_input_multiple
PASS [ 0.021s] lychee::cli cli::test_verbatim_skipped_by_default
PASS [ 0.020s] lychee::cli cli::test_verbatim_skipped_by_default_via_file
PASS [ 0.022s] lychee::cli cli::test_verbatim_skipped_by_default_via_remote_url
PASS [ 0.573s] lychee::cli cli::test_prevent_too_many_redirects
PASS [ 0.020s] lychee::data_uris cli::test_dont_dump_data_uris_by_default
PASS [ 0.020s] lychee::data_uris cli::test_dump_data_uris_in_verbose_mode
PASS [ 0.024s] lychee::local_files cli::test_local_dir
PASS [ 0.020s] lychee::local_files cli::test_local_file
PASS [ 0.012s] lychee::usage readme::test_readme_usage_up_to_date
PASS [ 0.133s] lychee::cli cli::test_youtube_quirk
PASS [ 0.469s] lychee::cli cli::test_schemes
PASS [ 0.008s] lychee::bin/lychee commands::check::tests::test_show_cached_responses_in_progress_debug_output
PASS [ 0.006s] lychee::bin/lychee commands::check::tests::test_skip_cached_responses_in_progress_output
PASS [ 0.005s] lychee::bin/lychee formatters::duration::tests::test_formatting
PASS [ 0.005s] lychee::bin/lychee formatters::stats::markdown::tests::test_markdown_response_cached_err
PASS [ 0.005s] lychee::bin/lychee formatters::stats::markdown::tests::test_markdown_response_cached_ok
PASS [ 0.005s] lychee::bin/lychee formatters::stats::markdown::tests::test_markdown_response_ok
PASS [ 0.006s] lychee::bin/lychee formatters::stats::markdown::tests::test_render_stats
PASS [ 0.005s] lychee::bin/lychee formatters::stats::markdown::tests::test_render_summary
PASS [ 0.005s] lychee::bin/lychee parse::tests::test_parse_basic_auth
PASS [ 0.005s] lychee::bin/lychee parse::tests::test_parse_custom_headers
PASS [ 0.007s] lychee::bin/lychee parse::tests::test_parse_remap
PASS [ 0.004s] lychee::bin/lychee parse::tests::test_parse_statuscodes
PASS [ 0.005s] lychee::bin/lychee stats::tests::test_detailed_stats
PASS [ 0.005s] lychee::bin/lychee stats::tests::test_stats
PASS [ 0.005s] lychee::bin/lychee stats::tests::test_stats_is_empty
PASS [ 0.004s] lychee::bin/lychee verbosity::test::test_default_log_level
PASS [ 0.004s] lychee::bin/lychee verbosity::test::verify_app
PASS [ 0.022s] lychee-lib client::tests::test_avoid_reqwest_panic
PASS [ 0.468s] lychee::cli cli::test_unsupported_uri_schemes_are_ignored
PASS [ 0.020s] lychee-lib client::tests::test_exclude_mail
PASS [ 0.182s] lychee-lib client::tests::test_custom_headers
PASS [ 0.016s] lychee-lib client::tests::test_file
PASS [ 0.074s] lychee-lib client::tests::test_github
PASS [ 0.950s] lychee::cli cli::test_require_https
PASS [ 0.422s] lychee-lib client::tests::test_exponential_backoff
PASS [ 0.272s] lychee-lib client::tests::test_github_nonexistent_file
PASS [ 0.240s] lychee-lib client::tests::test_github_nonexistent_repo
PASS [ 0.022s] lychee-lib client::tests::test_limit_max_redirects
PASS [ 0.020s] lychee-lib client::tests::test_non_github
PASS [ 0.028s] lychee-lib client::tests::test_max_redirects
PASS [ 0.021s] lychee-lib client::tests::test_nonexistent
PASS [ 0.018s] lychee-lib client::tests::test_nonexistent_with_path
PASS [ 1.028s] lychee::bin/lychee archive::wayback::tests::wayback_suggestion
PASS [ 1.021s] lychee::bin/lychee archive::wayback::tests::wayback_suggestion_unknown_url
PASS [ 0.029s] lychee-lib client::tests::test_unsupported_scheme
PASS [ 0.010s] lychee-lib collector::tests::test_collect_html_links
PASS [ 0.010s] lychee-lib collector::tests::test_collect_html_srcset
PASS [ 0.019s] lychee-lib collector::tests::test_collect_links
PASS [ 0.009s] lychee-lib collector::tests::test_collect_markdown_links
PASS [ 0.009s] lychee-lib collector::tests::test_email_with_query_params
PASS [ 0.010s] lychee-lib collector::tests::test_extract_html5_not_valid_xml_relative_links
PASS [ 0.009s] lychee-lib collector::tests::test_file_without_extension_is_plaintext
PASS [ 0.010s] lychee-lib collector::tests::test_markdown_internal_url
PASS [ 0.018s] lychee-lib collector::tests::test_relative_url_with_base_extracted_from_input
PASS [ 0.218s] lychee-lib client::tests::test_youtube
PASS [ 0.008s] lychee-lib extract::html5ever::tests::test_exclude_script_tags
PASS [ 0.007s] lychee-lib extract::html5ever::tests::test_include_nofollow
PASS [ 0.007s] lychee-lib extract::html5ever::tests::test_include_verbatim
PASS [ 0.007s] lychee-lib extract::html5ever::tests::test_include_verbatim_recursive
PASS [ 0.007s] lychee-lib extract::html5ever::tests::test_skip_verbatim
PASS [ 0.007s] lychee-lib extract::html5gum::tests::test_exclude_script_tags
PASS [ 0.008s] lychee-lib extract::html5gum::tests::test_include_nofollow
PASS [ 0.007s] lychee-lib extract::html5gum::tests::test_include_verbatim
PASS [ 0.007s] lychee-lib extract::html5gum::tests::test_include_verbatim_nested
PASS [ 0.008s] lychee-lib extract::html5gum::tests::test_skip_verbatim
PASS [ 0.007s] lychee-lib extract::markdown::tests::test_include_verbatim
PASS [ 0.007s] lychee-lib extract::markdown::tests::test_skip_verbatim
PASS [ 0.007s] lychee-lib extract::plaintext::tests::test_extract_link_at_end_of_line
PASS [ 0.007s] lychee-lib extract::plaintext::tests::test_extract_local_links
PASS [ 0.007s] lychee-lib extract::tests::relative_urls
PASS [ 0.009s] lychee-lib extract::tests::test_extract_html5_custom_elements
PASS [ 0.008s] lychee-lib extract::tests::test_extract_html5_lowercase_doctype
PASS [ 0.009s] lychee-lib extract::tests::test_extract_html5_malformed
PASS [ 0.009s] lychee-lib extract::tests::test_extract_html5_minified
PASS [ 0.008s] lychee-lib extract::tests::test_extract_html5_not_valid_xml
PASS [ 0.007s] lychee-lib extract::tests::test_extract_link_at_end_of_line
PASS [ 0.008s] lychee-lib extract::tests::test_extract_relative_url
PASS [ 0.008s] lychee-lib extract::tests::test_extract_urls_with_at_sign_properly
PASS [ 0.007s] lychee-lib extract::tests::test_file_type
PASS [ 0.007s] lychee-lib extract::tests::test_md_escape
PASS [ 0.008s] lychee-lib extract::tests::test_non_markdown_links
PASS [ 0.007s] lychee-lib extract::tests::test_skip_markdown_anchors
PASS [ 0.007s] lychee-lib extract::tests::test_skip_markdown_email
PASS [ 0.008s] lychee-lib extract::tests::test_skip_markdown_internal_urls
PASS [ 0.007s] lychee-lib extract::tests::test_verbatim_matching
PASS [ 0.009s] lychee-lib extract::tests::verbatim_elem
PASS [ 0.007s] lychee-lib filter::tests::test_const_sanity
PASS [ 0.008s] lychee-lib filter::tests::test_exclude_include_regex
PASS [ 0.007s] lychee-lib filter::tests::test_exclude_ip_v4_mapped_ip_v6_not_supported
PASS [ 0.006s] lychee-lib filter::tests::test_exclude_link_local
PASS [ 0.006s] lychee-lib filter::tests::test_exclude_loopback
PASS [ 0.006s] lychee-lib filter::tests::test_exclude_loopback_ips
PASS [ 0.007s] lychee-lib filter::tests::test_exclude_mail
PASS [ 0.007s] lychee-lib filter::tests::test_exclude_private_ips
PASS [ 0.008s] lychee-lib filter::tests::test_exclude_regex
PASS [ 0.007s] lychee-lib filter::tests::test_excludes_no_private_ips_by_default
PASS [ 0.006s] lychee-lib filter::tests::test_false_positives
PASS [ 0.008s] lychee-lib filter::tests::test_include_regex
PASS [ 0.007s] lychee-lib filter::tests::test_includes_and_excludes_empty
PASS [ 0.008s] lychee-lib filter::tests::test_overwrite_false_positives
PASS [ 0.008s] lychee-lib quirks::tests::test_cratesio_request
PASS [ 0.010s] lychee-lib quirks::tests::test_no_quirk_applied
PASS [ 0.010s] lychee-lib quirks::tests::test_non_video_youtube_url_untouched
PASS [ 0.463s] lychee-lib collector::tests::test_url_without_extension_is_html
PASS [ 0.009s] lychee-lib quirks::tests::test_twitter_request
PASS [ 0.901s] lychee-lib client::tests::test_invalid_ssl
PASS [ 0.010s] lychee-lib quirks::tests::test_youtube_video_request
PASS [ 0.007s] lychee-lib remap::tests::test_remap
PASS [ 0.011s] lychee-lib quirks::tests::test_youtube_video_shortlink_request
PASS [ 0.008s] lychee-lib remap::tests::test_remap_path
PASS [ 0.008s] lychee-lib remap::tests::test_remap_skip
PASS [ 0.007s] lychee-lib types::base::test_base::test_get_base_from_url
PASS [ 0.007s] lychee-lib types::base::test_base::test_invalid_url
PASS [ 0.007s] lychee-lib types::base::test_base::test_valid_local
PASS [ 0.007s] lychee-lib types::base::test_base::test_valid_remote
PASS [ 0.006s] lychee-lib types::cache::tests::test_deserialize_cache_status_blank
PASS [ 0.006s] lychee-lib types::cache::tests::test_deserialize_cache_status_error_code
PASS [ 0.006s] lychee-lib types::cache::tests::test_deserialize_cache_status_success_code
PASS [ 0.007s] lychee-lib types::cache::tests::test_deserialize_cache_status_excluded
PASS [ 0.007s] lychee-lib types::cache::tests::test_deserialize_cache_status_unsupported
PASS [ 0.007s] lychee-lib types::file::tests::test_is_url
PASS [ 0.007s] lychee-lib types::file::tests::test_extension
PASS [ 0.007s] lychee-lib types::input::tests::test_excluded
PASS [ 0.007s] lychee-lib types::input::tests::test_excluded_subdir
PASS [ 0.007s] lychee-lib types::input::tests::test_input_handles_nonexistent_relative_paths
PASS [ 0.007s] lychee-lib types::input::tests::test_input_handles_real_relative_paths
PASS [ 0.007s] lychee-lib types::input::tests::test_no_exclusions
PASS [ 0.007s] lychee-lib types::input::tests::test_url_without_scheme
PASS [ 0.007s] lychee-lib types::input::tests::test_valid_extension
PASS [ 0.007s] lychee-lib types::status::tests::test_get_status_code
PASS [ 0.008s] lychee-lib types::status::tests::test_status_serialization
PASS [ 0.008s] lychee-lib types::uri::github::tests::test_github
PASS [ 0.008s] lychee-lib types::uri::github::tests::test_github_false_positives
PASS [ 0.006s] lychee-lib types::uri::raw::tests::test_is_anchor
PASS [ 0.007s] lychee-lib types::uri::valid::tests::test_convert_to_https
PASS [ 0.007s] lychee-lib types::uri::valid::tests::test_ipv4_uri_is_loopback
PASS [ 0.007s] lychee-lib types::uri::valid::tests::test_ipv6_uri_is_loopback
PASS [ 0.007s] lychee-lib types::uri::valid::tests::test_localhost
PASS [ 0.007s] lychee-lib types::uri::valid::tests::test_uri_from_email_str
PASS [ 0.008s] lychee-lib types::uri::valid::tests::test_uri_from_url
PASS [ 0.006s] lychee-lib types::uri::valid::tests::test_uri_host_ip_no_ip
PASS [ 0.006s] lychee-lib types::uri::valid::tests::test_uri_host_ip_v4
PASS [ 0.006s] lychee-lib types::uri::valid::tests::test_uri_host_ip_v6
PASS [ 0.007s] lychee-lib utils::path::test_path::test_contains
PASS [ 0.007s] lychee-lib utils::path::test_path::test_contains_not
PASS [ 0.007s] lychee-lib utils::path::test_path::test_contains_one_dir_does_not_exist
PASS [ 0.008s] lychee-lib utils::path::test_path::test_contains_one_dir_relative_path
PASS [ 0.007s] lychee-lib utils::path::test_path::test_resolve_absolute_from_absolute
PASS [ 0.007s] lychee-lib utils::path::test_path::test_resolve_absolute_from_base_dir
PASS [ 0.007s] lychee-lib utils::path::test_path::test_resolve_from_absolute
PASS [ 0.007s] lychee-lib utils::path::test_path::test_resolve_relative
PASS [ 0.007s] lychee-lib utils::path::test_path::test_resolve_relative_index
PASS [ 0.007s] lychee-lib utils::request::tests::test_create_uri_from_path
PASS [ 0.007s] lychee-lib utils::reqwest::tests::test_extract_reqwest_error
PASS [ 0.006s] lychee-lib utils::url::test_fs_tree::test_remove_get_params_and_fragment
PASS [ 0.928s] lychee-lib client::tests::test_require_https
PASS [ 7.122s] lychee-lib client::tests::test_timeout

 Summary [  10.170s] 203 tests run: 203 passed, 5 skipped

cargo nextest run --filter-expr 'test(test_exclude_example_domains)'
Compiling openssl-sys v0.9.85
Compiling openssl v0.10.44
Compiling native-tls v0.2.11
Compiling tokio-native-tls v0.3.0
Compiling async-native-tls v0.4.0
Compiling hyper-tls v0.5.0
Compiling async-smtp v0.5.0
Compiling reqwest v0.11.16
Compiling octocrab v0.20.0
Compiling check-if-email-exists v0.9.0
Compiling lychee-lib v0.12.0 (/lychee/lychee-lib)
Compiling lychee v0.12.0 (/lychee/lychee-bin)
Compiling client_pool v0.1.0 (/lychee/examples/client_pool)
Compiling collect_links v0.1.0 (/lychee/examples/collect_links)
Building [=======================> ] 466/474: lychee-lib(test), client_pool(example), lychee(bin), lychee(bin test), collect_links(example)
Compiling simple v0.1.0 (/lychee/examples/simple)
Compiling extract v0.1.0 (/lychee/examples/extract)
Compiling builder v0.1.0 (/lychee/examples/builder)
Finished test [unoptimized + debuginfo] target(s) in 52.30s
Starting 1 tests across 6 binaries (152 skipped)
PASS [ 0.061s] lychee::example_domains cli::test_exclude_example_domains

 Summary [   0.062s] 1 tests run: 1 passed, 152 skipped

cargo test --doc
Finished test [unoptimized + debuginfo] target(s) in 0.80s
Doc-tests lychee-lib

running 5 tests
test src/lib.rs - (line 494) ... ignored
test src/lib.rs - (line 20) ... ok
test src/lib.rs - (line 5) ... ok
test src/lib.rs - (line 480) ... ok
test src/lib.rs - (line 467) ... ok

test result: ok. 4 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 15.20s

[root@e089761b79ce lychee]#
[root@e089761b79ce lychee]#

Sorry about the verbose output and the command errors; I never used Arch Linux before. 😅 Got there in the end, so you can probably skip to the end.

@lebensterben
Copy link
Member

on Arch Linux, running cargo +stable test gives me

failures:

---- client::tests::test_exponential_backoff stdout ----
thread 'client::tests::test_exponential_backoff' panicked at 'assertion failed: (350..=450).contains(&end.as_millis())', lychee-lib/src/client.rs:852:9
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


failures:
    client::tests::test_exponential_backoff

running make test passes all tests though.

@mre
Copy link
Member

mre commented Apr 18, 2023

That looks like a flaky test to me as the code that the command runs is the same for this test. Can you run that single test a few times to see how often it fails?

The initial issue might also be caused by a flaky test. @orhun, can you also run the failing cache test a few more times to see if it's flaky?

@orhun
Copy link
Contributor Author

orhun commented Apr 18, 2023

Unfortunately I'm running things inside a chroot environment via extra-x86_64-build thus the failure seems to be reproducible every time :/

PKGBUILD
# Maintainer: Orhun Parmaksız <orhun@archlinux.org>
# Maintainer: Daniel M. Capella <polyzen@archlinux.org>

pkgname=lychee
pkgver=0.12.0
pkgrel=1
pkgdesc='Fast, async, resource-friendly link checker written in Rust'
arch=('x86_64')
url=https://lychee.cli.rs
license=('Apache' 'MIT')
depends=('gcc-libs' 'openssl')
makedepends=('rust')
checkdepends=('cargo-nextest')
conflicts=('lychee-link-checker' 'lychee-rs')
replaces=('lychee-link-checker' 'lychee-rs')
options=('!lto')
source=("$pkgname-$pkgver.tar.gz::https://github.com/lycheeverse/lychee/archive/v$pkgver/$pkgname-$pkgver.tar.gz")
b2sums=('afe883ae19367ae93a611576d67332d905bb72deed621f432ed0ed986086e907eccbb7bc3f465a1257c3cdfa01a44540a2fbc1503651b4ccc20e0f114d73f848')

prepare() {
  cd $pkgname-$pkgver
  cargo fetch --locked --target "$CARCH-unknown-linux-gnu"
}

build() {
  cd $pkgname-$pkgver
  cargo build --release --frozen
}

check() {
  cd $pkgname-$pkgver
  make test
}

package() {
  cd $pkgname-$pkgver
  install -Dt "$pkgdir"/usr/bin target/release/$pkgname
  install -Dm644 -t "$pkgdir"/usr/share/doc/$pkgname README.md
  install -Dm644 -t "$pkgdir"/usr/share/licenses/$pkgname LICENSE-MIT
}

Is there a way to specify which tests to run or skip tests when make test is used?
Should I try running the nextest commands manually? Would that make a difference?

edit: I also get the same failure when I nspawn'ed into the container and run the tests manually. I tried couple of times and this time another test failed too.

First 5 runs:

thread 'cli::test_skip_cache_unsupported' panicked at 'assertion failed: buf.is_empty()', lychee-bin/tests/cli.rs:914:9
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

6th run:

--- STDOUT:              lychee::cli cli::test_lycheecache_file ---

running 1 test
test cli::test_lycheecache_file ... FAILED

failures:

failures:
    cli::test_lycheecache_file

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 53 filtered out; finished in 0.05s


--- STDERR:              lychee::cli cli::test_lycheecache_file ---
Error: Os { code: 2, kind: NotFound, message: "No such file or directory" }

7th run: all passed.

It's weird :/

@mre
Copy link
Member

mre commented Apr 18, 2023

@orhun, can you run the following command manually?

rm .lycheecache
echo "slack://user\nhttps://example.com/" | lychee --cache --verbose --no-progress --exclude https://example.com -

The output should look exactly like this:

echo "slack://user\nhttps://example.com/" | lychee --cache --verbose --no-progress --exclude https://example.com -
? [EXCLUDED] https://example.com/ | Excluded
? [IGNORED] slack://user | Unsupported: Error creating request client: builder error for url (slack://user): URL scheme is not allowed

🔍 2 Total ✅ 0 OK 🚫 0 Errors 💤 1 Excluded

And .lycheecache should be empty. That's we're testing here. If it's not empty, then I wonder what's in there.

@mre mre added question Further information is requested waiting-for-feedback labels Apr 18, 2023
@orhun
Copy link
Contributor Author

orhun commented Apr 19, 2023

Here is the output:

[root@orhun test]# echo "slack://user\nhttps://example.com/" | ./lychee --cache --verbose --no-progress --exclude https://example.com -
? [EXCLUDED] nhttps://example.com/ | Excluded
? [IGNORED] slack://user | Unsupported: Error creating request client: builder error for url (slack://user): URL scheme is not allowed

🔍 2 Total ✅ 0 OK 🚫 0 Errors 💤 1 Excluded

And .lycheecache is empty.

@lebensterben
Copy link
Member

@mre

could that be caused by parallelism? this test requires the cache file to be empty, but could the cache file be generated by other unit test?

@orhun
Copy link
Contributor Author

orhun commented Apr 19, 2023

I was suspecting that as well. I tried the following:

cargo nextest run --all-targets --all-features --filter-expr '!test(test_exclude_example_domains)' --test-threads 1
cargo nextest run --filter-expr 'test(test_exclude_example_domains)' --test-threads 1
cargo test --doc

And it all passed this time!

I have 2 questions:

  1. Would it be appropriate to provide a PR for applying this change and reducing the test threads to 1?
  2. Is nextest strictly required for running the tests? If possible, I would like to use cargo test to avoid an extra dependency.

Thanks @lebensterben for on-point deduction.

@lebensterben
Copy link
Member

@mre

This is actually a bug.

If a user spawns multiple instances of lychee and has all of them using a cache file, then there could be a "race condition", if different instances of lychee interpret the same cached result differently.

I propose that, before writing results to the cache file, lychee should "lock" it somehow.

@mre
Copy link
Member

mre commented Apr 19, 2023

Couple of action items:

  • Make each cache test run in a separate directory
  • Tests should run with cargo test as well, just slower. If we want to avoid that dependency, we could put it behind a feature flag, which we activate by default, but could be deactivated. Would that work for you @orhun?
  • Ideally, we should lock the cache file. Not sure how. Open for suggestions here. I'd say it's an edge case, though, because few people would run lychee in parallel from the same directory with caching enabled.

@orhun
Copy link
Contributor Author

orhun commented Apr 19, 2023

  • Tests should run with cargo test as well, just slower. If we want to avoid that dependency, we could put it behind a feature flag, which we activate by default, but could be deactivated. Would that work for you @orhun?

Yes, that would be great!

  • ideally we should look the cache file. Not sure how. Open for suggestions here. I'd say it's an edge case, though, because few people would run lychee in parallel from the same directory with caching enabled.

FWIW a quick search points out to the following crates:

Also, we can look into what cargo uses for file locking.

@lebensterben
Copy link
Member

if different lychee instances interpret the same cached result differently, it's problematic.

Currently, the status is represented by one of success status code, failure status code, filtered out by exclusion rules, or unsupported scheme. In fact we should not differentiate success status code from failure status code, and we only need to store status code without labeling them separately. We should leave to each lychee instance to determine whether a status code is a success.

another source of confusion may arise from different network settings when lychee is running. In particular, user agent and proxy are likely to affect the result. Therefore we should also store these "metadata" in cache, and be cautious when using cached result where network settings also changed.

If we do our best to avoid the aforementioned problem, then for practicality we should not worry about race condition.


As for the failed test, I still think we should use cargo-next-test for its parallelization. But let's use a different cache file name for the failed test.

@orhun
Copy link
Contributor Author

orhun commented Apr 19, 2023

FYI I released lychee 0.12.0 for Arch Linux with the --test-threads 1 workaround until a better solution is available.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested waiting-for-feedback
Projects
None yet
Development

No branches or pull requests

3 participants