Skip to content

Commit d8a3775

Browse files
authored
Make butane/tests a separate crate (#416)
1 parent 02b19ee commit d8a3775

File tree

9 files changed

+157
-106
lines changed

9 files changed

+157
-106
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ jobs:
126126
- name: Test CLI
127127
run: cd butane_cli && cargo +stable test --all-features
128128
- name: Test
129-
run: cd butane && cargo +stable test --all-features
129+
run: cargo +stable test -p butane_tests --all-features
130130
- name: Check example migrations have been updated
131131
run: |
132132
set -ex

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ butanevsc.code-workspace
66
butane.code_workspace.code-workspace
77
.vscode/tasks.json
88
butane_codegen/.butane
9+
butane/tests/.butane
910
db.sqlite
1011
tmp_pg
1112
*.db

Cargo.lock

Lines changed: 32 additions & 23 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
resolver = "2"
33
members = [
44
"butane",
5+
"butane/tests",
56
"butane_cli",
67
"butane_codegen",
78
"butane_core",

butane/Cargo.toml

Lines changed: 3 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,10 @@ categories = ["database"]
1010
license.workspace = true
1111
repository.workspace = true
1212
documentation = "https://docs.rs/butane/"
13-
build = "build.rs"
1413
rust-version.workspace = true
14+
exclude = ["tests"]
15+
autobenches = false
16+
autotests = false
1517

1618
[features]
1719
async = ["butane_core/async", "butane_codegen/async"]
@@ -30,9 +32,6 @@ r2d2 = ["dep:r2d2"]
3032
turso = ["butane_core/turso"]
3133
tls = ["butane_core/tls"]
3234
uuid = ["butane_codegen/uuid", "butane_core/uuid"]
33-
# This feature is for testing only. It will delete the .butane directory inside the butane crate, which only
34-
# exists when running tests. It has no effect when running butane as a dependency.
35-
_auto_delete_dot_butane = []
3635

3736
[dependencies]
3837
butane_codegen = { workspace = true }
@@ -41,69 +40,6 @@ r2d2 = { optional = true, workspace = true }
4140
deadpool = { optional = true, workspace = true }
4241

4342
[dev-dependencies]
44-
butane = { features = ["_auto_delete_dot_butane"], path = "." }
45-
butane_test_helper = { workspace = true, default-features = false, features = ["pg", "sqlite", "turso"] }
46-
butane_test_macros = { workspace = true }
47-
cfg-if = { workspace = true }
48-
paste = { workspace = true }
49-
chrono = { workspace = true, features = ["now"] }
50-
env_logger = { workspace = true }
51-
fake = { workspace = true, features = ["chrono", "derive", "uuid"] }
52-
geo-types = "0.7"
53-
log.workspace = true
54-
nonempty.workspace = true
55-
quote = { workspace = true }
56-
maybe-async-cfg.workspace = true
57-
proc-macro2 = { workspace = true }
58-
tokio = { workspace = true, features = ["macros"] }
59-
tokio-postgres = { features = ["with-geo-types-0_7"], workspace = true }
60-
tokio-test = { workspace = true }
61-
rand = { workspace = true }
62-
rusqlite = { workspace = true }
63-
serde = { workspace = true }
64-
serde_json = { workspace = true }
65-
sqlparser = { workspace = true }
66-
uuid_for_test = { package = "uuid", version = "1.2", features = ["v4"] }
6743

6844
[package.metadata.docs.rs]
6945
all-features = true
70-
71-
[[test]]
72-
name = "basic"
73-
required-features = ["async"]
74-
75-
[[test]]
76-
name = "custom_enum_derived"
77-
required-features = ["async"]
78-
79-
[[test]]
80-
name = "custom_type"
81-
required-features = ["async"]
82-
83-
[[test]]
84-
name = "fake"
85-
required-features = ["fake"]
86-
87-
[[test]]
88-
name = "json"
89-
required-features = ["async", "json"]
90-
91-
[[test]]
92-
name = "many"
93-
required-features = ["async"]
94-
95-
[[test]]
96-
name = "nullable"
97-
required-features = ["async"]
98-
99-
[[test]]
100-
name = "pool"
101-
required-features = ["r2d2", "deadpool"]
102-
103-
[[test]]
104-
name = "query"
105-
required-features = ["async"]
106-
107-
[[test]]
108-
name = "uuid"
109-
required-features = ["async", "uuid"]

butane/tests/Cargo.toml

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
[package]
2+
name = "butane_tests"
3+
version.workspace = true
4+
authors = ["James Oakley <[email protected]>"]
5+
edition.workspace = true
6+
description = "Integration tests for butane ORM"
7+
license.workspace = true
8+
repository.workspace = true
9+
publish = false
10+
rust-version.workspace = true
11+
build = "build.rs"
12+
13+
[features]
14+
async = ["butane/async"]
15+
datetime = ["butane/datetime"]
16+
json = ["butane/json"]
17+
sqlite = ["butane/sqlite"]
18+
sqlite-bundled = ["butane/sqlite-bundled"]
19+
pg = ["butane/pg"]
20+
fake = ["butane/fake"]
21+
uuid = ["butane/uuid"]
22+
r2d2 = ["butane/r2d2"]
23+
deadpool = ["butane/deadpool"]
24+
turso = ["butane/turso"]
25+
26+
[lib]
27+
path = "common/mod.rs"
28+
29+
[dependencies]
30+
butane = { workspace = true }
31+
butane_core = { workspace = true }
32+
butane_test_helper = { workspace = true, default-features = false, features = ["pg", "sqlite", "turso"] }
33+
butane_test_macros = { workspace = true }
34+
cfg-if = { workspace = true }
35+
paste = { workspace = true }
36+
chrono = { workspace = true, features = ["now"] }
37+
deadpool = { workspace = true }
38+
env_logger = { workspace = true }
39+
fake = { workspace = true, features = ["chrono", "derive", "uuid"] }
40+
geo-types = "0.7"
41+
log.workspace = true
42+
nonempty.workspace = true
43+
quote = { workspace = true }
44+
maybe-async-cfg.workspace = true
45+
proc-macro2 = { workspace = true }
46+
r2d2 = { workspace = true }
47+
rand = { workspace = true }
48+
rusqlite = { workspace = true }
49+
serde = { workspace = true }
50+
serde_json = { workspace = true }
51+
sqlparser = { workspace = true }
52+
tokio = { workspace = true, features = ["macros"] }
53+
tokio-postgres = { features = ["with-geo-types-0_7"], workspace = true }
54+
tokio-test = { workspace = true }
55+
uuid_for_test = { package = "uuid", version = "1.2", features = ["v4"] }
56+
57+
[[test]]
58+
name = "basic"
59+
path = "basic.rs"
60+
required-features = ["async"]
61+
62+
[[test]]
63+
name = "custom_enum_derived"
64+
path = "custom_enum_derived.rs"
65+
required-features = ["async"]
66+
67+
[[test]]
68+
name = "custom_type"
69+
path = "custom_type.rs"
70+
required-features = ["async"]
71+
72+
[[test]]
73+
name = "derive_model"
74+
path = "derive_model.rs"
75+
required-features = ["async"]
76+
77+
[[test]]
78+
name = "fake"
79+
path = "fake.rs"
80+
required-features = ["fake"]
81+
82+
[[test]]
83+
name = "json"
84+
path = "json.rs"
85+
required-features = ["async", "json"]
86+
87+
[[test]]
88+
name = "many"
89+
path = "many.rs"
90+
required-features = ["async"]
91+
92+
[[test]]
93+
name = "nullable"
94+
path = "nullable.rs"
95+
required-features = ["async"]
96+
97+
[[test]]
98+
name = "pool"
99+
path = "pool.rs"
100+
required-features = ["r2d2", "deadpool"]
101+
102+
[[test]]
103+
name = "query"
104+
path = "query.rs"
105+
required-features = ["async"]
106+
107+
[[test]]
108+
name = "unmigrate"
109+
path = "unmigrate.rs"
110+
required-features = ["async"]
111+
112+
[[test]]
113+
name = "uuid"
114+
path = "uuid.rs"
115+
required-features = ["async", "uuid"]

butane/build.rs renamed to butane/tests/build.rs

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,12 @@
1-
fn main() {
2-
println!("cargo:rerun-if-changed=tests/");
3-
4-
// Note that #[cfg(test)] and CARGO_CFG_TEST do not work in build.rs
5-
// See https://github.com/rust-lang/cargo/issues/4789
6-
#[cfg(feature = "_auto_delete_dot_butane")]
7-
{
8-
clean_dot_butane();
9-
}
10-
}
11-
121
/// This cleans the .butane/ directory which is generated when compiling the tests so that
132
/// the tests do not encounter side effects from previous test runs.
143
/// Currently the only way to remove stale items from the generated .butane/ directory is to
154
/// delete it before the code is compiled.
165
/// This means we can not rely on `butane clean` or the code behind it, because it hasnt
176
/// been compiled yet.
18-
#[cfg(feature = "_auto_delete_dot_butane")]
19-
fn clean_dot_butane() {
7+
fn main() {
8+
println!("cargo:rerun-if-changed=./");
9+
2010
let dir = ".butane/";
2111
if std::path::Path::new(&dir).is_dir() {
2212
println!("cargo:warning=Deleting .butane directory");

butane/tests/derive_model.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
//! Test that #[derive(DataObject)] works the same as #[model]
1+
//! Test that `#[derive(DataObject)]` works the same as #[model].
22
33
use butane::db::ConnectionAsync;
44
use butane::{query, AutoPk, DataObject};

butane/tests/pool.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
use butane::db::ConnectionManager;
33
use butane_test_helper::*;
44
#[cfg(any(feature = "pg", feature = "sqlite"))]
5-
#[cfg(any(feature = "pg", feature = "sqlite"))]
65
use r2d2;
76
use std::ops::DerefMut;
87

0 commit comments

Comments
 (0)