summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2020-02-07 03:31:19 -0500
committerGitHub <noreply@github.com>2020-02-07 09:31:19 +0100
commit99186dbaa25c5715103f6a0e0df9fae9488470b3 (patch)
tree4f03c46baa7d57da835b98bbf3ef6435cb485ea9
parent98fc7db47d2ae1d817ac595d7f21138678515474 (diff)
Remove conditionals from installer (#3909)
-rw-r--r--cli/installer.rs203
-rw-r--r--cli/tests/integration_tests.rs15
2 files changed, 30 insertions, 188 deletions
diff --git a/cli/installer.rs b/cli/installer.rs
index d5e90a252..0cc25ff33 100644
--- a/cli/installer.rs
+++ b/cli/installer.rs
@@ -48,30 +48,17 @@ fn validate_exec_name(exec_name: &str) -> Result<(), Error> {
}
#[cfg(windows)]
+/// On Windows if user is using Powershell .cmd extension is need to run the
+/// installed module.
+/// Generate batch script to satisfy that.
fn generate_executable_file(
file_path: PathBuf,
- commands: Vec<String>,
+ args: Vec<String>,
) -> Result<(), Error> {
- // On Windows if user is using Powershell .cmd extension is need to run the
- // installed module.
- // Generate batch script to satisfy that.
- let template_header = "This executable is generated by Deno. Please don't modify it unless you know what it means.";
- let commands: Vec<String> =
- commands.iter().map(|c| format!("\"{}\"", c)).collect();
- // TODO: remove conditionals in generated scripts
+ let args: Vec<String> = args.iter().map(|c| format!("\"{}\"", c)).collect();
let template = format!(
- r#"% {} %
-@IF EXIST "%~dp0\deno.exe" (
- "%~dp0\deno.exe" {} %*
-) ELSE (
- @SETLOCAL
- @SET PATHEXT=%PATHEXT:;.TS;=;%
- {} %*
-)
-"#,
- template_header,
- commands[1..].join(" "),
- commands.join(" ")
+ "% generated by deno install %\ndeno.exe {} %*\n",
+ args.join(" ")
);
let file_path = file_path.with_extension(".cmd");
let mut file = File::create(&file_path)?;
@@ -82,37 +69,18 @@ fn generate_executable_file(
#[cfg(not(windows))]
fn generate_executable_file(
file_path: PathBuf,
- commands: Vec<String>,
+ args: Vec<String>,
) -> Result<(), Error> {
// On Windows if user is using Powershell .cmd extension is need to run the
// installed module.
// Generate batch script to satisfy that.
- let template_header = "This executable is generated by Deno. Please don't modify it unless you know what it means.";
- let commands: Vec<String> =
- commands.iter().map(|c| format!("\"{}\"", c)).collect();
-
- // TODO: remove conditionals in generated scripts
+ let args: Vec<String> = args.iter().map(|c| format!("\"{}\"", c)).collect();
let template = format!(
r#"#!/bin/sh
-# {}
-basedir=$(dirname "$(echo "$0" | sed -e 's,\\\\,/,g')")
-
-case \`uname\` in
- *CYGWIN*) basedir=\`cygpath -w "$basedir"\`;;
-esac
-
-if [ -x "$basedir/deno" ]; then
- "$basedir/deno" {} "$@"
- ret=$?
-else
- {} "$@"
- ret=$?
-fi
-exit $ret
+# generated by deno install
+deno {} "$@"
"#,
- template_header,
- commands[1..].join(" "),
- commands.join(" ")
+ args.join(" "),
);
let mut file = File::create(&file_path)?;
file.write_all(template.as_bytes())?;
@@ -197,7 +165,7 @@ pub fn install(
};
};
- let mut executable_args = vec!["deno".to_string(), "run".to_string()];
+ let mut executable_args = vec!["run".to_string()];
executable_args.extend_from_slice(&flags.to_permission_args());
executable_args.push(module_url.to_string());
executable_args.extend_from_slice(&args);
@@ -270,39 +238,11 @@ mod tests {
assert!(file_path.exists());
let content = fs::read_to_string(file_path).unwrap();
+ // It's annoying when shell scripts don't have NL at the end.
+ assert_eq!(content.chars().last().unwrap(), '\n');
- let expected_content = if cfg!(windows) {
- r#"% This executable is generated by Deno. Please don't modify it unless you know what it means. %
-@IF EXIST "%~dp0\deno.exe" (
- "%~dp0\deno.exe" "run" "http://localhost:4545/cli/tests/echo_server.ts" %*
-) ELSE (
- @SETLOCAL
- @SET PATHEXT=%PATHEXT:;.TS;=;%
- "deno" "run" "http://localhost:4545/cli/tests/echo_server.ts" %*
-)
-"#
- } else {
- r#"#!/bin/sh
-# This executable is generated by Deno. Please don't modify it unless you know what it means.
-basedir=$(dirname "$(echo "$0" | sed -e 's,\\\\,/,g')")
-
-case \`uname\` in
- *CYGWIN*) basedir=\`cygpath -w "$basedir"\`;;
-esac
-
-if [ -x "$basedir/deno" ]; then
- "$basedir/deno" "run" "http://localhost:4545/cli/tests/echo_server.ts" "$@"
- ret=$?
-else
- "deno" "run" "http://localhost:4545/cli/tests/echo_server.ts" "$@"
- ret=$?
-fi
-exit $ret
-"#
- };
-
- assert_eq!(content, expected_content.to_string());
-
+ assert!(content
+ .contains(r#""run" "http://localhost:4545/cli/tests/echo_server.ts""#));
if let Some(home) = original_home {
env::set_var("HOME", home);
}
@@ -314,7 +254,6 @@ exit $ret
#[test]
fn install_custom_dir() {
let temp_dir = TempDir::new().expect("tempdir fail");
-
install(
DenoFlags::default(),
Some(temp_dir.path().to_string_lossy().to_string()),
@@ -331,38 +270,8 @@ exit $ret
assert!(file_path.exists());
let content = fs::read_to_string(file_path).unwrap();
-
- let expected_content = if cfg!(windows) {
- r#"% This executable is generated by Deno. Please don't modify it unless you know what it means. %
-@IF EXIST "%~dp0\deno.exe" (
- "%~dp0\deno.exe" "run" "http://localhost:4545/cli/tests/echo_server.ts" %*
-) ELSE (
- @SETLOCAL
- @SET PATHEXT=%PATHEXT:;.TS;=;%
- "deno" "run" "http://localhost:4545/cli/tests/echo_server.ts" %*
-)
-"#
- } else {
- r#"#!/bin/sh
-# This executable is generated by Deno. Please don't modify it unless you know what it means.
-basedir=$(dirname "$(echo "$0" | sed -e 's,\\\\,/,g')")
-
-case \`uname\` in
- *CYGWIN*) basedir=\`cygpath -w "$basedir"\`;;
-esac
-
-if [ -x "$basedir/deno" ]; then
- "$basedir/deno" "run" "http://localhost:4545/cli/tests/echo_server.ts" "$@"
- ret=$?
-else
- "deno" "run" "http://localhost:4545/cli/tests/echo_server.ts" "$@"
- ret=$?
-fi
-exit $ret
-"#
- };
-
- assert_eq!(content, expected_content.to_string());
+ assert!(content
+ .contains(r#""run" "http://localhost:4545/cli/tests/echo_server.ts""#));
}
#[test]
@@ -389,38 +298,7 @@ exit $ret
assert!(file_path.exists());
let content = fs::read_to_string(file_path).unwrap();
-
- let expected_content = if cfg!(windows) {
- r#"% This executable is generated by Deno. Please don't modify it unless you know what it means. %
-@IF EXIST "%~dp0\deno.exe" (
- "%~dp0\deno.exe" "run" "--allow-read" "--allow-net" "http://localhost:4545/cli/tests/echo_server.ts" "--foobar" %*
-) ELSE (
- @SETLOCAL
- @SET PATHEXT=%PATHEXT:;.TS;=;%
- "deno" "run" "--allow-read" "--allow-net" "http://localhost:4545/cli/tests/echo_server.ts" "--foobar" %*
-)
-"#
- } else {
- r#"#!/bin/sh
-# This executable is generated by Deno. Please don't modify it unless you know what it means.
-basedir=$(dirname "$(echo "$0" | sed -e 's,\\\\,/,g')")
-
-case \`uname\` in
- *CYGWIN*) basedir=\`cygpath -w "$basedir"\`;;
-esac
-
-if [ -x "$basedir/deno" ]; then
- "$basedir/deno" "run" "--allow-read" "--allow-net" "http://localhost:4545/cli/tests/echo_server.ts" "--foobar" "$@"
- ret=$?
-else
- "deno" "run" "--allow-read" "--allow-net" "http://localhost:4545/cli/tests/echo_server.ts" "--foobar" "$@"
- ret=$?
-fi
-exit $ret
-"#
- };
-
- assert_eq!(content, expected_content.to_string());
+ assert!(content.contains(r#""run" "--allow-read" "--allow-net" "http://localhost:4545/cli/tests/echo_server.ts" "--foobar""#));
}
#[test]
@@ -446,45 +324,6 @@ exit $ret
assert!(file_path.exists());
let content = fs::read_to_string(file_path).unwrap();
-
- let expected_content = if cfg!(windows) {
- format!(
- r#"% This executable is generated by Deno. Please don't modify it unless you know what it means. %
-@IF EXIST "%~dp0\deno.exe" (
- "%~dp0\deno.exe" "run" "{}" %*
-) ELSE (
- @SETLOCAL
- @SET PATHEXT=%PATHEXT:;.TS;=;%
- "deno" "run" "{}" %*
-)
-"#,
- local_module_url.to_string(),
- local_module_url.to_string()
- )
- } else {
- format!(
- r#"#!/bin/sh
-# This executable is generated by Deno. Please don't modify it unless you know what it means.
-basedir=$(dirname "$(echo "$0" | sed -e 's,\\\\,/,g')")
-
-case \`uname\` in
- *CYGWIN*) basedir=\`cygpath -w "$basedir"\`;;
-esac
-
-if [ -x "$basedir/deno" ]; then
- "$basedir/deno" "run" "{}" "$@"
- ret=$?
-else
- "deno" "run" "{}" "$@"
- ret=$?
-fi
-exit $ret
-"#,
- local_module_url.to_string(),
- local_module_url.to_string()
- )
- };
-
- assert_eq!(content, expected_content);
+ assert!(content.contains(&local_module_url.to_string()));
}
}
diff --git a/cli/tests/integration_tests.rs b/cli/tests/integration_tests.rs
index a0486fbf6..c7b2a4b4e 100644
--- a/cli/tests/integration_tests.rs
+++ b/cli/tests/integration_tests.rs
@@ -138,7 +138,7 @@ fn installer_test_local_module_run() {
let stderr_str = std::str::from_utf8(&output.stderr).unwrap().trim();
println!("Got stdout: {:?}", stdout_str);
println!("Got stderr: {:?}", stderr_str);
- assert_eq!(stdout_str, "hello, foo");
+ assert!(stdout_str.ends_with("hello, foo"));
drop(temp_dir);
}
@@ -180,10 +180,10 @@ fn installer_test_remote_module_run() {
.env(path_var_name, path_var_value)
.output()
.expect("failed to spawn script");
- assert_eq!(
- std::str::from_utf8(&output.stdout).unwrap().trim(),
- "hello, foo"
- );
+ assert!(std::str::from_utf8(&output.stdout)
+ .unwrap()
+ .trim()
+ .ends_with("hello, foo"));
drop(temp_dir);
drop(g)
}
@@ -243,7 +243,10 @@ fn bundle_exports() {
.output()
.expect("failed to spawn script");
// check the output of the test.ts program.
- assert_eq!(std::str::from_utf8(&output.stdout).unwrap().trim(), "Hello");
+ assert!(std::str::from_utf8(&output.stdout)
+ .unwrap()
+ .trim()
+ .ends_with("Hello"));
assert_eq!(output.stderr, b"");
}