1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-22 23:34:47 -05:00

fix: normalize Deno.execPath (#2598)

This commit is contained in:
Bartek Iwańczuk 2019-06-30 19:32:24 +02:00 committed by Ryan Dahl
parent 1068b4848c
commit 9d18f97327
2 changed files with 10 additions and 2 deletions

View file

@ -57,6 +57,7 @@ use tokio::net::TcpListener;
use tokio::net::TcpStream; use tokio::net::TcpStream;
use tokio_process::CommandExt; use tokio_process::CommandExt;
use tokio_threadpool; use tokio_threadpool;
use url::Url;
use utime; use utime;
#[cfg(unix)] #[cfg(unix)]
@ -345,8 +346,12 @@ fn op_start(
let cwd_off = let cwd_off =
builder.create_string(deno_fs::normalize_path(cwd_path.as_ref()).as_ref()); builder.create_string(deno_fs::normalize_path(cwd_path.as_ref()).as_ref());
let current_exe = std::env::current_exe().unwrap();
// Now apply URL parser to current exe to get fully resolved path, otherwise we might get
// `./` and `../` bits in `exec_path`
let exe_url = Url::from_file_path(current_exe).unwrap();
let exec_path = let exec_path =
builder.create_string(std::env::current_exe().unwrap().to_str().unwrap()); builder.create_string(exe_url.to_file_path().unwrap().to_str().unwrap());
let v8_version = version::v8(); let v8_version = version::v8();
let v8_version_off = builder.create_string(v8_version); let v8_version_off = builder.create_string(v8_version);

View file

@ -55,8 +55,11 @@ class TestTarget(DenoTestCase):
assert result.out.strip() == "noColor false" assert result.out.strip() == "noColor false"
def test_exec_path(self): def test_exec_path(self):
cmd = [self.deno_exe, "run", "tests/exec_path.ts"] cmd = [self.deno_exe, "run", "--allow-run", "tests/exec_path.ts"]
result = run_output(cmd, quiet=True) result = run_output(cmd, quiet=True)
print "exec_path", result.code
print result.out
print result.err
assert self.deno_exe in result.out.strip() assert self.deno_exe in result.out.strip()
self.assertEqual(result.code, 0) self.assertEqual(result.code, 0)