Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
asdf
asdf
Commits
b62a0b1e
Commit
b62a0b1e
authored
Oct 14, 2013
by
Francois-Rene Rideau
Browse files
More Windows tweaks to test-run-program.
parent
14253178
Changes
1
Hide whitespace changes
Inline
Side-by-side
test/test-run-program.script
View file @
b62a0b1e
;; -*- Lisp -*-
(declaim (optimize (debug 3) (safety 3)))
(DBG "Testing echo ok 1 via run-program as a list")
(assert-equal "ok 1" (run-program '("echo" "ok" "1") :output '(:string :stripped t)))
;; On Windows, normalize away CRLF into jut the unixy LF.
(defun dewindowize (x)
(block ()
(setf x (remove (code-char 13) x))
#+(and sbcl windows) ;; buggy implementations output extra space on Windows. Also old CCL.
(when (eql #\space (last-char x))
(return (subseq x 0 (1- (length x)))))
x))
(defun space-bugged (x) ;; some implementations are broken and output extra space on Windows
#.(or #+(and sbcl windows) '(strcat x " ") 'x))
(DBG "Testing echo ok 1 via run-program as a list")
(assert-equal "ok 1"
(dewindowize (run-program '("echo" "ok" "1") :output '(:string :stripped t))))
(DBG "Testing echo ok 1 via run-program as a string")
(assert-equal
(space-bugged
"ok 1"
)
(run-program "echo ok 1" :output '(:string :stripped t)))
(assert-equal "ok 1"
(dewindowize
(run-program "echo ok 1" :output '(:string :stripped t)))
)
;;; test asdf run-shell-command function
(setf *verbose-out* nil)
...
...
@@ -48,39 +55,37 @@
#+(and sbcl os-windows)
(leave-test "SBCL run-program is a big fail on windows")
;; On Windows, normalize away CRLF into jut the unixy LF.
(defun remove-cr (x) (remove (code-char 13) x))
(DBG "Testing awkward legacy output capture via run-shell-command")
(let ((ok1 (format nil "; $ echo ok 1~%
~A~%" (space-bugged "
ok 1")))
)
(let ((ok1 (format nil "; $ echo ok 1~%ok 1")))
(assert-equal
(remove-cr
(with-output-to-string (s)
(let ((*verbose-out* s))
(run-shell-command "echo ~A 1" "ok"))))
(dewindowize
(stripln
(with-output-to-string (s)
(let ((*verbose-out* s))
(run-shell-command "echo ~A 1" "ok")))))
ok1)
#-ecl
(assert-equal
(remove-cr
(with-output-to-string (s)
(let ((*verbose-out* t)
(*standard-output* s))
(let ((status (run-shell-command "echo ok ~D" 1)))
(unless (zerop status)
(error "Didn't get good exit status."))))))
(dewindowize
(stripln
(with-output-to-string (s)
(let ((*verbose-out* t)
(*standard-output* s))
(let ((status (run-shell-command "echo ok ~D" 1)))
(unless (zerop status)
(error "Didn't get good exit status.")))))))
ok1))
;; NB1: run-shell-command is deprecated. Use run-program instead.
;; NB2: we do NOT support stderr capture to *verbose-out* anymore in run-shell-command.
;; If you want 2>&1 redirection, you know where to find it.
(assert-equal (space-bugged "ok 1") (run-program '("echo" "ok 1") :output :line))
(assert-equal "ok 1" (dewindowize (run-program '("echo" "ok 1") :output :line)))
(assert-equal "ok 1" (dewindowize (run-program '("echo" "ok 1") :output '(:string :stripped t))))
(assert-equal '(:ok 1) (run-program '("echo" ":ok 1") :output :forms))
(assert-equal (format nil "~A~%" (space-bugged "ok 1"))
(remove-cr (run-program '("echo" "ok 1") :output :string)))
(assert-equal (format nil "~A~%" (space-bugged "ok"))
(remove-cr (with-output-to-string (*standard-output*)
(run-program "echo ok" :output t :error-output :output))))
(assert-equal "ok" (dewindowize (stripln
(with-output-to-string (*standard-output*)
(run-program "echo ok" :output t :error-output :output)))))
;;#+allegro (trace excl:run-shell-command sys:reap-os-subprocess)
;;#+lispworks (trace system:run-shell-command system:pid-exit-status)
...
...
@@ -199,7 +204,7 @@ Testing run-program
(defun unix-only-test/run-program ()
(assert-equal (
list (space-bugged
"ok 1")
)
(run-program "echo ok 1" :output :lines))
(assert-equal
'
("ok 1") (run-program "echo ok 1" :output :lines))
(assert-equal '(nil nil 0) (multiple-value-list (run-program "true")))
(signals subprocess-error (run-program "false"))
...
...
@@ -239,10 +244,9 @@ Testing run-program
(defun windows-only-test/run-program ()
;; a basic smoke test
(assert-equal (run-program '("cmd" "/c" "echo" "ok") :output :line
s
)
(list (space-bugged "ok"
)))
(assert-equal
"ok" (dewindowize
(run-program '("cmd" "/c" "echo" "ok") :output :line
))
)
(assert-equal "ok 1" (dewindowize (run-program "echo ok 1" :output :line
)))
(assert-equal (list (space-bugged "ok 1")) (run-program "echo ok 1" :output :lines))
t)
(deftest test/run-program ()
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment