From 9b907d4ed8e77f23468d54b35fcf840b9a3642f7 Mon Sep 17 00:00:00 2001 From: Mohsen Azimi Date: Fri, 17 Jan 2025 11:19:46 +0700 Subject: [PATCH 1/2] test: add npm update notifier test --- tests/node_e2e_test.rs | 57 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/tests/node_e2e_test.rs b/tests/node_e2e_test.rs index f4b45ba..6668469 100644 --- a/tests/node_e2e_test.rs +++ b/tests/node_e2e_test.rs @@ -1,4 +1,5 @@ use assert_cmd::Command; +use predicates::prelude::*; use std::error::Error; use std::path::PathBuf; @@ -34,3 +35,59 @@ fn test_nodejs_ecosystem_ignore_tools() -> Result<(), Box> { Ok(()) } + +#[test] +fn test_npm_outdated_nag() -> Result<(), Box> { + // Use the pre-existing nagging package + let nagging_package = PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("tests") + .join("test_files") + .join("nagging-package"); + + // First, ensure we're starting with a clean environment by unsetting any existing env vars + let mut reset_cmd = Command::new("npm"); + reset_cmd + .env_remove("NPM_CONFIG_UPDATE_NOTIFIER") + .args(["config", "delete", "update-notifier"]) + .current_dir(&nagging_package) + .assert() + .success(); + + // Set update-notifier to true to ensure we start in a nagging state + let mut enable_cmd = Command::new("npm"); + enable_cmd + .env_remove("NPM_CONFIG_UPDATE_NOTIFIER") + .args(["config", "set", "update-notifier", "true"]) + .current_dir(&nagging_package) + .assert() + .success(); + + // Verify update-notifier is enabled + let mut verify_cmd = Command::new("npm"); + verify_cmd + .env_remove("NPM_CONFIG_UPDATE_NOTIFIER") + .args(["config", "get", "update-notifier"]) + .current_dir(&nagging_package) + .assert() + .success() + .stdout(predicate::str::contains("true")); + + // Run stop-nagging to set environment vars that silence the notices + let mut stop_nagging_cmd = Command::cargo_bin("stop-nagging")?; + stop_nagging_cmd + .arg("--ecosystems") + .arg("nodejs") + .assert() + .success(); + + // Check npm config after running stop-nagging + let mut post_config_cmd = Command::new("npm"); + post_config_cmd + .args(["config", "get", "update-notifier"]) + .current_dir(&nagging_package) + .assert() + .success() + .stdout(predicate::str::contains("false")); + + Ok(()) +} From 85035ee39daeca67c11d1166853f61ad6c060021 Mon Sep 17 00:00:00 2001 From: Mohsen Azimi Date: Fri, 17 Jan 2025 11:25:05 +0700 Subject: [PATCH 2/2] test: improve npm update notifier test --- .gitignore | 6 ++++++ README.md | 6 ------ tests/node_e2e_test.rs | 11 ++++++++++- tests/test_files/nagging-package/package.json | 12 ++++++++++++ 4 files changed, 28 insertions(+), 7 deletions(-) create mode 100644 tests/test_files/nagging-package/package.json diff --git a/.gitignore b/.gitignore index 2f7896d..a50ba29 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,7 @@ target/ + +# Test files +node_modules/ +package-lock.json +yarn.lock +pnpm-lock.yaml diff --git a/README.md b/README.md index 73b5149..51728f7 100644 --- a/README.md +++ b/README.md @@ -4,12 +4,6 @@ It uses a YAML file (`tools.yaml`) to list each tool's name, environment variables, and commands to run, making it easy for new contributors to update the logic without writing Rust code. -## Features - -- Uses a centralized `tools.yaml` to define each tool's disabling strategy (commands, env vars, etc.) -- Configurable via CLI flags (planned) -- Installs easily with `curl` - ## Supported Tools Head over to [`tools.yaml`](tools.yaml) to see the list of supported tools. diff --git a/tests/node_e2e_test.rs b/tests/node_e2e_test.rs index 6668469..4e79a8a 100644 --- a/tests/node_e2e_test.rs +++ b/tests/node_e2e_test.rs @@ -80,7 +80,16 @@ fn test_npm_outdated_nag() -> Result<(), Box> { .assert() .success(); - // Check npm config after running stop-nagging + // Run npm config list to verify the environment variable is set + let mut env_cmd = Command::new("npm"); + env_cmd + .args(["config", "list"]) + .current_dir(&nagging_package) + .assert() + .success() + .stdout(predicate::str::contains("update-notifier = false")); + + // Also verify the config is set to false let mut post_config_cmd = Command::new("npm"); post_config_cmd .args(["config", "get", "update-notifier"]) diff --git a/tests/test_files/nagging-package/package.json b/tests/test_files/nagging-package/package.json new file mode 100644 index 0000000..0658ebe --- /dev/null +++ b/tests/test_files/nagging-package/package.json @@ -0,0 +1,12 @@ +{ + "name": "nagging-package", + "version": "1.0.0", + "dependencies": { + "left-pad": "^1.0.0", + "vercel": "^38.0.0", + "prisma": "^2.0.0" + }, + "scripts": { + "start": "vercel -v && prisma -v" + } +}