summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZejun Wu <watashi@watashi.ws>2015-05-14 10:56:51 -0500
committerAustin Seipp <austin@well-typed.com>2015-05-14 16:26:40 -0500
commit3ef7fcedfa1ad47968ca5fa107d51a6ab7051ed7 (patch)
treeed1282d5f5ecd31b738b49fdc3b2d7b5025b8545
parent3cf8ecdc70cb295a2b9606080a1c7b5fa8eb16f4 (diff)
downloadhaskell-3ef7fcedfa1ad47968ca5fa107d51a6ab7051ed7.tar.gz
Do not check dir perms when .ghci doesn't exist
Do not check dir perms when .ghci doesn't exist, otherwise GHCi will print some confusing and useless warnings in some cases (e.g. in travis). This will fix test T8333 and T10408A in travis. T10408A will be a test case to cover this. And T8333 is changed to be not affected by this. Test Plan: chmod o+w ~/.ghc make TESTS="T8333 T10408A T10408B" chmod o-w ~/.ghc Reviewers: austin, nomeata Differential Revision: https://phabricator.haskell.org/D890
-rw-r--r--ghc/InteractiveUI.hs9
-rw-r--r--testsuite/tests/th/Makefile2
2 files changed, 5 insertions, 6 deletions
diff --git a/ghc/InteractiveUI.hs b/ghc/InteractiveUI.hs
index 77f65eb9c9..70e4df1122 100644
--- a/ghc/InteractiveUI.hs
+++ b/ghc/InteractiveUI.hs
@@ -502,7 +502,7 @@ runGHCi paths maybe_exprs = do
dot_cfgs <- if ignore_dot_ghci then return [] else do
dot_files <- catMaybes <$> sequence [ current_dir, app_user_dir, home_dir ]
- liftIO $ filterM checkDirAndFilePerms dot_files
+ liftIO $ filterM checkFileAndDirPerms dot_files
let arg_cfgs = reverse $ ghciScripts dflags
-- -ghci-script are collected in reverse order
mcfgs <- liftIO $ mapM canonicalizePath' $ dot_cfgs ++ arg_cfgs
@@ -589,11 +589,10 @@ nextInputLine show_prompt is_tty
-- don't need to check .. and ../.. etc. because "." always refers to
-- the same directory while a process is running.
-checkDirAndFilePerms :: FilePath -> IO Bool
-checkDirAndFilePerms file = do
- dir_ok <- checkPerms $ getDirectory file
+checkFileAndDirPerms :: FilePath -> IO Bool
+checkFileAndDirPerms file = do
file_ok <- checkPerms file
- return (dir_ok && file_ok)
+ if file_ok then checkPerms (getDirectory file) else return False
where
getDirectory f = case takeDirectory f of
"" -> "."
diff --git a/testsuite/tests/th/Makefile b/testsuite/tests/th/Makefile
index d10476ee2c..031c2850de 100644
--- a/testsuite/tests/th/Makefile
+++ b/testsuite/tests/th/Makefile
@@ -36,7 +36,7 @@ TH_Depends:
T8333:
- '$(TEST_HC)' $(TEST_HC_OPTS) $(ghcThWayFlags) --interactive -v0 T8333.hs < /dev/null
+ '$(TEST_HC)' $(TEST_HC_OPTS) $(ghcThWayFlags) --interactive -v0 -ignore-ghci-script T8333.hs < /dev/null
# This was an easy way to re-use the stdout testing
# to check the contents of a generated file.