'("zero" "two" "four"))))
(ert-deftest esh-var-test/interp-var-indices-subcommand ()
- "Interpolate list variable with subcommand expansion for indices"
+ "Interpolate list variable with subcommand expansion for indices."
(skip-unless (executable-find "echo"))
(let ((eshell-test-value '("zero" "one" "two" "three" "four")))
(eshell-command-result-equal
'("zero" "two"))))
(ert-deftest esh-var-test/interp-var-split-indices ()
- "Interpolate string variable with indices"
+ "Interpolate string variable with indices."
(let ((eshell-test-value "zero one two three four"))
(eshell-command-result-equal "echo $eshell-test-value[0]"
"zero")
'("zero" "two" "four"))))
(ert-deftest esh-var-test/interp-var-string-split-indices ()
- "Interpolate string variable with string splitter and indices"
+ "Interpolate string variable with string splitter and indices."
(let ((eshell-test-value "zero:one:two:three:four"))
(eshell-command-result-equal "echo $eshell-test-value[: 0]"
"zero")
'("zero" "two"))))
(ert-deftest esh-var-test/interp-var-regexp-split-indices ()
- "Interpolate string variable with regexp splitter and indices"
+ "Interpolate string variable with regexp splitter and indices."
(let ((eshell-test-value "zero:one!two:three!four"))
(eshell-command-result-equal "echo $eshell-test-value['[:!]' 0]"
"zero")
'("zero" "two"))))
(ert-deftest esh-var-test/interp-var-assoc ()
- "Interpolate alist variable with index"
+ "Interpolate alist variable with index."
(let ((eshell-test-value '(("foo" . 1) (bar . 2))))
(eshell-command-result-equal "echo $eshell-test-value[foo]"
1)
2)))
(ert-deftest esh-var-test/interp-var-length-list ()
- "Interpolate length of list variable"
+ "Interpolate length of list variable."
(let ((eshell-test-value '((1 2) (3) (5 (6 7 8 9)))))
(eshell-command-result-equal "echo $#eshell-test-value" 3)
(eshell-command-result-equal "echo $#eshell-test-value[1]" 1)
(eshell-command-result-equal "echo $#eshell-test-value" 6)))
(ert-deftest esh-var-test/interp-var-length-alist ()
- "Interpolate length of alist variable"
+ "Interpolate length of alist variable."
(let ((eshell-test-value '(("foo" . (1 2 3)))))
(eshell-command-result-equal "echo $#eshell-test-value" 1)
(eshell-command-result-equal "echo $#eshell-test-value[foo]" 3)))
(ert-deftest esh-var-test/interp-var-splice ()
- "Splice-interpolate list variable"
+ "Splice-interpolate list variable."
(let ((eshell-test-value '(1 2 3)))
(eshell-command-result-equal "echo a $@eshell-test-value z"
'("a" 1 2 3 "z"))))
(ert-deftest esh-var-test/interp-var-splice-concat ()
- "Splice-interpolate and concat list variable"
+ "Splice-interpolate and concat list variable."
(let ((eshell-test-value '(1 2 3)))
(eshell-command-result-equal "echo it is a$@'eshell-test-value'z"
'("it" "is" "a1" 2 "3z"))
'("it" "is" 1 2 (31 2 3)))))
(ert-deftest esh-var-test/interp-lisp ()
- "Interpolate Lisp form evaluation"
+ "Interpolate Lisp form evaluation."
(eshell-command-result-equal "+ $(+ 1 2) 3" 6))
(ert-deftest esh-var-test/interp-lisp-indices ()
- "Interpolate Lisp form evaluation with index"
+ "Interpolate Lisp form evaluation with index."
(eshell-command-result-equal "+ $(list 1 2)[1] 3" 5))
(ert-deftest esh-var-test/interp-cmd ()
- "Interpolate command result"
+ "Interpolate command result."
(eshell-command-result-equal "+ ${+ 1 2} 3" 6))
(ert-deftest esh-var-test/interp-cmd-indices ()
- "Interpolate command result with index"
+ "Interpolate command result with index."
(eshell-command-result-equal "+ ${listify 1 2}[1] 3" 5))
(ert-deftest esh-var-test/interp-cmd-external ()
- "Interpolate command result from external command"
+ "Interpolate command result from external command."
(skip-unless (executable-find "echo"))
(with-temp-eshell
(eshell-match-command-output "echo ${*echo hi}"
"hi\n")))
(ert-deftest esh-var-test/interp-cmd-external-indices ()
- "Interpolate command result from external command with index"
+ "Interpolate command result from external command with index."
(skip-unless (executable-find "echo"))
(with-temp-eshell
(eshell-match-command-output "echo ${*echo \"hi\nbye\"}[1]"
"bye\n")))
(ert-deftest esh-var-test/interp-temp-cmd ()
- "Interpolate command result redirected to temp file"
+ "Interpolate command result redirected to temp file."
(eshell-command-result-equal "cat $<echo hi>" "hi"))
(ert-deftest esh-var-test/interp-concat-lisp ()
- "Interpolate and concat Lisp form"
+ "Interpolate and concat Lisp form."
(eshell-command-result-equal "+ $(+ 1 2)3 3" 36))
(ert-deftest esh-var-test/interp-concat-lisp2 ()
- "Interpolate and concat two Lisp forms"
+ "Interpolate and concat two Lisp forms."
(eshell-command-result-equal "+ $(+ 1 2)$(+ 1 2) 3" 36))
(ert-deftest esh-var-test/interp-concat-cmd ()
- "Interpolate and concat command with literal"
+ "Interpolate and concat command with literal."
(eshell-command-result-equal "+ ${+ 1 2}3 3" 36)
(eshell-command-result-equal "echo ${*echo \"foo\nbar\"}-baz"
'("foo" "bar-baz"))
'("hi" "23")))
(ert-deftest esh-var-test/interp-concat-cmd2 ()
- "Interpolate and concat two commands"
+ "Interpolate and concat two commands."
(eshell-command-result-equal "+ ${+ 1 2}${+ 1 2} 3" 36))
(ert-deftest esh-var-test/interp-concat-cmd-external ()
- "Interpolate command result from external command with concatenation"
+ "Interpolate command result from external command with concatenation."
(skip-unless (executable-find "echo"))
(with-temp-eshell
(eshell-match-command-output "echo ${echo hi}-${*echo there}"
;; Quoted variable interpolation
(ert-deftest esh-var-test/quoted-interp-var ()
- "Interpolate variable inside double-quotes"
+ "Interpolate variable inside double-quotes."
(eshell-command-result-equal "echo \"$user-login-name\""
user-login-name))
(concat "hi, " user-login-name)))
(ert-deftest esh-var-test/quoted-interp-list-var ()
- "Interpolate list variable inside double-quotes"
+ "Interpolate list variable inside double-quotes."
(let ((eshell-test-value '(1 2 3)))
(eshell-command-result-equal "echo \"$eshell-test-value\""
"(1 2 3)")))
"a(1 2 3)z")))
(ert-deftest esh-var-test/quoted-interp-var-indices ()
- "Interpolate string variable with indices inside double-quotes"
+ "Interpolate string variable with indices inside double-quotes."
(let ((eshell-test-value '("zero" "one" "two" "three" "four")))
(eshell-command-result-equal "echo \"$eshell-test-value[0]\""
"zero")
"(\"one\" \"two\" \"four\")")))
(ert-deftest esh-var-test/quote-interp-var-indices-subcommand ()
- "Interpolate list variable with subcommand expansion for indices
-inside double-quotes"
+ "Interpolate list variable with subcommand expansion for indices inside double-quotes."
(skip-unless (executable-find "echo"))
(let ((eshell-test-value '("zero" "one" "two" "three" "four")))
(eshell-command-result-equal
"(\"one\" \"two\")")))
(ert-deftest esh-var-test/quoted-interp-var-split-indices ()
- "Interpolate string variable with indices inside double-quotes"
+ "Interpolate string variable with indices inside double-quotes."
(let ((eshell-test-value "zero one two three four"))
(eshell-command-result-equal "echo \"$eshell-test-value[0]\""
"zero")
"(\"zero\" \"two\")")))
(ert-deftest esh-var-test/quoted-interp-var-string-split-indices ()
- "Interpolate string variable with string splitter and indices
-inside double-quotes"
+ "Interpolate string variable with string splitter and indices inside double-quotes."
(let ((eshell-test-value "zero:one:two:three:four"))
(eshell-command-result-equal "echo \"$eshell-test-value[: 0]\""
"zero")
"(\"zero\" \"two\")")))
(ert-deftest esh-var-test/quoted-interp-var-regexp-split-indices ()
- "Interpolate string variable with regexp splitter and indices"
+ "Interpolate string variable with regexp splitter and indices."
(let ((eshell-test-value "zero:one!two:three!four"))
(eshell-command-result-equal "echo \"$eshell-test-value['[:!]' 0]\""
"zero")
"(\"zero\" \"two\")")))
(ert-deftest esh-var-test/quoted-interp-var-assoc ()
- "Interpolate alist variable with index inside double-quotes"
+ "Interpolate alist variable with index inside double-quotes."
(let ((eshell-test-value '(("foo" . 1) (bar . 2))))
(eshell-command-result-equal "echo \"$eshell-test-value[foo]\""
"1")
"2")))
(ert-deftest esh-var-test/quoted-interp-var-length-list ()
- "Interpolate length of list variable inside double-quotes"
+ "Interpolate length of list variable inside double-quotes."
(let ((eshell-test-value '((1 2) (3) (5 (6 7 8 9)))))
(eshell-command-result-equal "echo \"$#eshell-test-value\""
"3")
"4")))
(ert-deftest esh-var-test/quoted-interp-var-length-string ()
- "Interpolate length of string variable inside double-quotes"
+ "Interpolate length of string variable inside double-quotes."
(let ((eshell-test-value "foobar"))
(eshell-command-result-equal "echo \"$#eshell-test-value\""
"6")))
(ert-deftest esh-var-test/quoted-interp-var-length-alist ()
- "Interpolate length of alist variable inside double-quotes"
+ "Interpolate length of alist variable inside double-quotes."
(let ((eshell-test-value '(("foo" . (1 2 3)))))
(eshell-command-result-equal "echo \"$#eshell-test-value\""
"1")
"3")))
(ert-deftest esh-var-test/quoted-interp-var-splice ()
- "Splice-interpolate list variable inside double-quotes"
+ "Splice-interpolate list variable inside double-quotes."
(let ((eshell-test-value '(1 2 3)))
(eshell-command-result-equal "echo a \"$@eshell-test-value\" z"
'("a" "1 2 3" "z"))))
"a1 2 3z")))
(ert-deftest esh-var-test/quoted-interp-lisp ()
- "Interpolate Lisp form evaluation inside double-quotes"
+ "Interpolate Lisp form evaluation inside double-quotes."
(eshell-command-result-equal "echo \"hi $(concat \\\"the\\\" \\\"re\\\")\""
"hi there"))
(ert-deftest esh-var-test/quoted-interp-lisp-indices ()
- "Interpolate Lisp form evaluation with index"
+ "Interpolate Lisp form evaluation with index."
(eshell-command-result-equal "concat \"$(list 1 2)[1]\" cool"
"2cool"))
(ert-deftest esh-var-test/quoted-interp-cmd ()
- "Interpolate command result inside double-quotes"
+ "Interpolate command result inside double-quotes."
(eshell-command-result-equal "echo \"hi ${echo \\\"there\\\"}\""
"hi there"))
(ert-deftest esh-var-test/quoted-interp-cmd-indices ()
- "Interpolate command result with index inside double-quotes"
+ "Interpolate command result with index inside double-quotes."
(eshell-command-result-equal "concat \"${listify 1 2}[1]\" cool"
"2cool"))
(ert-deftest esh-var-test/quoted-interp-temp-cmd ()
- "Interpolate command result redirected to temp file inside double-quotes"
+ "Interpolate command result redirected to temp file inside double-quotes."
(let ((temporary-file-directory
(file-name-as-directory (make-temp-file "esh-vars-tests" t))))
(unwind-protect
(delete-directory temporary-file-directory t))))
(ert-deftest esh-var-test/quoted-interp-concat-cmd ()
- "Interpolate and concat command with literal"
+ "Interpolate and concat command with literal."
(eshell-command-result-equal "echo \"${echo \\\"foo\nbar\\\"} baz\""
"foo\nbar baz"))
;; Interpolating commands
(ert-deftest esh-var-test/command-interp ()
- "Interpolate a variable as a command name"
+ "Interpolate a variable as a command name."
(let ((eshell-test-value "printnl"))
(eshell-command-result-equal "$eshell-test-value hello there"
"hello\nthere\n")))
(ert-deftest esh-var-test/command-interp-splice ()
- "Interpolate a splice variable as a command name with arguments"
+ "Interpolate a splice variable as a command name with arguments."
(let ((eshell-test-value '("printnl" "hello" "there")))
(eshell-command-result-equal "$@eshell-test-value"
"hello\nthere\n")))
;; Interpolated variable conversion
(ert-deftest esh-var-test/interp-convert-var-number ()
- "Interpolate numeric variable"
+ "Interpolate numeric variable."
(let ((eshell-test-value 123))
(eshell-command-result-equal "type-of $eshell-test-value"
'integer)))
(ert-deftest esh-var-test/interp-convert-var-split-indices ()
- "Interpolate and convert string variable with indices"
+ "Interpolate and convert string variable with indices."
;; Check that numeric forms are converted to numbers.
(let ((eshell-test-value "000 010 020 030 040"))
(eshell-command-result-equal "echo $eshell-test-value[0]"
"baz\n")))
(ert-deftest esh-var-test/interp-convert-quoted-var-number ()
- "Interpolate numeric quoted numeric variable"
+ "Interpolate numeric quoted numeric variable."
(let ((eshell-test-value 123))
(eshell-command-result-equal "type-of $'eshell-test-value'"
'integer)
'integer)))
(ert-deftest esh-var-test/interp-convert-quoted-var-split-indices ()
- "Interpolate and convert quoted string variable with indices"
+ "Interpolate and convert quoted string variable with indices."
(let ((eshell-test-value "000 010 020 030 040"))
(eshell-command-result-equal "echo $'eshell-test-value'[0]"
0)
'(0 20))))
(ert-deftest esh-var-test/interp-convert-cmd-string-newline ()
- "Interpolate trailing-newline command result"
+ "Interpolate trailing-newline command result."
(eshell-command-result-equal "echo ${echo \"foo\n\"}" "foo"))
(ert-deftest esh-var-test/interp-convert-cmd-multiline ()
- "Interpolate multi-line command result"
+ "Interpolate multi-line command result."
(eshell-command-result-equal "echo ${echo \"foo\nbar\"}"
'("foo" "bar"))
;; Numeric output should be converted to numbers...
'("01" "02" "hi")))
(ert-deftest esh-var-test/interp-convert-cmd-number ()
- "Interpolate numeric command result"
+ "Interpolate numeric command result."
(eshell-command-result-equal "echo ${echo \"1\"}" 1))
(ert-deftest esh-var-test/interp-convert-cmd-split-indices ()
- "Interpolate command result with indices"
+ "Interpolate command result with indices."
(eshell-command-result-equal "echo ${echo \"000 010 020\"}[0]"
0)
(eshell-command-result-equal "echo ${echo \"000 010 020\"}[0 2]"
'(0 20)))
(ert-deftest esh-var-test/quoted-interp-convert-var-number ()
- "Interpolate numeric variable inside double-quotes"
+ "Interpolate numeric variable inside double-quotes."
(let ((eshell-test-value 123))
(eshell-command-result-equal "type-of \"$eshell-test-value\""
'string)))
(ert-deftest esh-var-test/quoted-interp-convert-var-split-indices ()
- "Interpolate string variable with indices inside double-quotes"
+ "Interpolate string variable with indices inside double-quotes."
(let ((eshell-test-value "000 010 020 030 040"))
(eshell-command-result-equal "echo \"$eshell-test-value[0]\""
"000")
"(\"000\" \"020\")")))
(ert-deftest esh-var-test/quoted-interp-convert-quoted-var-number ()
- "Interpolate numeric quoted variable inside double-quotes"
+ "Interpolate numeric quoted variable inside double-quotes."
(let ((eshell-test-value 123))
(eshell-command-result-equal "type-of \"$'eshell-test-value'\""
'string)
'string)))
(ert-deftest esh-var-test/quoted-interp-convert-quoted-var-split-indices ()
- "Interpolate quoted string variable with indices inside double-quotes"
+ "Interpolate quoted string variable with indices inside double-quotes."
(let ((eshell-test-value "000 010 020 030 040"))
(eshell-command-result-equal "echo \"$eshell-test-value[0]\""
"000")
"(\"000\" \"020\")")))
(ert-deftest esh-var-test/quoted-interp-convert-cmd-string-newline ()
- "Interpolate trailing-newline command result inside double-quotes"
+ "Interpolate trailing-newline command result inside double-quotes."
(eshell-command-result-equal "echo \"${echo \\\"foo\n\\\"}\""
"foo")
(eshell-command-result-equal "echo \"${echo \\\"foo\n\n\\\"}\""
"foo"))
(ert-deftest esh-var-test/quoted-interp-convert-cmd-multiline ()
- "Interpolate multi-line command result inside double-quotes"
+ "Interpolate multi-line command result inside double-quotes."
(eshell-command-result-equal "echo \"${echo \\\"foo\nbar\\\"}\""
"foo\nbar"))
(ert-deftest esh-var-test/quoted-interp-convert-cmd-number ()
- "Interpolate numeric command result inside double-quotes"
+ "Interpolate numeric command result inside double-quotes."
(eshell-command-result-equal "echo \"${echo \\\"1\\\"}\"" "1"))
(ert-deftest esh-var-test/quoted-interp-convert-cmd-split-indices ()
- "Interpolate command result with indices inside double-quotes"
+ "Interpolate command result with indices inside double-quotes."
(eshell-command-result-equal "echo \"${echo \\\"000 010 020\\\"}[0]\""
"000"))
(window-body-height nil 'remap)))
(ert-deftest esh-var-test/columns-var ()
- "$COLUMNS should equal (window-body-width nil 'remap)"
+ "$COLUMNS should equal (window-body-width nil 'remap)."
(eshell-command-result-equal "echo $COLUMNS"
(window-body-width nil 'remap)))
(ert-deftest esh-var-test/inside-emacs-var ()
- "Test presence of \"INSIDE_EMACS\" in subprocesses"
+ "Test presence of \"INSIDE_EMACS\" in subprocesses."
(with-temp-eshell
(eshell-match-command-output "env"
(format "INSIDE_EMACS=%s,eshell"
emacs-version))))
(ert-deftest esh-var-test/inside-emacs-var-split-indices ()
- "Test using \"INSIDE_EMACS\" with split indices"
+ "Test using \"INSIDE_EMACS\" with split indices."
(with-temp-eshell
(eshell-match-command-output "echo $INSIDE_EMACS[, 1]"
"eshell")))
(eshell-command-result-equal "echo $UID" (user-uid)))
(ert-deftest esh-var-test/last-status-var-lisp-command ()
- "Test using the \"last exit status\" ($?) variable with a Lisp command"
+ "Test using the \"last exit status\" ($?) variable with a Lisp command."
(with-temp-eshell
(eshell-match-command-output "zerop 0; echo $?"
"t\n0\n")
"1\n" nil t)))
(ert-deftest esh-var-test/last-status-var-lisp-form ()
- "Test using the \"last exit status\" ($?) variable with a Lisp form"
+ "Test using the \"last exit status\" ($?) variable with a Lisp form."
(let ((eshell-lisp-form-nil-is-failure t))
(with-temp-eshell
(eshell-match-command-output "(zerop 0); echo $?"
"1\n" nil t))))
(ert-deftest esh-var-test/last-status-var-ext-cmd ()
- "Test using the \"last exit status\" ($?) variable with an external command"
+ "Test using the \"last exit status\" ($?) variable with an external command."
(skip-unless (executable-find "["))
(with-temp-eshell
(eshell-match-command-output "[ foo = foo ]; echo $?"
"1\n")))
(ert-deftest esh-var-test/last-result-var ()
- "Test using the \"last result\" ($$) variable"
+ "Test using the \"last result\" ($$) variable."
(with-temp-eshell
(eshell-match-command-output "+ 1 2; + $$ 2"
"3\n5\n")))
(ert-deftest esh-var-test/last-result-var-twice ()
- "Test using the \"last result\" ($$) variable twice"
+ "Test using the \"last result\" ($$) variable twice."
(with-temp-eshell
(eshell-match-command-output "+ 1 2; + $$ $$"
"3\n6\n")))
(ert-deftest esh-var-test/last-result-var-ext-cmd ()
- "Test using the \"last result\" ($$) variable with an external command"
+ "Test using the \"last result\" ($$) variable with an external command."
(skip-unless (executable-find "["))
(with-temp-eshell
;; MS-DOS/MS-Windows have an external command 'format', which we
"nil\n"))))
(ert-deftest esh-var-test/last-result-var-split-indices ()
- "Test using the \"last result\" ($$) variable with split indices"
+ "Test using the \"last result\" ($$) variable with split indices."
(with-temp-eshell
(eshell-match-command-output
"string-join (list \"01\" \"02\") :; + $$[: 1] 3"
"01:02\n02\n")))
(ert-deftest esh-var-test/last-arg-var ()
- "Test using the \"last arg\" ($_) variable"
+ "Test using the \"last arg\" ($_) variable."
(with-temp-eshell
(eshell-match-command-output "+ 1 2; + $_ 4"
"3\n6\n")))
(ert-deftest esh-var-test/last-arg-var-indices ()
- "Test using the \"last arg\" ($_) variable with indices"
+ "Test using the \"last arg\" ($_) variable with indices."
(with-temp-eshell
(eshell-match-command-output "+ 1 2; + $_[0] 4"
"3\n5\n")
"3\n6\n")))
(ert-deftest esh-var-test/last-arg-var-split-indices ()
- "Test using the \"last arg\" ($_) variable with split indices"
+ "Test using the \"last arg\" ($_) variable with split indices."
(with-temp-eshell
(eshell-match-command-output "concat 01:02 03:04; + $_[0][: 1] 5"
"01:0203:04\n7\n")