1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-23 15:49:44 -05:00

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.
This commit is contained in:
Kitson Kelly 2020-02-20 14:35:21 +11:00 committed by GitHub
parent 742a16b506
commit 0e579ee9dc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 39 additions and 1 deletions

View file

@ -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);

View file

@ -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() {

View file

@ -0,0 +1,2 @@
console.log("Hello world!");
export {};