-
Notifications
You must be signed in to change notification settings - Fork 121
Add example for CLI tests with temporary directories and setting the current working directory (CWD) #284
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
base: master
Are you sure you want to change the base?
Add example for CLI tests with temporary directories and setting the current working directory (CWD) #284
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -472,7 +472,7 @@ at the end of the function, | |
| the actual temporary file will automatically get deleted. | ||
|
|
||
| ```rust,ignore | ||
| {{#include testing/tests/cli.rs:17:32}} | ||
| {{#include testing/tests/cli.rs:17:30}} | ||
| ``` | ||
|
|
||
| <aside class="exercise"> | ||
|
|
@@ -483,6 +483,31 @@ Adjust the program as needed. | |
|
|
||
| </aside> | ||
|
|
||
| ## Executing tests in a temporary directory | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is all focusing on teaching an API and is not fitting it within the narrative of the book
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I will rewrite the section intro to fit better with the style of the section before and after. For example, by connecting the newly introduced APIs to what the book has explored so far.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It also needs to be tied into the application we are testing
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Hi again! Please review the combined diff for this PR to see the latest version :) 1: I rewrote the section and created a new test case to describe the new concepts in a way that fits better with the rest of the book. I opted to make the test and description slightly verbose and more explicit to give a better understanding. This way, we clearly show what happens when you set the current working directory, and explain why it works in one case but not the other. This could technically be rewritten in a shorter format, skipping the nested directory. However, then we wouldn't have such a clear visual example with a directory structure when we should explain how the current working directory works. I think it's worth a longer description and example, because the CWD is a very important concept for CLI tools, especially when accepting paths as CLI arguments. 2: I also removed the changes that were moved to a separate PR. |
||
|
|
||
| To fully control the behavior of your CLI app, you can use | ||
| `assert_fs::TempDir::new()` to create a temporary directory. | ||
| This is useful when you need to read and write | ||
| multiple directories or files. You can also use it as the | ||
| current working directory (CWD) when executing your CLI app, | ||
| ensuring test results are consistent and don't interfere with | ||
| other, unrelated files. | ||
|
|
||
| Temporary directories allow you to create multiple child | ||
| directories and files within them, enabling more advanced | ||
| test cases. Just like for single temporary files, | ||
| all nested files and directories within temporary directories | ||
| are also cleaned up after the test is completed. | ||
|
|
||
| ```rust,ignore | ||
| {{#include testing/tests/cli.rs:32:56}} | ||
| ``` | ||
|
|
||
| You now know the core features of the crates `assert_cmd`, | ||
| `assert_fs` and `predicates` and are ready to start testing | ||
| your own CLI apps. Feel free to check out their documentation | ||
| to find more useful features. | ||
|
|
||
| ## What to test? | ||
|
|
||
| While it can certainly be fun to write integration tests, | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.