Skip to content

Commit

Permalink
Require async feature for doctests and mosts tests (#293)
Browse files Browse the repository at this point in the history
  • Loading branch information
jayvdb authored Jan 9, 2025
1 parent f1e2423 commit d7cd49b
Show file tree
Hide file tree
Showing 3 changed files with 96 additions and 55 deletions.
28 changes: 26 additions & 2 deletions butane/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -63,22 +63,46 @@ uuid_for_test = { package = "uuid", version = "1.2", features = ["v4"] }
[package.metadata.docs.rs]
all-features = true

[[test]]
name = "basic"
required-features = ["async"]

[[test]]
name = "custom_enum_derived"
required-features = ["async"]

[[test]]
name = "custom_pg"
required-features = ["pg"]

[[test]]
name = "custom_type"
required-features = ["async"]

[[test]]
name = "fake"
required-features = ["fake"]

[[test]]
name = "json"
required-features = ["json"]
required-features = ["async", "json"]

[[test]]
name = "many"
required-features = ["async"]

[[test]]
name = "nullable"
required-features = ["async"]

[[test]]
name = "pool"
required-features = ["r2d2", "deadpool"]

[[test]]
name = "query"
required-features = ["async"]

[[test]]
name = "uuid"
required-features = ["uuid"]
required-features = ["async", "uuid"]
121 changes: 68 additions & 53 deletions butane/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -56,23 +56,28 @@ pub mod db;
/// is single literal, it is assumed to be used to match the
/// primary key.
///
/// # Examples
/// ```
/// # use butane::query::BoolExpr;
/// # use butane_codegen::model;
/// # use butane_codegen::filter;
/// #[model]
/// struct Contestant {
/// #[pk]
/// name: String,
/// rank: i32,
/// nationality: String
/// }
/// let e: BoolExpr = filter!(Contestant, nationality == "US" && rank < 42);
/// let first_place = 1;
/// let e2 = filter!(Contestant, rank == { first_place });
/// let e3 = filter!(Contestant, name.like("A%"));
/// ```
#[cfg_attr(
feature = "async",
doc = r##"
# Examples
```
# use butane::query::BoolExpr;
# use butane_codegen::model;
# use butane_codegen::filter;
#[model]
struct Contestant {
#[pk]
name: String,
rank: i32,
nationality: String
}
let e: BoolExpr = filter!(Contestant, nationality == "US" && rank < 42);
let first_place = 1;
let e2 = filter!(Contestant, rank == { first_place });
let e3 = filter!(Contestant, name.like("A%"));
```
"##
)]
///
/// [`BoolExpr`]: crate::query::BoolExpr
/// [`Query`]: crate::query::Query
Expand All @@ -83,22 +88,27 @@ pub use butane_codegen::filter;
/// Use as `query!(Foo, expr)`, where `Foo` is a model type. Returns [`Query`]`<Foo>`.
///
/// Shorthand for `Foo::query().filter(`[`filter`]`!(Foo, expr))`
//
/// # Examples
/// ```
/// # use butane::query::*;
/// # use butane_codegen::model;
/// # use butane::query;
/// # use butane::prelude::*;
/// #[model]
/// struct Contestant {
/// #[pk]
/// name: String,
/// rank: i32,
/// nationality: String
/// }
/// let top_tier: Query<Contestant> = query!(Contestant, rank <= 10);
/// ```
///
#[cfg_attr(
feature = "async",
doc = r##"
# Examples
```
# use butane::query::*;
# use butane_codegen::model;
# use butane::query;
# use butane::prelude::*;
#[model]
struct Contestant {
#[pk]
name: String,
rank: i32,
nationality: String
}
let top_tier: Query<Contestant> = query!(Contestant, rank <= 10);
```
"##
)]
///
/// [`filter]: crate::filter
/// [`Query`]: crate::query::Query
Expand Down Expand Up @@ -131,26 +141,31 @@ macro_rules! colname {
///
/// This macro is for convenience -- it does nothing that can't be done with `query!` or `filter!`.
///
/// # Examples
/// ```no_run
/// # use butane::db::ConnectionSpec;
/// # use butane::query::BoolExpr;
/// # use butane_codegen::model;
/// # use butane::prelude::*;
/// # use butane::query;
/// # use butane::find;
/// # use butane::DataObject;
/// #[model]
/// struct Contestant {
/// #[pk]
/// name: String,
/// rank: i32,
/// nationality: String
/// }
///
/// let conn = butane::db::connect(&ConnectionSpec::new("sqlite", "foo.db")).unwrap();
/// let alice: Result<Contestant, butane::Error> = find!(Contestant, name == "Alice", &conn);
/// ```
#[cfg_attr(
feature = "async",
doc = r##"
# Examples
```no_run
# use butane::db::ConnectionSpec;
# use butane::query::BoolExpr;
# use butane_codegen::model;
# use butane::prelude::*;
# use butane::query;
# use butane::find;
# use butane::DataObject;
#[model]
struct Contestant {
#[pk]
name: String,
rank: i32,
nationality: String
}
let conn = butane::db::connect(&ConnectionSpec::new("sqlite", "foo.db")).unwrap();
let alice: Result<Contestant, butane::Error> = find!(Contestant, name == "Alice", &conn);
```
"##
)]
///
/// [`filter]: crate::filter
/// [`Result`]: crate::Result
Expand Down
2 changes: 2 additions & 0 deletions butane/tests/common/mod.rs
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
//! Common test utilities.
#[cfg(feature = "async")]
pub mod blog;

0 comments on commit d7cd49b

Please sign in to comment.