diff options
author | Ryan Dahl <ry@tinyclouds.org> | 2018-12-11 11:23:59 -0500 |
---|---|---|
committer | Ryan Dahl <ry@tinyclouds.org> | 2018-12-11 15:06:56 -0500 |
commit | 52079b26dbe44fdca6fde5a572b77282dffca722 (patch) | |
tree | 00448e4574cf47ec91f585973653e7bd7e4ab63b /src | |
parent | f2307346237831e049f06d5ff19af0590cfd377f (diff) |
Minor rename for CodeFetch parameters
This bring it inline with terminology used in V8
See ResolveCallback in v8.h
Diffstat (limited to 'src')
-rw-r--r-- | src/deno_dir.rs | 168 | ||||
-rw-r--r-- | src/msg.fbs | 4 | ||||
-rw-r--r-- | src/ops.rs | 6 |
3 files changed, 82 insertions, 96 deletions
diff --git a/src/deno_dir.rs b/src/deno_dir.rs index a3b134f84..5bcbf312e 100644 --- a/src/deno_dir.rs +++ b/src/deno_dir.rs @@ -20,6 +20,16 @@ use tempfile::TempDir; use url; use url::Url; +#[derive(Debug)] +pub struct CodeFetchOutput { + pub module_name: String, + pub filename: String, + pub media_type: msg::MediaType, + pub source_code: String, + pub maybe_output_code: Option<String>, + pub maybe_source_map: Option<String>, +} + pub struct DenoDir { // Example: /Users/rld/.deno/ pub root: PathBuf, @@ -209,16 +219,12 @@ impl DenoDir { pub fn code_fetch( self: &Self, - module_specifier: &str, - containing_file: &str, + specifier: &str, + referrer: &str, ) -> Result<CodeFetchOutput, errors::DenoError> { - debug!( - "code_fetch. module_specifier {} containing_file {}", - module_specifier, containing_file - ); + debug!("code_fetch. specifier {} referrer {}", specifier, referrer); - let (module_name, filename) = - self.resolve_module(module_specifier, containing_file)?; + let (module_name, filename) = self.resolve_module(specifier, referrer)?; let result = self.get_source_code(module_name.as_str(), filename.as_str()); let mut out = match result { @@ -230,7 +236,7 @@ impl DenoDir { ErrorKind::NotFound, format!( "Cannot resolve module \"{}\" from \"{}\"", - module_specifier, containing_file + specifier, referrer ), )); } else { @@ -293,36 +299,36 @@ impl DenoDir { // Returns (module name, local filename) fn resolve_module( self: &Self, - module_specifier: &str, - containing_file: &str, + specifier: &str, + referrer: &str, ) -> Result<(String, String), url::ParseError> { let module_name; let filename; - let module_specifier = self.src_file_to_url(module_specifier); - let containing_file = self.src_file_to_url(containing_file); + let specifier = self.src_file_to_url(specifier); + let referrer = self.src_file_to_url(referrer); debug!( - "resolve_module module_specifier {} containing_file {}", - module_specifier, containing_file + "resolve_module specifier {} referrer {}", + specifier, referrer ); - let j: Url = if containing_file == "." - || is_remote(&module_specifier) - || Path::new(&module_specifier).is_absolute() + let j: Url = if referrer == "." + || is_remote(&specifier) + || Path::new(&specifier).is_absolute() { - parse_local_or_remote(&module_specifier)? - } else if containing_file.ends_with('/') { - let r = Url::from_directory_path(&containing_file); + parse_local_or_remote(&specifier)? + } else if referrer.ends_with('/') { + let r = Url::from_directory_path(&referrer); // TODO(ry) Properly handle error. if r.is_err() { - error!("Url::from_directory_path error {}", containing_file); + error!("Url::from_directory_path error {}", referrer); } let base = r.unwrap(); - base.join(module_specifier.as_ref())? + base.join(specifier.as_ref())? } else { - let base = parse_local_or_remote(&containing_file)?; - base.join(module_specifier.as_ref())? + let base = parse_local_or_remote(&referrer)?; + base.join(specifier.as_ref())? }; match j.scheme() { @@ -398,16 +404,6 @@ fn test_get_cache_filename() { ); } -#[derive(Debug)] -pub struct CodeFetchOutput { - pub module_name: String, - pub filename: String, - pub media_type: msg::MediaType, - pub source_code: String, - pub maybe_output_code: Option<String>, - pub maybe_source_map: Option<String>, -} - #[cfg(test)] pub fn test_setup() -> (TempDir, DenoDir) { let temp_dir = TempDir::new().expect("tempdir fail"); @@ -560,15 +556,15 @@ fn test_code_fetch() { let cwd_string = String::from(cwd.to_str().unwrap()) + "/"; // Test failure case. - let module_specifier = "hello.ts"; - let containing_file = add_root!("/baddir/badfile.ts"); - let r = deno_dir.code_fetch(module_specifier, containing_file); + let specifier = "hello.ts"; + let referrer = add_root!("/baddir/badfile.ts"); + let r = deno_dir.code_fetch(specifier, referrer); assert!(r.is_err()); // Assuming cwd is the deno repo root. - let module_specifier = "./js/main.ts"; - let containing_file = cwd_string.as_str(); - let r = deno_dir.code_fetch(module_specifier, containing_file); + let specifier = "./js/main.ts"; + let referrer = cwd_string.as_str(); + let r = deno_dir.code_fetch(specifier, referrer); assert!(r.is_ok()); //let code_fetch_output = r.unwrap(); //println!("code_fetch_output {:?}", code_fetch_output); @@ -582,16 +578,16 @@ fn test_code_fetch_no_ext() { let cwd_string = String::from(cwd.to_str().unwrap()) + "/"; // Assuming cwd is the deno repo root. - let module_specifier = "./js/main"; - let containing_file = cwd_string.as_str(); - let r = deno_dir.code_fetch(module_specifier, containing_file); + let specifier = "./js/main"; + let referrer = cwd_string.as_str(); + let r = deno_dir.code_fetch(specifier, referrer); assert!(r.is_ok()); // Test .ts extension // Assuming cwd is the deno repo root. - let module_specifier = "./js/main"; - let containing_file = cwd_string.as_str(); - let r = deno_dir.code_fetch(module_specifier, containing_file); + let specifier = "./js/main"; + let referrer = cwd_string.as_str(); + let r = deno_dir.code_fetch(specifier, referrer); assert!(r.is_ok()); let code_fetch_output = r.unwrap(); // could only test .ends_with to avoid include local abs path @@ -601,9 +597,9 @@ fn test_code_fetch_no_ext() { // Test .js extension // Assuming cwd is the deno repo root. - let module_specifier = "./js/mock_builtin"; - let containing_file = cwd_string.as_str(); - let r = deno_dir.code_fetch(module_specifier, containing_file); + let specifier = "./js/mock_builtin"; + let referrer = cwd_string.as_str(); + let r = deno_dir.code_fetch(specifier, referrer); assert!(r.is_ok()); let code_fetch_output = r.unwrap(); // could only test .ends_with to avoid include local abs path @@ -698,11 +694,10 @@ fn test_resolve_module_1() { ), ]; for &test in test_cases.iter() { - let module_specifier = String::from(test.0); - let containing_file = String::from(test.1); - let (module_name, filename) = deno_dir - .resolve_module(&module_specifier, &containing_file) - .unwrap(); + let specifier = String::from(test.0); + let referrer = String::from(test.1); + let (module_name, filename) = + deno_dir.resolve_module(&specifier, &referrer).unwrap(); assert_eq!(module_name, test.2); assert_eq!(filename, test.3); } @@ -712,8 +707,8 @@ fn test_resolve_module_1() { fn test_resolve_module_2() { let (_temp_dir, deno_dir) = test_setup(); - let module_specifier = "http://localhost:4545/testdata/subdir/print_hello.ts"; - let containing_file = add_root!("/deno/testdata/006_url_imports.ts"); + let specifier = "http://localhost:4545/testdata/subdir/print_hello.ts"; + let referrer = add_root!("/deno/testdata/006_url_imports.ts"); let expected_module_name = "http://localhost:4545/testdata/subdir/print_hello.ts"; @@ -724,9 +719,8 @@ fn test_resolve_module_2() { .as_ref(), ); - let (module_name, filename) = deno_dir - .resolve_module(module_specifier, containing_file) - .unwrap(); + let (module_name, filename) = + deno_dir.resolve_module(specifier, referrer).unwrap(); assert_eq!(module_name, expected_module_name); assert_eq!(filename, expected_filename); } @@ -735,10 +729,9 @@ fn test_resolve_module_2() { fn test_resolve_module_3() { let (_temp_dir, deno_dir) = test_setup(); - let module_specifier_ = - deno_dir.deps_http.join("unpkg.com/liltest@0.0.5/index.ts"); - let module_specifier = module_specifier_.to_str().unwrap(); - let containing_file = "."; + let specifier_ = deno_dir.deps_http.join("unpkg.com/liltest@0.0.5/index.ts"); + let specifier = specifier_.to_str().unwrap(); + let referrer = "."; let expected_module_name = "http://unpkg.com/liltest@0.0.5/index.ts"; let expected_filename = deno_fs::normalize_path( @@ -748,9 +741,8 @@ fn test_resolve_module_3() { .as_ref(), ); - let (module_name, filename) = deno_dir - .resolve_module(module_specifier, containing_file) - .unwrap(); + let (module_name, filename) = + deno_dir.resolve_module(specifier, referrer).unwrap(); assert_eq!(module_name, expected_module_name); assert_eq!(filename, expected_filename); } @@ -759,10 +751,9 @@ fn test_resolve_module_3() { fn test_resolve_module_4() { let (_temp_dir, deno_dir) = test_setup(); - let module_specifier = "./util"; - let containing_file_ = - deno_dir.deps_http.join("unpkg.com/liltest@0.0.5/index.ts"); - let containing_file = containing_file_.to_str().unwrap(); + let specifier = "./util"; + let referrer_ = deno_dir.deps_http.join("unpkg.com/liltest@0.0.5/index.ts"); + let referrer = referrer_.to_str().unwrap(); // http containing files -> load relative import with http let expected_module_name = "http://unpkg.com/liltest@0.0.5/util"; @@ -773,9 +764,8 @@ fn test_resolve_module_4() { .as_ref(), ); - let (module_name, filename) = deno_dir - .resolve_module(module_specifier, containing_file) - .unwrap(); + let (module_name, filename) = + deno_dir.resolve_module(specifier, referrer).unwrap(); assert_eq!(module_name, expected_module_name); assert_eq!(filename, expected_filename); } @@ -784,10 +774,9 @@ fn test_resolve_module_4() { fn test_resolve_module_5() { let (_temp_dir, deno_dir) = test_setup(); - let module_specifier = "./util"; - let containing_file_ = - deno_dir.deps_https.join("unpkg.com/liltest@0.0.5/index.ts"); - let containing_file = containing_file_.to_str().unwrap(); + let specifier = "./util"; + let referrer_ = deno_dir.deps_https.join("unpkg.com/liltest@0.0.5/index.ts"); + let referrer = referrer_.to_str().unwrap(); // https containing files -> load relative import with https let expected_module_name = "https://unpkg.com/liltest@0.0.5/util"; @@ -798,9 +787,8 @@ fn test_resolve_module_5() { .as_ref(), ); - let (module_name, filename) = deno_dir - .resolve_module(module_specifier, containing_file) - .unwrap(); + let (module_name, filename) = + deno_dir.resolve_module(specifier, referrer).unwrap(); assert_eq!(module_name, expected_module_name); assert_eq!(filename, expected_filename); } @@ -809,8 +797,8 @@ fn test_resolve_module_5() { fn test_resolve_module_6() { let (_temp_dir, deno_dir) = test_setup(); - let module_specifier = "http://localhost:4545/tests/subdir/mod2.ts"; - let containing_file = add_root!("/deno/tests/006_url_imports.ts"); + let specifier = "http://localhost:4545/tests/subdir/mod2.ts"; + let referrer = add_root!("/deno/tests/006_url_imports.ts"); let expected_module_name = "http://localhost:4545/tests/subdir/mod2.ts"; let expected_filename = deno_fs::normalize_path( deno_dir @@ -819,9 +807,8 @@ fn test_resolve_module_6() { .as_ref(), ); - let (module_name, filename) = deno_dir - .resolve_module(module_specifier, containing_file) - .unwrap(); + let (module_name, filename) = + deno_dir.resolve_module(specifier, referrer).unwrap(); assert_eq!(module_name, expected_module_name); assert_eq!(filename, expected_filename); } @@ -830,14 +817,13 @@ fn test_resolve_module_6() { fn test_resolve_module_7() { let (_temp_dir, deno_dir) = test_setup(); - let module_specifier = "http_test.ts"; - let containing_file = add_root!("/Users/rld/src/deno_net/"); + let specifier = "http_test.ts"; + let referrer = add_root!("/Users/rld/src/deno_net/"); let expected_module_name = add_root!("/Users/rld/src/deno_net/http_test.ts"); let expected_filename = add_root!("/Users/rld/src/deno_net/http_test.ts"); - let (module_name, filename) = deno_dir - .resolve_module(module_specifier, containing_file) - .unwrap(); + let (module_name, filename) = + deno_dir.resolve_module(specifier, referrer).unwrap(); assert_eq!(module_name, expected_module_name); assert_eq!(filename, expected_filename); } diff --git a/src/msg.fbs b/src/msg.fbs index ecfb9e50c..e1c90e3ad 100644 --- a/src/msg.fbs +++ b/src/msg.fbs @@ -146,8 +146,8 @@ table StartRes { } table CodeFetch { - module_specifier: string; - containing_file: string; + specifier: string; + referrer: string; } table CodeFetchRes { diff --git a/src/ops.rs b/src/ops.rs index 8e8388714..71a4f72a1 100644 --- a/src/ops.rs +++ b/src/ops.rs @@ -256,14 +256,14 @@ fn op_code_fetch( assert_eq!(data.len(), 0); let inner = base.inner_as_code_fetch().unwrap(); let cmd_id = base.cmd_id(); - let module_specifier = inner.module_specifier().unwrap(); - let containing_file = inner.containing_file().unwrap(); + let specifier = inner.specifier().unwrap(); + let referrer = inner.referrer().unwrap(); assert_eq!(state.dir.root.join("gen"), state.dir.gen, "Sanity check"); Box::new(futures::future::result(|| -> OpResult { let builder = &mut FlatBufferBuilder::new(); - let out = state.dir.code_fetch(module_specifier, containing_file)?; + let out = state.dir.code_fetch(specifier, referrer)?; let mut msg_args = msg::CodeFetchResArgs { module_name: Some(builder.create_string(&out.module_name)), filename: Some(builder.create_string(&out.filename)), |