Skip to content

book: use mod tests consistently #24043

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

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/doc/reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -1830,7 +1830,7 @@ explain, here's a few use cases and what they would entail:
the second case.

* When writing unit tests for a module, it's often a common idiom to have an
immediate child of the module to-be-tested named `mod test`. This module
immediate child of the module to-be-tested named `mod tests`. This module
could access any items of the parent module through the second case, meaning
that internal implementation details could also be seamlessly tested from the
child module.
Expand Down Expand Up @@ -1882,7 +1882,7 @@ pub mod submodule {
fn my_implementation() {}

#[cfg(test)]
mod test {
mod tests {

#[test]
fn test_my_implementation() {
Expand Down
8 changes: 4 additions & 4 deletions src/doc/style/testing/unit.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
% Unit testing

Unit tests should live in a `test` submodule at the bottom of the module they
test. Mark the `test` submodule with `#[cfg(test)]` so it is only compiled when
Unit tests should live in a `tests` submodule at the bottom of the module they
test. Mark the `tests` submodule with `#[cfg(test)]` so it is only compiled when
testing.

The `test` module should contain:
The `tests` module should contain:

* Imports needed only for testing.
* Functions marked with `#[test]` striving for full coverage of the parent module's
Expand All @@ -17,7 +17,7 @@ For example:
// Excerpt from std::str

#[cfg(test)]
mod test {
mod tests {
#[test]
fn test_eq() {
assert!((eq(&"".to_owned(), &"".to_owned())));
Expand Down
14 changes: 7 additions & 7 deletions src/doc/trpl/testing.md
Original file line number Diff line number Diff line change
Expand Up @@ -219,10 +219,10 @@ fn it_works() {
This is a very common use of `assert_eq!`: call some function with
some known arguments and compare it to the expected output.

# The `test` module
# The `tests` module

There is one way in which our existing example is not idiomatic: it's
missing the test module. The idiomatic way of writing our example
missing the `tests` module. The idiomatic way of writing our example
looks like this:

```{rust,ignore}
Expand All @@ -231,7 +231,7 @@ pub fn add_two(a: i32) -> i32 {
}

#[cfg(test)]
mod test {
mod tests {
use super::add_two;

#[test]
Expand All @@ -241,7 +241,7 @@ mod test {
}
```

There's a few changes here. The first is the introduction of a `mod test` with
There's a few changes here. The first is the introduction of `mod tests` with
a `cfg` attribute. The module allows us to group all of our tests together, and
to also define helper functions if needed, that don't become a part of the rest
of our crate. The `cfg` attribute only compiles our test code if we're
Expand All @@ -260,7 +260,7 @@ pub fn add_two(a: i32) -> i32 {
}

#[cfg(test)]
mod test {
mod tests {
use super::*;

#[test]
Expand Down Expand Up @@ -292,7 +292,7 @@ test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured

It works!

The current convention is to use the `test` module to hold your "unit-style"
The current convention is to use the `tests` module to hold your "unit-style"
tests. Anything that just tests one small bit of functionality makes sense to
go here. But what about "integration-style" tests instead? For that, we have
the `tests` directory
Expand Down Expand Up @@ -346,7 +346,7 @@ test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured
Now we have three sections: our previous test is also run, as well as our new
one.

That's all there is to the `tests` directory. The `test` module isn't needed
That's all there is to the `tests` directory. The `tests` module isn't needed
here, since the whole thing is focused on tests.

Let's finally check out that third section: documentation tests.
Expand Down