Skip to content

Refine ninja env docs and tests#121

Merged
leynos merged 1 commit intocodex/add-envlock-and-mockable-env-for-ninja_envfrom
codex/action-unresolved-comments-on-pr-115
Aug 15, 2025
Merged

Refine ninja env docs and tests#121
leynos merged 1 commit intocodex/add-envlock-and-mockable-env-for-ninja_envfrom
codex/action-unresolved-comments-on-pr-115

Conversation

@leynos
Copy link
Copy Markdown
Owner

@leynos leynos commented Aug 15, 2025

Summary

  • tidy ninja env crate docs
  • compare NINJA_ENV with OsString and share temp path via rstest fixture

Testing

  • make fmt
  • make lint
  • make test

https://chatgpt.com/codex/tasks/task_e_689f13d1b0488322ba63228624031770

Summary by Sourcery

Refine ninja_env crate by updating documentation formatting and improving tests for NINJA_ENV override behavior.

Enhancements:

  • Replace inline temp path construction in tests with a rstest fixture returning a shared PathBuf
  • Change NINJA_ENV comparisons in tests to use OsString for direct equality checks
  • Simplify test comments and remove 'SAFETY' annotations in favor of plain comments

Documentation:

  • Reformat crate-level documentation comments for consistency and multiline code examples

Tests:

  • Add rstest fixture for temporary ninja path and inject it into override_ninja_env tests
  • Refactor override_ninja_env tests to leverage PathBuf fixture and OsString assertions

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Aug 15, 2025

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

✨ Finishing Touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch codex/action-unresolved-comments-on-pr-115

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@sourcery-ai
Copy link
Copy Markdown
Contributor

sourcery-ai Bot commented Aug 15, 2025

Reviewer's Guide

Refined ninja_env documentation and tests by introducing a reusable rstest fixture for the Ninja temp directory, switching to OsString-based environment variable checks, cleaning up comments, and reflowing doc comments and code examples.

Sequence diagram for test setup with rstest fixture and OsString environment variable

sequenceDiagram
    participant TestRunner
    participant RstestFixture
    participant Env
    TestRunner->>RstestFixture: Request ninja_temp_dir
    RstestFixture-->>TestRunner: Provide ninja_temp_dir
    TestRunner->>Env: Set NINJA_ENV using OsString
    TestRunner->>Env: Run test with NINJA_ENV
    TestRunner->>Env: Remove NINJA_ENV after test
Loading

Class diagram for updated ninja_env test structure

classDiagram
    class NinjaEnvTest {
        +ninja_temp_dir: PathBuf
        +ninja_env_var: OsString
        +test_ninja_env()
    }
    class RstestFixture {
        +ninja_temp_dir: PathBuf
    }
    NinjaEnvTest --> RstestFixture : uses
Loading

File-Level Changes

Change Details Files
Introduce a rstest fixture for the Ninja temp path
  • import rstest fixture macro
  • define ninja_tmp fixture returning temp_dir()/"ninja"
  • update test functions to accept ninja_tmp parameter
  • replace inline temp_dir() calls with ninja_tmp
tests/ninja_env_tests.rs
Switch tests to use OsString-based environment checks
  • use std::env::var_os instead of var
  • compare OsStr values directly in assertions
tests/ninja_env_tests.rs
Clean up EnvLock safety comments
  • remove backticks around EnvLock comments
  • simplify comment phrasing
tests/ninja_env_tests.rs
Reflow documentation and code examples in lib.rs
  • merge doc comment lines into a single paragraph
  • format assert_eq! example as a multiline block
ninja_env/src/lib.rs

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@leynos leynos merged commit a60869b into codex/add-envlock-and-mockable-env-for-ninja_env Aug 15, 2025
2 checks passed
@leynos leynos deleted the codex/action-unresolved-comments-on-pr-115 branch August 15, 2025 11:29
Copy link
Copy Markdown
Contributor

@sourcery-ai sourcery-ai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey there - I've reviewed your changes and they look great!

Prompt for AI Agents
Please address the comments from this code review:
## Individual Comments

### Comment 1
<location> `tests/ninja_env_tests.rs:11` </location>
<code_context>
 use test_support::{env::override_ninja_env, env_lock::EnvLock};

+#[fixture]
+fn ninja_tmp() -> PathBuf {
+    std::env::temp_dir().join("ninja")
+}
</code_context>

<issue_to_address>
Consider cleaning up the temp directory after tests.

Since 'ninja_tmp' may accumulate files or directories during tests, add cleanup logic to remove the temp directory after each test to maintain test isolation.

Suggested implementation:

```rust
use std::fs;
use std::ops::Deref;

/// Wrapper struct to clean up temp directory after test
pub struct NinjaTmp(PathBuf);

impl Deref for NinjaTmp {
    type Target = PathBuf;
    fn deref(&self) -> &Self::Target {
        &self.0
    }
}

impl Drop for NinjaTmp {
    fn drop(&mut self) {
        let _ = fs::remove_dir_all(&self.0);
    }
}

#[fixture]
fn ninja_tmp() -> NinjaTmp {
    let path = std::env::temp_dir().join("ninja");
    // Ensure the directory exists for the test
    let _ = fs::create_dir_all(&path);
    NinjaTmp(path)
}

```

```rust
fn override_ninja_env_sets_and_restores(ninja_tmp: NinjaTmp) {

```

If there are other tests in this file using the `ninja_tmp` fixture, update their signatures to accept `NinjaTmp` instead of `PathBuf`. Also, update any usage of `ninja_tmp` in the test bodies to use `*ninja_tmp` or `ninja_tmp.deref()` if a `PathBuf` is needed.
</issue_to_address>

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

Comment thread tests/ninja_env_tests.rs
use test_support::{env::override_ninja_env, env_lock::EnvLock};

#[fixture]
fn ninja_tmp() -> PathBuf {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion (testing): Consider cleaning up the temp directory after tests.

Since 'ninja_tmp' may accumulate files or directories during tests, add cleanup logic to remove the temp directory after each test to maintain test isolation.

Suggested implementation:

use std::fs;
use std::ops::Deref;

/// Wrapper struct to clean up temp directory after test
pub struct NinjaTmp(PathBuf);

impl Deref for NinjaTmp {
    type Target = PathBuf;
    fn deref(&self) -> &Self::Target {
        &self.0
    }
}

impl Drop for NinjaTmp {
    fn drop(&mut self) {
        let _ = fs::remove_dir_all(&self.0);
    }
}

#[fixture]
fn ninja_tmp() -> NinjaTmp {
    let path = std::env::temp_dir().join("ninja");
    // Ensure the directory exists for the test
    let _ = fs::create_dir_all(&path);
    NinjaTmp(path)
}
fn override_ninja_env_sets_and_restores(ninja_tmp: NinjaTmp) {

If there are other tests in this file using the ninja_tmp fixture, update their signatures to accept NinjaTmp instead of PathBuf. Also, update any usage of ninja_tmp in the test bodies to use *ninja_tmp or ninja_tmp.deref() if a PathBuf is needed.

leynos added a commit that referenced this pull request Aug 15, 2025
* Add guard for NINJA_ENV overrides

* Quote NINJA_ENV in doc comment

* Centralise NINJA_ENV and cover unset restoration

* Remove manual NINJA_ENV cleanup in tests

* Add crate for shared NINJA_ENV constant

* Scope EnvLock in NINJA_ENV tests (#117)

* Apply review suggestions for ninja env crate (#118)

* Document NINJA_ENV and restore via OsString (#120)

* Refine ninja env docs and tests (#121)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant