From 1b3984df20b86b137e1f419896956d7a5359a856 Mon Sep 17 00:00:00 2001 From: Martin Geisler Date: Mon, 4 Mar 2024 16:25:35 +0100 Subject: [PATCH] Move Mockall and GoogleTest slides to Android section (#1533) After #1528 and #1532, we now have actual slides which showcase the crates in action. So we can reclaim a few minutes by removing the slide which mentions Mockall and GoogleTest slide. The slide mentioned [proptest](https://docs.rs/proptest) and [rstest](https://docs.rs/rstest) as well. While I'm sure the libraries are useful, we don't have them imported into AOSP and I've never personally used them. We should therefore not advertise them yet at this point since they won't be useful to Android engineers. Of course we can mention things that are not in AOSP (or in Chromium), but I think we should do it in the speaker notes at most. --- Cargo.lock | 12 +++++--- Cargo.toml | 1 + book.toml | 3 ++ mdbook-course/src/bin/course-schedule.rs | 2 +- src/SUMMARY.md | 6 ++-- src/android/build_all.sh | 5 ++++ src/android/testing.md | 37 ++++++++++++++++++++++++ src/android/testing/Android.bp | 13 +++++++++ src/android/testing/Cargo.toml | 21 ++++++++++++++ src/{ => android}/testing/googletest.md | 2 -- src/{ => android}/testing/googletest.rs | 0 src/{ => android}/testing/mockall.rs | 0 src/{ => android}/testing/mocking.md | 3 +- src/android/testing/src/lib.rs | 36 +++++++++++++++++++++++ src/testing/Cargo.toml | 16 ---------- src/testing/useful-crates.md | 15 ---------- 16 files changed, 129 insertions(+), 43 deletions(-) create mode 100644 src/android/testing.md create mode 100644 src/android/testing/Android.bp create mode 100644 src/android/testing/Cargo.toml rename src/{ => android}/testing/googletest.md (97%) rename src/{ => android}/testing/googletest.rs (100%) rename src/{ => android}/testing/mockall.rs (100%) rename src/{ => android}/testing/mocking.md (94%) create mode 100644 src/android/testing/src/lib.rs delete mode 100644 src/testing/useful-crates.md diff --git a/Cargo.lock b/Cargo.lock index fa6ab9a41ee0..ab2ca059a104 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -59,6 +59,14 @@ dependencies = [ "url", ] +[[package]] +name = "android-testing" +version = "0.1.0" +dependencies = [ + "googletest", + "mockall", +] + [[package]] name = "android-tzdata" version = "0.1.1" @@ -2372,10 +2380,6 @@ checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" [[package]] name = "testing" version = "0.1.0" -dependencies = [ - "googletest", - "mockall", -] [[package]] name = "thiserror" diff --git a/Cargo.toml b/Cargo.toml index 699306afd989..8ae4220fc8a3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,6 +3,7 @@ members = [ "mdbook-course", "mdbook-exerciser", + "src/android/testing", "src/bare-metal/useful-crates/allocator-example", "src/bare-metal/useful-crates/zerocopy-example", "src/borrowing", diff --git a/book.toml b/book.toml index 7e6e1558b442..b84ed87c3924 100644 --- a/book.toml +++ b/book.toml @@ -197,7 +197,10 @@ use-boolean-and = true "structs/tuple-structs.html" = "../user-defined-types/tuple-structs.html" "structure.html" = "running-the-course/course-structure.html" "testing/doc-tests.html" = "../testing/other.html" +"testing/googletest.html" = "../android/testing/googletest.html" "testing/integration-tests.html" = "../testing/other.html" +"testing/mockall.html" = "../android/testing/mockall.html" +"testing/useful-crates.html" = "../testing.html" "traits.html" = "methods-and-traits/traits.html" "traits/closures.html" = "../std-traits/closures.html" "traits/default-methods.html" = "../methods-and-traits/traits.html" diff --git a/mdbook-course/src/bin/course-schedule.rs b/mdbook-course/src/bin/course-schedule.rs index b11c5a180a5c..073f4e73422f 100644 --- a/mdbook-course/src/bin/course-schedule.rs +++ b/mdbook-course/src/bin/course-schedule.rs @@ -45,7 +45,7 @@ fn timediff(actual: u64, target: u64, slop: u64) -> String { duration(actual), duration(actual - target), ) - } else if actual < target - slop { + } else if actual + slop < target { format!("{}: ({} short)", duration(actual), duration(target - actual),) } else { format!("{}", duration(actual)) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index ae2662650f9a..4a699b47e930 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -178,9 +178,6 @@ - [Testing](testing.md) - [Test Modules](testing/unit-tests.md) - [Other Types of Tests](testing/other.md) - - [Useful Crates](testing/useful-crates.md) - - [GoogleTest](testing/googletest.md) - - [Mocking](testing/mocking.md) - [Compiler Lints and Clippy](testing/lints.md) - [Exercise: Luhn Algorithm](testing/exercise.md) - [Solution](testing/solution.md) @@ -231,6 +228,9 @@ - [Sending Objects](android/aidl/types/objects.md) - [Parcelables](android/aidl/types/parcelables.md) - [Sending Files](android/aidl/types/file-descriptor.md) +- [Testing](android/testing.md) + - [GoogleTest](android/testing/googletest.md) + - [Mocking](android/testing/mocking.md) - [Logging](android/logging.md) - [Interoperability](android/interoperability.md) - [With C](android/interoperability/with-c.md) diff --git a/src/android/build_all.sh b/src/android/build_all.sh index d15fde6e4e9d..55b75ffe300d 100755 --- a/src/android/build_all.sh +++ b/src/android/build_all.sh @@ -117,6 +117,11 @@ EOF pkill -f birthday_server +run_example < diff --git a/src/testing/googletest.rs b/src/android/testing/googletest.rs similarity index 100% rename from src/testing/googletest.rs rename to src/android/testing/googletest.rs diff --git a/src/testing/mockall.rs b/src/android/testing/mockall.rs similarity index 100% rename from src/testing/mockall.rs rename to src/android/testing/mockall.rs diff --git a/src/testing/mocking.md b/src/android/testing/mocking.md similarity index 94% rename from src/testing/mocking.md rename to src/android/testing/mocking.md index 1c62cde7cbce..74f9042eed08 100644 --- a/src/testing/mocking.md +++ b/src/android/testing/mocking.md @@ -15,8 +15,7 @@ to use traits, which you can then quickly mock:
-- The advice here is for Android (AOSP) where Mockall is the recommended mocking - library. There are other +- Mockall is the recommended mocking library in Android (AOSP). There are other [mocking libraries available on crates.io](https://crates.io/keywords/mock), in particular in the area of mocking HTTP services. The other mocking libraries work in a similar fashion as Mockall, meaning that they make it easy diff --git a/src/android/testing/src/lib.rs b/src/android/testing/src/lib.rs new file mode 100644 index 000000000000..4ce7b1c60859 --- /dev/null +++ b/src/android/testing/src/lib.rs @@ -0,0 +1,36 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// ANCHOR: leftpad +//! Left-padding library. + +/// Left-pad `s` to `width`. +pub fn leftpad(s: &str, width: usize) -> String { + format!("{s:>width$}") +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn short_string() { + assert_eq!(leftpad("foo", 5), " foo"); + } + + #[test] + fn long_string() { + assert_eq!(leftpad("foobar", 6), "foobar"); + } +} diff --git a/src/testing/Cargo.toml b/src/testing/Cargo.toml index c8f18191407e..049f999caef9 100644 --- a/src/testing/Cargo.toml +++ b/src/testing/Cargo.toml @@ -4,22 +4,6 @@ version = "0.1.0" edition = "2021" publish = false -[[example]] -name = "googletest-example" -crate-type = ["staticlib"] -path = "googletest.rs" -test = true - -[[example]] -name = "mockall-example" -crate-type = ["staticlib"] -path = "mockall.rs" -test = true - [[bin]] name = "luhn" path = "exercise.rs" - -[dependencies] -googletest = "0.11.0" -mockall = "0.12.1" diff --git a/src/testing/useful-crates.md b/src/testing/useful-crates.md deleted file mode 100644 index 2314a5b3b0d3..000000000000 --- a/src/testing/useful-crates.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -minutes: 3 ---- - -# Useful Crates - -Rust comes with only basic support for writing tests. - -Here are some additional crates which we recommend for writing tests: - -- [googletest](https://docs.rs/googletest): Comprehensive test assertion library - in the tradition of GoogleTest for C++. -- [proptest](https://docs.rs/proptest): Property-based testing for Rust. -- [rstest](https://docs.rs/rstest): Support for fixtures and parameterised - tests.