diff options
author | Kitson Kelly <me@kitsonkelly.com> | 2020-02-20 14:35:21 +1100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-19 22:35:21 -0500 |
commit | 0e579ee9dce917c1b783cea5506315f78b1e0a00 (patch) | |
tree | 28bffb2fc7a0f73adc59e98fc9633dfb491c448c | |
parent | 742a16b5069b2a6dee200d908df54fab77408581 (diff) |
fix: emit when bundle contains single module (#4042)
Fixes #4031
When a bundle contains a single module, we were incorrectly determining
the module name, resulting in a non-functional bundle. This PR corrects
that determination.
-rw-r--r-- | cli/js/util.ts | 2 | ||||
-rw-r--r-- | cli/tests/integration_tests.rs | 36 | ||||
-rw-r--r-- | cli/tests/subdir/single_module.ts | 2 |
3 files changed, 39 insertions, 1 deletions
diff --git a/cli/js/util.ts b/cli/js/util.ts index e779fb5d7..faf4c99c6 100644 --- a/cli/js/util.ts +++ b/cli/js/util.ts @@ -306,7 +306,7 @@ export function normalizeString( export function commonPath(paths: string[], sep = "/"): string { const [first = "", ...remaining] = paths; if (first === "" || remaining.length === 0) { - return ""; + return first.substring(0, first.lastIndexOf(sep) + 1); } const parts = first.split(sep); diff --git a/cli/tests/integration_tests.rs b/cli/tests/integration_tests.rs index bfe5794f5..251c6da3c 100644 --- a/cli/tests/integration_tests.rs +++ b/cli/tests/integration_tests.rs @@ -290,6 +290,42 @@ fn bundle_circular() { assert_eq!(output.stderr, b""); } +#[test] +fn bundle_single_module() { + use tempfile::TempDir; + + // First we have to generate a bundle of some module that has exports. + let single_module = + util::root_path().join("cli/tests/subdir/single_module.ts"); + assert!(single_module.is_file()); + let t = TempDir::new().expect("tempdir fail"); + let bundle = t.path().join("single_module.bundle.js"); + let mut deno = util::deno_cmd() + .current_dir(util::root_path()) + .arg("bundle") + .arg(single_module) + .arg(&bundle) + .spawn() + .expect("failed to spawn script"); + let status = deno.wait().expect("failed to wait for the child process"); + assert!(status.success()); + assert!(bundle.is_file()); + + let output = util::deno_cmd() + .current_dir(util::root_path()) + .arg("run") + .arg("--reload") + .arg(&bundle) + .output() + .expect("failed to spawn script"); + // check the output of the the bundle program. + assert!(std::str::from_utf8(&output.stdout) + .unwrap() + .trim() + .ends_with("Hello world!")); + assert_eq!(output.stderr, b""); +} + // TODO(#2933): Rewrite this test in rust. #[test] fn repl_test() { diff --git a/cli/tests/subdir/single_module.ts b/cli/tests/subdir/single_module.ts new file mode 100644 index 000000000..1cd2cd781 --- /dev/null +++ b/cli/tests/subdir/single_module.ts @@ -0,0 +1,2 @@ +console.log("Hello world!"); +export {}; |