0
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2025-03-03 09:31:22 -05:00

Ensure DENO_DIR when saving the REPL history (#3106)

This commit is contained in:
Nayeem Rahman 2019-10-11 18:12:39 +01:00 committed by Ryan Dahl
parent ab63e59817
commit 04ed8d0531
2 changed files with 10 additions and 20 deletions

View file

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

View file

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