- new expect file for testing application with coverage report - cleaning white… | |
git clone git://bitreich.org/clic/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65… | |
Log | |
Files | |
Refs | |
Tags | |
README | |
LICENSE | |
--- | |
commit 04f5a2a34e4dcd4f26e89de3dc0dd81032eeda10 | |
parent fdffd2e4d1c02050fcf6f441b6e0029d560c1449 | |
Author: Solene Rapenne <[email protected]> | |
Date: Thu, 16 Nov 2017 12:11:49 +0000 | |
- new expect file for testing application with coverage report | |
- cleaning whitespace | |
Diffstat: | |
M clic.lisp | 51 ++++++++++++++++++-----------… | |
M interactive-test.exp | 26 ++++++++++++++++++-------- | |
2 files changed, 48 insertions(+), 29 deletions(-) | |
--- | |
diff --git a/clic.lisp b/clic.lisp | |
@@ -22,7 +22,7 @@ | |
#include <sys/ioctl.h> | |
#include <limits.h> | |
unsigned int getTerminalHeight() { | |
- struct winsize w; | |
+ struct winsize w; | |
return ioctl(1,TIOCGWINSZ,&w)<0?UINT_MAX:w.ws_row;}") | |
(ffi:def-function | |
("getTerminalHeight" c-termsize) | |
@@ -155,31 +155,31 @@ | |
(print-with-color "selector 5 not implemented" 'red)) | |
;; 6 Unix uuencoded file | |
- (check "6" | |
+ (check "6" | |
(print-with-color "selector 6 not implemented" 'red)) | |
;; 7 Index search server | |
- (check "7" | |
+ (check "7" | |
(print-with-color "selector 7 not implemented" 'red)) | |
;; 8 Telnet session | |
- (check "8" | |
+ (check "8" | |
(print-with-color "selector 8 not implemented" 'red)) | |
;; 9 Binary | |
- (check "9" | |
+ (check "9" | |
(print-with-color "selector 9 not implemented" 'red)) | |
;; + redundant server | |
- (check "+" | |
+ (check "+" | |
(print-with-color "selector + not implemented" 'red)) | |
;; T text based tn3270 session | |
- (check "T" | |
+ (check "T" | |
(print-with-color "selector T not implemented" 'red)) | |
;; g GIF file | |
- (check "g" | |
+ (check "g" | |
(print-with-color "selector g not implemented" 'red)) | |
;; I image | |
@@ -373,11 +373,23 @@ | |
(defun display-buffer(type) | |
"display the buffer" | |
(let ((rows (c-termsize))) | |
+ | |
+ ;; we store the user input outside of the loop | |
+ ;; so if the user doesn't want to scroll | |
+ ;; we break the loop and then execute the command | |
(let ((input nil)) | |
(loop for line across *buffer* | |
counting line into row | |
do | |
- (when (= row (- rows 1)) ; -1 for text displayed | |
+ ;; display lines | |
+ (cond | |
+ ((string= "1" type) | |
+ (formatted-output line)) | |
+ ((string= "0" type) | |
+ (format t "~a~%" line))) | |
+ | |
+ ;; split and ask to scroll or to type a command | |
+ (when (= row rows) ; -1 for text displayed | |
(setf row 0) | |
(format t "~a press enter or a shell command ~a : " | |
(get-color 'cyan) | |
@@ -386,14 +398,11 @@ | |
(let ((first-input (read-char))) | |
(when (not (char= #\NewLine first-input)) | |
(unread-char first-input) | |
- (let ((input-text (format nil "~a" (read)))) | |
+ (let ((input-text (format nil "~a" (read-line nil nil)))) | |
(setf input input-text) | |
- (loop-finish))))) | |
- (cond | |
- ((string= "1" type) | |
- (formatted-output line)) | |
- ((string= "0" type) | |
- (format t "~a~%" line)))) | |
+ (loop-finish)))))) | |
+ | |
+ ;; in case of shell command, do it | |
(when input | |
(user-input input))))) | |
@@ -411,9 +420,6 @@ | |
;; goes to the history ! | |
(push destination *history*) | |
- (display-buffer (location-type destination)) | |
- | |
- | |
(when *offline* | |
(let ((path (concatenate 'string | |
"history/" (location-host destination) | |
@@ -427,10 +433,13 @@ | |
:if-does-not-exist :create | |
:if-exists :supersede) | |
- (loop for line in *buffer* | |
+ (loop for line across *buffer* | |
while line | |
do | |
- (format save-offline "~a~%" line)))))) | |
+ (format save-offline "~a~%" line))))) | |
+ | |
+ (display-buffer (location-type destination))) | |
+ | |
(defun shell() | |
"Shell for user interaction" | |
diff --git a/interactive-test.exp b/interactive-test.exp | |
@@ -21,9 +21,14 @@ proc user_input {} { | |
send "19\n" | |
expect " : " | |
+ send "\nr\n" | |
+ expect " : " | |
send "p\n" | |
expect "clic => " | |
+ | |
+ send "r\n" | |
+ expect "clic => " | |
send "h\n" | |
expect "clic => " | |
@@ -61,35 +66,40 @@ expect "* " | |
send "(main)\n" | |
set running [user_input] | |
-send "quit\n" | |
+send "(pop *history*) (p) (r)\n" | |
expect "* " | |
-send "(main)\n" | |
-expect "clic => " | |
- | |
+send "19\n" | |
+expect " : " | |
send "q\n" | |
expect "* " | |
-send "(pop *history*) (p) (r)\n" | |
+send "(main)\n" | |
+expect "clic => " | |
+ | |
+send "exit\n" | |
expect "* " | |
# add an argv to test argv parsing | |
-send "(setf *posix-argv* '(\"sbcl\" \"gopher://bitreich.org/0/usr/\"))\n" | |
+send "(setf *posix-argv* '(\"sbcl\" \"gopher://bitreich.org/0/documents/bitrei… | |
expect "* " | |
send "(main)\n" | |
+expect " : " | |
+send "q\n" | |
expect "* " | |
# add an argv to test argv parsing | |
-send "(setf *posix-argv* '(\"sbcl\" \"bitreich.org/0/usr/\"))\n" | |
+send "(setf *posix-argv* '(\"sbcl\" \"bitreich.org/1/usr/solene/\"))\n" | |
expect "* " | |
send "(main)\n" | |
+expect "clic => " | |
+send "q\n" | |
expect "* " | |
- | |
# add an argv to test argv parsing | |
send "(setf *posix-argv* '(\"sbcl\" \"bitreich.org:70/\"))\n" | |
expect "* " |