mirror of
https://github.com/denoland/deno
synced 2024-11-05 18:45:24 +00:00
refactor: clean up cli/file_fetcher.rs (#12772)
This commit is contained in:
parent
cd9193f126
commit
01644488ae
1 changed files with 34 additions and 71 deletions
|
@ -35,7 +35,6 @@ use std::path::PathBuf;
|
|||
use std::pin::Pin;
|
||||
use std::sync::Arc;
|
||||
|
||||
static DENO_AUTH_TOKENS: &str = "DENO_AUTH_TOKENS";
|
||||
pub const SUPPORTED_SCHEMES: [&str; 5] =
|
||||
["data", "blob", "file", "http", "https"];
|
||||
|
||||
|
@ -247,7 +246,7 @@ impl FileFetcher {
|
|||
unsafely_ignore_certificate_errors: Option<Vec<String>>,
|
||||
) -> Result<Self, AnyError> {
|
||||
Ok(Self {
|
||||
auth_tokens: AuthTokens::new(env::var(DENO_AUTH_TOKENS).ok()),
|
||||
auth_tokens: AuthTokens::new(env::var("DENO_AUTH_TOKENS").ok()),
|
||||
allow_remote,
|
||||
cache: Default::default(),
|
||||
cache_setting,
|
||||
|
@ -639,9 +638,8 @@ mod tests {
|
|||
cache_setting: CacheSetting,
|
||||
maybe_temp_dir: Option<Rc<TempDir>>,
|
||||
) -> (FileFetcher, Rc<TempDir>, BlobStore) {
|
||||
let temp_dir = maybe_temp_dir.unwrap_or_else(|| {
|
||||
Rc::new(TempDir::new().expect("failed to create temp directory"))
|
||||
});
|
||||
let temp_dir =
|
||||
maybe_temp_dir.unwrap_or_else(|| Rc::new(TempDir::new().unwrap()));
|
||||
let location = temp_dir.path().join("deps");
|
||||
let blob_store = BlobStore::default();
|
||||
let file_fetcher = FileFetcher::new(
|
||||
|
@ -652,7 +650,7 @@ mod tests {
|
|||
blob_store.clone(),
|
||||
None,
|
||||
)
|
||||
.expect("setup failed");
|
||||
.unwrap();
|
||||
(file_fetcher, temp_dir, blob_store)
|
||||
}
|
||||
|
||||
|
@ -1097,7 +1095,7 @@ mod tests {
|
|||
BlobStore::default(),
|
||||
None,
|
||||
)
|
||||
.expect("setup failed");
|
||||
.unwrap();
|
||||
let result = file_fetcher
|
||||
.fetch(&specifier, &mut Permissions::allow_all())
|
||||
.await;
|
||||
|
@ -1113,10 +1111,8 @@ mod tests {
|
|||
#[tokio::test]
|
||||
async fn test_fetch_uses_cache() {
|
||||
let _http_server_guard = test_util::http_server();
|
||||
let temp_dir = TempDir::new()
|
||||
.expect("could not create temp dir")
|
||||
.into_path();
|
||||
let location = temp_dir.join("deps");
|
||||
let temp_dir = TempDir::new().unwrap();
|
||||
let location = temp_dir.path().join("deps");
|
||||
let file_fetcher_01 = FileFetcher::new(
|
||||
HttpCache::new(&location),
|
||||
CacheSetting::Use,
|
||||
|
@ -1125,7 +1121,7 @@ mod tests {
|
|||
BlobStore::default(),
|
||||
None,
|
||||
)
|
||||
.expect("could not create file fetcher");
|
||||
.unwrap();
|
||||
let specifier =
|
||||
resolve_url("http://localhost:4545/subdir/mismatch_ext.ts").unwrap();
|
||||
let cache_filename = file_fetcher_01
|
||||
|
@ -1140,8 +1136,7 @@ mod tests {
|
|||
|
||||
let metadata_filename =
|
||||
crate::http_cache::Metadata::filename(&cache_filename);
|
||||
let metadata_file =
|
||||
fs::File::open(metadata_filename).expect("could not open metadata file");
|
||||
let metadata_file = fs::File::open(metadata_filename).unwrap();
|
||||
let metadata_file_metadata = metadata_file.metadata().unwrap();
|
||||
let metadata_file_modified_01 = metadata_file_metadata.modified().unwrap();
|
||||
|
||||
|
@ -1153,7 +1148,7 @@ mod tests {
|
|||
BlobStore::default(),
|
||||
None,
|
||||
)
|
||||
.expect("could not create file fetcher");
|
||||
.unwrap();
|
||||
let result = file_fetcher_02
|
||||
.fetch(&specifier, &mut Permissions::allow_all())
|
||||
.await;
|
||||
|
@ -1161,15 +1156,11 @@ mod tests {
|
|||
|
||||
let metadata_filename =
|
||||
crate::http_cache::Metadata::filename(&cache_filename);
|
||||
let metadata_file =
|
||||
fs::File::open(metadata_filename).expect("could not open metadata file");
|
||||
let metadata_file = fs::File::open(metadata_filename).unwrap();
|
||||
let metadata_file_metadata = metadata_file.metadata().unwrap();
|
||||
let metadata_file_modified_02 = metadata_file_metadata.modified().unwrap();
|
||||
|
||||
assert_eq!(metadata_file_modified_01, metadata_file_modified_02);
|
||||
// because we converted to a "fixed" directory, we need to cleanup after
|
||||
// ourselves.
|
||||
let _ = fs::remove_dir_all(temp_dir);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
|
@ -1203,10 +1194,7 @@ mod tests {
|
|||
"",
|
||||
"redirected files should have empty cached contents"
|
||||
);
|
||||
let (_, headers) = file_fetcher
|
||||
.http_cache
|
||||
.get(&specifier)
|
||||
.expect("could not get file");
|
||||
let (_, headers) = file_fetcher.http_cache.get(&specifier).unwrap();
|
||||
assert_eq!(
|
||||
headers.get("location").unwrap(),
|
||||
"http://localhost:4545/subdir/redirects/redirect1.js"
|
||||
|
@ -1216,10 +1204,8 @@ mod tests {
|
|||
fs::read_to_string(redirected_cached_filename).unwrap(),
|
||||
"export const redirect = 1;\n"
|
||||
);
|
||||
let (_, headers) = file_fetcher
|
||||
.http_cache
|
||||
.get(&redirected_specifier)
|
||||
.expect("could not get file");
|
||||
let (_, headers) =
|
||||
file_fetcher.http_cache.get(&redirected_specifier).unwrap();
|
||||
assert!(headers.get("location").is_none());
|
||||
}
|
||||
|
||||
|
@ -1261,10 +1247,7 @@ mod tests {
|
|||
"",
|
||||
"redirected files should have empty cached contents"
|
||||
);
|
||||
let (_, headers) = file_fetcher
|
||||
.http_cache
|
||||
.get(&specifier)
|
||||
.expect("could not get file");
|
||||
let (_, headers) = file_fetcher.http_cache.get(&specifier).unwrap();
|
||||
assert_eq!(
|
||||
headers.get("location").unwrap(),
|
||||
"http://localhost:4546/subdir/redirects/redirect1.js"
|
||||
|
@ -1278,7 +1261,7 @@ mod tests {
|
|||
let (_, headers) = file_fetcher
|
||||
.http_cache
|
||||
.get(&redirected_01_specifier)
|
||||
.expect("could not get file");
|
||||
.unwrap();
|
||||
assert_eq!(
|
||||
headers.get("location").unwrap(),
|
||||
"http://localhost:4545/subdir/redirects/redirect1.js"
|
||||
|
@ -1291,17 +1274,15 @@ mod tests {
|
|||
let (_, headers) = file_fetcher
|
||||
.http_cache
|
||||
.get(&redirected_02_specifier)
|
||||
.expect("could not get file");
|
||||
.unwrap();
|
||||
assert!(headers.get("location").is_none());
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_fetch_uses_cache_with_redirects() {
|
||||
let _http_server_guard = test_util::http_server();
|
||||
let temp_dir = TempDir::new()
|
||||
.expect("could not create temp dir")
|
||||
.into_path();
|
||||
let location = temp_dir.join("deps");
|
||||
let temp_dir = TempDir::new().unwrap();
|
||||
let location = temp_dir.path().join("deps");
|
||||
let file_fetcher_01 = FileFetcher::new(
|
||||
HttpCache::new(&location),
|
||||
CacheSetting::Use,
|
||||
|
@ -1310,7 +1291,7 @@ mod tests {
|
|||
BlobStore::default(),
|
||||
None,
|
||||
)
|
||||
.expect("could not create file fetcher");
|
||||
.unwrap();
|
||||
let specifier =
|
||||
resolve_url("http://localhost:4548/subdir/mismatch_ext.ts").unwrap();
|
||||
let redirected_specifier =
|
||||
|
@ -1327,8 +1308,7 @@ mod tests {
|
|||
|
||||
let metadata_filename =
|
||||
crate::http_cache::Metadata::filename(&redirected_cache_filename);
|
||||
let metadata_file =
|
||||
fs::File::open(metadata_filename).expect("could not open metadata file");
|
||||
let metadata_file = fs::File::open(metadata_filename).unwrap();
|
||||
let metadata_file_metadata = metadata_file.metadata().unwrap();
|
||||
let metadata_file_modified_01 = metadata_file_metadata.modified().unwrap();
|
||||
|
||||
|
@ -1340,7 +1320,7 @@ mod tests {
|
|||
BlobStore::default(),
|
||||
None,
|
||||
)
|
||||
.expect("could not create file fetcher");
|
||||
.unwrap();
|
||||
let result = file_fetcher_02
|
||||
.fetch(&redirected_specifier, &mut Permissions::allow_all())
|
||||
.await;
|
||||
|
@ -1348,15 +1328,11 @@ mod tests {
|
|||
|
||||
let metadata_filename =
|
||||
crate::http_cache::Metadata::filename(&redirected_cache_filename);
|
||||
let metadata_file =
|
||||
fs::File::open(metadata_filename).expect("could not open metadata file");
|
||||
let metadata_file = fs::File::open(metadata_filename).unwrap();
|
||||
let metadata_file_metadata = metadata_file.metadata().unwrap();
|
||||
let metadata_file_modified_02 = metadata_file_metadata.modified().unwrap();
|
||||
|
||||
assert_eq!(metadata_file_modified_01, metadata_file_modified_02);
|
||||
// because we converted to a "fixed" directory, we need to cleanup after
|
||||
// ourselves.
|
||||
let _ = fs::remove_dir_all(temp_dir);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
|
@ -1416,10 +1392,7 @@ mod tests {
|
|||
"",
|
||||
"redirected files should have empty cached contents"
|
||||
);
|
||||
let (_, headers) = file_fetcher
|
||||
.http_cache
|
||||
.get(&specifier)
|
||||
.expect("could not get file");
|
||||
let (_, headers) = file_fetcher.http_cache.get(&specifier).unwrap();
|
||||
assert_eq!(
|
||||
headers.get("location").unwrap(),
|
||||
"/subdir/redirects/redirect1.js"
|
||||
|
@ -1429,17 +1402,15 @@ mod tests {
|
|||
fs::read_to_string(redirected_cached_filename).unwrap(),
|
||||
"export const redirect = 1;\n"
|
||||
);
|
||||
let (_, headers) = file_fetcher
|
||||
.http_cache
|
||||
.get(&redirected_specifier)
|
||||
.expect("could not get file");
|
||||
let (_, headers) =
|
||||
file_fetcher.http_cache.get(&redirected_specifier).unwrap();
|
||||
assert!(headers.get("location").is_none());
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_fetch_no_remote() {
|
||||
let _http_server_guard = test_util::http_server();
|
||||
let temp_dir = TempDir::new().expect("could not create temp dir");
|
||||
let temp_dir = TempDir::new().unwrap();
|
||||
let location = temp_dir.path().join("deps");
|
||||
let file_fetcher = FileFetcher::new(
|
||||
HttpCache::new(&location),
|
||||
|
@ -1449,7 +1420,7 @@ mod tests {
|
|||
BlobStore::default(),
|
||||
None,
|
||||
)
|
||||
.expect("could not create file fetcher");
|
||||
.unwrap();
|
||||
let specifier = resolve_url("http://localhost:4545/002_hello.ts").unwrap();
|
||||
|
||||
let result = file_fetcher
|
||||
|
@ -1464,10 +1435,8 @@ mod tests {
|
|||
#[tokio::test]
|
||||
async fn test_fetch_cache_only() {
|
||||
let _http_server_guard = test_util::http_server();
|
||||
let temp_dir = TempDir::new()
|
||||
.expect("could not create temp dir")
|
||||
.into_path();
|
||||
let location = temp_dir.join("deps");
|
||||
let temp_dir = TempDir::new().unwrap();
|
||||
let location = temp_dir.path().join("deps");
|
||||
let file_fetcher_01 = FileFetcher::new(
|
||||
HttpCache::new(&location),
|
||||
CacheSetting::Only,
|
||||
|
@ -1476,7 +1445,7 @@ mod tests {
|
|||
BlobStore::default(),
|
||||
None,
|
||||
)
|
||||
.expect("could not create file fetcher");
|
||||
.unwrap();
|
||||
let file_fetcher_02 = FileFetcher::new(
|
||||
HttpCache::new(&location),
|
||||
CacheSetting::Use,
|
||||
|
@ -1485,7 +1454,7 @@ mod tests {
|
|||
BlobStore::default(),
|
||||
None,
|
||||
)
|
||||
.expect("could not create file fetcher");
|
||||
.unwrap();
|
||||
let specifier = resolve_url("http://localhost:4545/002_hello.ts").unwrap();
|
||||
|
||||
let result = file_fetcher_01
|
||||
|
@ -1505,10 +1474,6 @@ mod tests {
|
|||
.fetch(&specifier, &mut Permissions::allow_all())
|
||||
.await;
|
||||
assert!(result.is_ok());
|
||||
|
||||
// because we converted to a "fixed" directory, we need to cleanup after
|
||||
// ourselves.
|
||||
let _ = fs::remove_dir_all(temp_dir);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
|
@ -1517,8 +1482,7 @@ mod tests {
|
|||
let fixture_path = temp_dir.path().join("mod.ts");
|
||||
let specifier =
|
||||
resolve_url_or_path(&fixture_path.to_string_lossy()).unwrap();
|
||||
fs::write(fixture_path.clone(), r#"console.log("hello deno");"#)
|
||||
.expect("could not write file");
|
||||
fs::write(fixture_path.clone(), r#"console.log("hello deno");"#).unwrap();
|
||||
let result = file_fetcher
|
||||
.fetch(&specifier, &mut Permissions::allow_all())
|
||||
.await;
|
||||
|
@ -1526,8 +1490,7 @@ mod tests {
|
|||
let file = result.unwrap();
|
||||
assert_eq!(file.source.as_str(), r#"console.log("hello deno");"#);
|
||||
|
||||
fs::write(fixture_path, r#"console.log("goodbye deno");"#)
|
||||
.expect("could not write file");
|
||||
fs::write(fixture_path, r#"console.log("goodbye deno");"#).unwrap();
|
||||
let result = file_fetcher
|
||||
.fetch(&specifier, &mut Permissions::allow_all())
|
||||
.await;
|
||||
|
|
Loading…
Reference in a new issue