Skip to content

Commit

Permalink
fix: emit when bundle contains single module (denoland#4042)
Browse files Browse the repository at this point in the history
Fixes denoland#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.
  • Loading branch information
kitsonk committed Feb 20, 2020
1 parent 742a16b commit 0e579ee
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 1 deletion.
2 changes: 1 addition & 1 deletion cli/js/util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down
36 changes: 36 additions & 0 deletions cli/tests/integration_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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() {
Expand Down
2 changes: 2 additions & 0 deletions cli/tests/subdir/single_module.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
console.log("Hello world!");
export {};

0 comments on commit 0e579ee

Please sign in to comment.