Skip to content

bitreq: test all TLS feature combinations in CI#662

Open
satsfy wants to merge 3 commits into
rust-bitcoin:masterfrom
satsfy:test-tls-feature-builds
Open

bitreq: test all TLS feature combinations in CI#662
satsfy wants to merge 3 commits into
rust-bitcoin:masterfrom
satsfy:test-tls-feature-builds

Conversation

@satsfy

@satsfy satsfy commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Closes #653

The test job only built bitreq with default features, so the optional TLS backends were never compiled. List each backend under rbmt exact_features so everyone gets built and tested.

The sync backends also need std in their set, or nothing is tested (cargo test -p bitreq --no-default-features --features https-rustls --test main -> running 0 tests).

rustls alone is excluded because it has no trust roots (say, use it with webpki-roots), so test_https fails (I think this test gate should change, but that is follow-up territory).

Using this required bumping rbmt to 0.5.1 (it was on 0.2.0).

Note that this makes the CI run for longer.

@satsfy satsfy changed the title bitreq: test all feature combinations in CI bitreq: test all TLS feature combinations in CI Jul 14, 2026
@satsfy

satsfy commented Jul 14, 2026

Copy link
Copy Markdown
Contributor Author

After inspecting the logs I have noticed that the amount of ran features has not changed at all. I think CI already handled all jobs by default. Will draft until resolved.

@satsfy
satsfy marked this pull request as draft July 14, 2026 18:57
@nyonson

nyonson commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

At the very end of a test job, for example stable/minimal, rbmt prints a summary. But I think the issue here is that the sample_strategy was added in 0.4.0.

Example from this PR
 [1480](https://github.com/rust-bitcoin/corepc/actions/runs/29347149288/job/87133726541?pr=662#step:5:11481)

Test Summary
Commit: 33ed9f25b81edcca565f758fdcc93665c7f96ef1
Package: corepc-client
  Examples           : (none)
  Individual features: client-sync, jsonrpc
  Sampled subsets    : [client-sync]
  Exact sets         : (none)
  No-std check       : skipped

Package: jsonrpc
  Examples           : (none)
  Individual features: base64, bitreq, bitreq_http, bitreq_http_async, client_async, proxy, simple_http, simple_tcp, simple_uds, socks
  Sampled subsets    : [base64, bitreq, bitreq_http, client_async, proxy, simple_http, simple_tcp, simple_uds, socks], [bitreq, client_async, simple_http, simple_tcp, socks], [base64, bitreq_http_async, proxy, simple_http, simple_uds, socks], [base64, proxy, simple_http, simple_tcp, simple_uds]
  Exact sets         : (none)
  No-std check       : skipped

Package: bitreq
  Examples           : (none)
  Individual features: async, async-https, async-https-native-tls, async-https-rustls, async-https-rustls-probe, base64, https, https-native-tls, https-rustls, https-rustls-probe, json-using-serde, log, native-tls, proxy, rustls, rustls-native-certs, rustls-webpki, serde, serde_json, std, tokio, tokio-native-tls, tokio-rustls, webpki-roots
  Sampled subsets    : [async-https-native-tls, async-https-rustls, base64, log, proxy, rustls-webpki, webpki-roots], [async, https, https-rustls, log, native-tls, rustls-native-certs, rustls-webpki, tokio-native-tls], [async, async-https, async-https-native-tls, async-https-rustls, base64, https-native-tls, https-rustls, https-rustls-probe, json-using-serde, log, native-tls, proxy, rustls, serde, serde_json, tokio, tokio-native-tls, tokio-rustls], [async-https, base64, https-native-tls, https-rustls, https-rustls-probe, json-using-serde, log, native-tls, proxy, rustls-native-certs, rustls-webpki, serde, serde_json, std, tokio-native-tls, webpki-roots], [async, async-https-rustls, https-native-tls, https-rustls, log, native-tls, proxy, rustls, rustls-native-certs, serde, tokio]
  Exact sets         : (none)
  No-std check       : skipped

Package: corepc-types
  Examples           : (none)
  Individual features: serde-deny-unknown-fields, std
  Sampled subsets    : (none)
  Exact sets         : (none)
  No-std check       : skipped

Package: jsonrpc-fuzz
  Examples           : (none)
  Individual features: (none)
  Sampled subsets    : (none)
  Exact sets         : (none)
  No-std check       : skipped

satsfy added 3 commits July 17, 2026 17:02
Bump cargo-rbmt 0.5.1.
0.5 names lockfile flag onto each subcommand and folded docsrs
into docs, with --no-docsrs selecting the stable build.
Two entries in allowed_duplicates no longer show up as duplicate deps,
so cargo-rbmt lint flags them as unused. Drop base64 and getrandom to
match cargo-rbmt 0.5.
The test job only built bitreq with default features, so the optional
TLS backends were never compiled or tested. List each backend under
`exact_features` so cargo-rbmt builds and tests them one by one.

Bare `rustls` has no trust roots and fails `test_https`, so exclude it
from the discovered-feature runs. The three sync backends also need
`std` on their feature set, otherwise the test binary is empty and
`test_https` never runs. The async backends pull `std` in via `async`.
@satsfy
satsfy force-pushed the test-tls-feature-builds branch from 557fd89 to 06d3ea2 Compare July 17, 2026 20:02
@satsfy
satsfy marked this pull request as ready for review July 17, 2026 20:30
@satsfy
satsfy requested a review from tcharding as a code owner July 17, 2026 20:30
@satsfy

satsfy commented Jul 17, 2026

Copy link
Copy Markdown
Contributor Author

Reworked the PR: bumped rbmt to 0.5.1 (because sample_strategy needs 0.4.0+), dropped sample_strategy = all for an explicit exact_features list so each TLS backend actually gets tested.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

bitreq: CI does not test all features

2 participants