summaryrefslogtreecommitdiff
path: root/cli/tests/integration/npm_tests.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tests/integration/npm_tests.rs')
-rw-r--r--cli/tests/integration/npm_tests.rs87
1 files changed, 87 insertions, 0 deletions
diff --git a/cli/tests/integration/npm_tests.rs b/cli/tests/integration/npm_tests.rs
index fa5f3979a..7a2b249a1 100644
--- a/cli/tests/integration/npm_tests.rs
+++ b/cli/tests/integration/npm_tests.rs
@@ -1,7 +1,10 @@
// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license.
use deno_core::url::Url;
+use std::process::Stdio;
use test_util as util;
+use util::assert_contains;
+use util::http_server;
// NOTE: It's possible to automatically update the npm registry data in the test server
// by setting the DENO_TEST_UTIL_UPDATE_NPM=1 environment variable.
@@ -51,6 +54,13 @@ itest!(dynamic_import {
http_server: true,
});
+itest!(cached_only {
+ args: "run --cached-only --unstable npm/cached_only/main.ts",
+ output: "npm/cached_only/main.out",
+ envs: env_vars(),
+ exit_code: 1,
+});
+
itest!(import_map {
args: "run --allow-read --unstable --import-map npm/import_map/import_map.json npm/import_map/main.js",
output: "npm/import_map/main.out",
@@ -77,6 +87,83 @@ fn parallel_downloading() {
}
#[test]
+fn cached_only_after_first_run() {
+ let _server = http_server();
+
+ let deno_dir = util::new_deno_dir();
+
+ let deno = util::deno_cmd_with_deno_dir(&deno_dir)
+ .current_dir(util::testdata_path())
+ .arg("run")
+ .arg("--unstable")
+ .arg("--allow-read")
+ .arg("--allow-env")
+ .arg("npm/cached_only_after_first_run/main1.ts")
+ .env("NO_COLOR", "1")
+ .envs(env_vars())
+ .stdout(Stdio::piped())
+ .stderr(Stdio::piped())
+ .spawn()
+ .unwrap();
+ let output = deno.wait_with_output().unwrap();
+ let stderr = String::from_utf8_lossy(&output.stderr);
+ let stdout = String::from_utf8_lossy(&output.stdout);
+ assert_contains!(stderr, "Download");
+ assert_contains!(stdout, "createChalk: chalk");
+ assert!(output.status.success());
+
+ let deno = util::deno_cmd_with_deno_dir(&deno_dir)
+ .current_dir(util::testdata_path())
+ .arg("run")
+ .arg("--unstable")
+ .arg("--allow-read")
+ .arg("--allow-env")
+ .arg("--cached-only")
+ .arg("npm/cached_only_after_first_run/main2.ts")
+ .env("NO_COLOR", "1")
+ .envs(env_vars())
+ .stdout(Stdio::piped())
+ .stderr(Stdio::piped())
+ .spawn()
+ .unwrap();
+ let output = deno.wait_with_output().unwrap();
+ let stderr = String::from_utf8_lossy(&output.stderr);
+ let stdout = String::from_utf8_lossy(&output.stdout);
+ assert_contains!(
+ stderr,
+ "An npm specifier not found in cache: \"ansi-styles\", --cached-only is specified."
+ );
+ assert!(stdout.is_empty());
+ assert!(!output.status.success());
+
+ let deno = util::deno_cmd_with_deno_dir(&deno_dir)
+ .current_dir(util::testdata_path())
+ .arg("run")
+ .arg("--unstable")
+ .arg("--allow-read")
+ .arg("--allow-env")
+ .arg("--cached-only")
+ .arg("npm/cached_only_after_first_run/main1.ts")
+ .env("NO_COLOR", "1")
+ .envs(env_vars())
+ .stdout(Stdio::piped())
+ .stderr(Stdio::piped())
+ .spawn()
+ .unwrap();
+
+ eprintln!("DENO DIR: {}", deno_dir.path().display());
+ std::mem::forget(deno_dir);
+ let output = deno.wait_with_output().unwrap();
+ let stderr = String::from_utf8_lossy(&output.stderr);
+ let stdout = String::from_utf8_lossy(&output.stdout);
+ eprintln!("stderr {}", stderr);
+ eprintln!("stdout {}", stdout);
+ assert!(output.status.success());
+ assert!(stderr.is_empty());
+ assert_contains!(stdout, "createChalk: chalk");
+}
+
+#[test]
fn ensure_registry_files_local() {
// ensures the registry files all point at local tarballs
let registry_dir_path = util::testdata_path().join("npm").join("registry");