summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2015-06-27 14:27:23 +0300
committerEli Zaretskii <eliz@gnu.org>2015-06-27 14:27:23 +0300
commit7baae811651d73b3e89c832a5c15ff5b40c82635 (patch)
tree7db7653a9e9f620792be265f998bb98b38f77289
parent31807189b55d9519a46e4b35fadbe20218e4ebea (diff)
downloademacs-7baae811651d73b3e89c832a5c15ff5b40c82635.tar.gz
Fix VC test suite on MS-Windows
* lisp/vc/vc-svn.el (vc-svn-create-repo): Make sure the file: URL always starts with 3 slashes after the colon. * test/automated/vc-tests.el (vc-test--create-repo-function): Use 'w32-application-type' to invoke CVS on MS-Windows with properly formatted CVSROOT directory name.
-rw-r--r--lisp/vc/vc-svn.el10
-rw-r--r--test/automated/vc-tests.el14
2 files changed, 22 insertions, 2 deletions
diff --git a/lisp/vc/vc-svn.el b/lisp/vc/vc-svn.el
index 5ce9afa02c6..f97e2ab17e9 100644
--- a/lisp/vc/vc-svn.el
+++ b/lisp/vc/vc-svn.el
@@ -279,7 +279,15 @@ RESULT is a list of conses (FILE . STATE) for directory DIR."
;; Expand default-directory because svn gets confused by eg
;; file://~/path/to/file. (Bug#15446).
(vc-svn-command "*vc*" 0 "." "checkout"
- (concat "file://" (expand-file-name default-directory) "SVN")))
+ (let ((defdir (expand-file-name default-directory)))
+ (concat (if (and (stringp defdir)
+ (eq (aref defdir 0) ?/))
+ "file://"
+ ;; MS-Windows files d:/foo/bar need to
+ ;; begin with 3 leading slashes.
+ "file:///")
+ defdir
+ "SVN"))))
(autoload 'vc-switches "vc")
diff --git a/test/automated/vc-tests.el b/test/automated/vc-tests.el
index 58d22378100..a7242e95e95 100644
--- a/test/automated/vc-tests.el
+++ b/test/automated/vc-tests.el
@@ -130,7 +130,19 @@ For backends which dont support it, it is emulated."
(make-temp-name "vc-test") temporary-file-directory)))
(make-directory (expand-file-name "module" tmp-dir) 'parents)
(make-directory (expand-file-name "CVSROOT" tmp-dir) 'parents)
- (shell-command-to-string (format "cvs -Q -d:local:%s co module" tmp-dir))
+ (if (not (fboundp 'w32-application-type))
+ (shell-command-to-string (format "cvs -Q -d:local:%s co module"
+ tmp-dir))
+ (let ((cvs-prog (executable-find "cvs"))
+ (tdir tmp-dir))
+ ;; If CVS executable is an MSYS program, reformat the file
+ ;; name of TMP-DIR to have the /d/foo/bar form supported by
+ ;; MSYS programs. (FIXME: What about Cygwin cvs.exe?)
+ (if (eq (w32-application-type cvs-prog) 'msys)
+ (setq tdir
+ (concat "/" (substring tmp-dir 0 1) (substring tmp-dir 2))))
+ (shell-command-to-string (format "cvs -Q -d:local:%s co module"
+ tdir))))
(rename-file "module/CVS" default-directory)
(delete-directory "module" 'recursive)
;; We must cleanup the "remote" CVS repo as well.