alexliesenfeld / httpmock

HTTP mocking library for Rust.
MIT License
436 stars 40 forks source link

Add features to reduce dependencies #46

Closed ufoscout closed 1 year ago

ufoscout commented 2 years ago

With my team we are evaluating httpmock; it really looks like a great project. Anyway, our test compile-time increased substantially due to its number of dependencies. Would it maybe be possible to reduce the dependencies using cargo features? For example, I guess isahc and some other "client-side" libraries are used only with a remote server; could they be made optional and enabled with a remote feature?

alexliesenfeld commented 2 years ago

Thanks for creating this issue! By looking at the dependency tree, I think it should be possible to reduce the number of dependencies that are required for regular usage (i.e., non-standalone mode) by about 30%. Most dependencies seem to be added by isahc and async-std (coming in though async-object-pool). I'll look into it.

ducaale commented 2 years ago

Making isahc optional would also let users remove OpenSSL from their dependency tree since it doesn't play well with rust-cross.

ducaale commented 2 years ago

Would it maybe be possible to reduce the dependencies using cargo features? For example, I guess isahc and some other "client-side" libraries are used only with a remote server; could they be made optional and enabled with a remote feature?

After skimming the code a little bit, I don't think ishac could be made optional in non-standalone mode since it is used to ping the test server. However, I think that a minimal client library such as ureq could be used for pinging instead.

Another approach is to replace every instance of isahc with ureq but the latter doesn't support async requests so I don't know if that is desirable.

vikanezrimaya commented 2 years ago

Could isahc be potentially replaced by hyper's client capabilities, seeming as the code, at least in the ping case, is async? (see src/api/adapter/mod.rs#L84-L108)

github-actions[bot] commented 1 year ago

This issue is stale because it has been open for 30 days with no activity.

github-actions[bot] commented 1 year ago

This issue was closed because it has been inactive for 14 days since being marked as stale.