diff options
-rw-r--r-- | cli/repl.rs | 18 | ||||
-rw-r--r-- | tools/repl_test.py | 12 |
2 files changed, 10 insertions, 20 deletions
diff --git a/cli/repl.rs b/cli/repl.rs index 0cac6c4ea..7abb76708 100644 --- a/cli/repl.rs +++ b/cli/repl.rs @@ -2,6 +2,7 @@ use crate::deno_dir::DenoDir; use deno::ErrBox; use rustyline; +use std::fs; use std::path::PathBuf; #[cfg(not(windows))] @@ -76,14 +77,7 @@ impl Repl { } fn save_history(&mut self) -> Result<(), ErrBox> { - if !self.history_dir_exists() { - eprintln!( - "Unable to save REPL history: {:?} directory does not exist", - self.history_file - ); - return Ok(()); - } - + fs::create_dir_all(self.history_file.parent().unwrap())?; self .editor .save_history(&self.history_file.to_str().unwrap()) @@ -94,14 +88,6 @@ impl Repl { }) } - fn history_dir_exists(&self) -> bool { - self - .history_file - .parent() - .map(|ref p| p.exists()) - .unwrap_or(false) - } - pub fn readline(&mut self, prompt: &str) -> Result<String, ErrBox> { self .editor diff --git a/tools/repl_test.py b/tools/repl_test.py index 544dd6a7e..b652a5d38 100644 --- a/tools/repl_test.py +++ b/tools/repl_test.py @@ -1,5 +1,6 @@ # Copyright 2018-2019 the Deno authors. All rights reserved. MIT license. import os +import shutil from subprocess import CalledProcessError, PIPE, Popen import sys import time @@ -145,11 +146,14 @@ class TestRepl(DenoTestCase): self.assertEqual(code, 0) def test_missing_deno_dir(self): + deno_dir = "nonexistent" new_env = os.environ.copy() - new_env["DENO_DIR"] = os.path.abspath("doesnt_exist") - out, err, code = self.input("'noop'", exit=False, env=new_env) - self.assertEqual(out, "noop\n") - self.assertTrue(err.startswith("Unable to save REPL history:")) + new_env["DENO_DIR"] = deno_dir + out, err, code = self.input("1", exit=False, env=new_env) + self.assertTrue(os.path.isdir(deno_dir)) + shutil.rmtree(deno_dir) + self.assertEqual(out, "1\n") + self.assertEqual(err, "") self.assertEqual(code, 0) def test_save_last_eval(self): |