summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNayeem Rahman <muhammed.9939@gmail.com>2019-10-11 18:12:39 +0100
committerRyan Dahl <ry@tinyclouds.org>2019-10-11 10:12:39 -0700
commit04ed8d0531b7c2c308b28b742f5c332345d97065 (patch)
tree2e59a321919c8ce3161dd6208420f139185bf359
parentab63e598176a778691b3db64b559934b885ec3bf (diff)
Ensure DENO_DIR when saving the REPL history (#3106)
-rw-r--r--cli/repl.rs18
-rw-r--r--tools/repl_test.py12
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):