[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/objed 2f2d8bf 04/19: Starting to change testing
From: |
Clemens Radermacher |
Subject: |
[elpa] externals/objed 2f2d8bf 04/19: Starting to change testing |
Date: |
Fri, 25 Jan 2019 07:51:30 -0500 (EST) |
branch: externals/objed
commit 2f2d8bf0ce53178b25d69e3cb06b7e3f5eb79c73
Author: Clemens Radermacher <address@hidden>
Commit: Clemens Radermacher <address@hidden>
Starting to change testing
Testing should be as easy as possible. Created testfiles should be picked up
automatically. For now the folder still needs to be specified in the test.
---
test/tests.el | 171 +++++++++++++++++++--------------
test/tests/activate/backward-word | 5 +
test/tests/activate/beginning-of-defun | 13 +++
test/tests/activate/beginning-of-line | 6 ++
test/tests/activate/forward-word | 5 +
test/tests/activate/next-line | 8 ++
6 files changed, 137 insertions(+), 71 deletions(-)
diff --git a/test/tests.el b/test/tests.el
index e21cbb0..47c58bf 100644
--- a/test/tests.el
+++ b/test/tests.el
@@ -1,8 +1,10 @@
(require 'ert)
(require 'cl-lib)
(require 'objed)
+
;; activate on load
(objed-mode 1)
+(setq-default require-final-newline nil)
;; defuns adapted from lispy-test.el
@@ -75,81 +77,108 @@ Insert KEY if there's no command."
;; (should (equal (objed-decode-keysequence "3\C-?")
;; '(3 ""))))
-(defmacro objed-with (in body &optional object)
+(defmacro objed-with (in body &optional object file)
(let ((init (if object `(objed--init ',object)
- '(objed--init 'char))))
- `(let ((temp-buffer (generate-new-buffer " *temp*")))
- (save-window-excursion
- (unwind-protect
- (progn
- (switch-to-buffer temp-buffer)
- (emacs-lisp-mode)
- (transient-mark-mode 1)
- (insert ,in)
- (goto-char (point-min))
- (when (search-forward "~" nil t)
- (backward-delete-char 1)
- (set-mark (point)))
- (goto-char (point-max))
- (search-backward "|")
- (delete-char 1)
- ,init
- (setq current-prefix-arg nil)
- ;; execute command
- ,@(mapcar (lambda (x)
- (cond ((equal x '(kbd "C-u"))
- `(setq current-prefix-arg (list 4)))
- ((or (stringp x)
- (and (listp x)
- (eq (car x) 'kbd)))
- `(objed-unalias ,x))
- (t x)))
- (list body))
- (let ((npos (point-marker)))
- (when objed--current-obj
- (goto-char (objed--end))
- (insert ">")
- (goto-char (objed--beg))
- (insert "<"))
- (goto-char npos)
- (skip-chars-backward "<" (1- (point)))
- (skip-chars-forward ">" (1+ (point)))
- (insert "|")
- (when (region-active-p)
- (exchange-point-and-mark)
- (insert "~")))
- (buffer-substring-no-properties
- (point-min)
- (point-max)))
- (objed--exit-objed)
- ;; reset for next test
- (setq last-command nil)
- (setq objed--last-states nil)
- (and (buffer-name temp-buffer)
- (kill-buffer temp-buffer)))))))
+ '(objed--init 'char)))
+ (body (if (stringp body) `(kbd ,body) body)))
+ `(let ((temp-buffer (generate-new-buffer " *temp*")))
+ (save-window-excursion
+ (unwind-protect
+ (progn
+ (switch-to-buffer temp-buffer)
+ (emacs-lisp-mode)
+ (transient-mark-mode 1)
+ (insert ,in)
+ (goto-char (point-min))
+ (when (search-forward "~" nil t)
+ (backward-delete-char 1)
+ (set-mark (point)))
+ (goto-char (point-max))
+ (search-backward "|")
+ (delete-char 1)
+ ,init
+ (setq current-prefix-arg nil)
+ ;; execute command
+ ,@(mapcar (lambda (x)
+ (cond ((equal x '(kbd "C-u"))
+ `(setq current-prefix-arg (list 4)))
+ ((or (stringp x)
+ (and (listp x)
+ (eq (car x) 'kbd)))
+ `(objed-unalias ,x))
+ (t x)))
+ (list body))
+ (let ((npos (point-marker)))
+ (when objed--current-obj
+ (goto-char (objed--end))
+ (insert ">")
+ (goto-char (objed--beg))
+ (insert "<"))
+ (goto-char npos)
+ (skip-chars-backward "<" (1- (point)))
+ (skip-chars-forward ">" (1+ (point)))
+ (insert "|")
+ (when (region-active-p)
+ (exchange-point-and-mark)
+ (insert "~")))
+ (buffer-substring-no-properties
+ (point-min)
+ (point-max)))
+ (objed--exit-objed)
+ ;; reset for next test
+ (setq last-command nil)
+ (setq objed--last-states nil)
+ (and (buffer-name temp-buffer)
+ (kill-buffer temp-buffer)))))))
+
+(defvar objed--count 1)
+
+(defun objed-get-test (file)
+ (let ((parsed nil))
+ (with-temp-buffer
+ (insert-file-contents file)
+ (goto-char (point-min))
+ (push (buffer-substring (line-beginning-position) (line-end-position))
+ parsed)
+ (search-forward ";;;;" nil t)
+ (forward-line 1)
+ (push (buffer-substring (point) (progn (search-forward ";;;;")
+ (forward-char -4)
+ (point)))
+ parsed)
+ (forward-line 1)
+ (push (buffer-substring (point)
+ (point-max))
+ parsed))
+ (nreverse parsed)))
+
+
+(defmacro objed-test (file)
+ (let* ((parsed (objed-get-test file))
+ (key (nth 0 parsed))
+ (str1 (nth 1 parsed))
+ (str2 (nth 2 parsed)))
+ ;; show data in ouput...
+ `(should (string= (objed-with ,str1 ,key nil ,file)
+ ,str2))))
+
+(defmacro objed-create-tests-for (dir)
+ (let ((files (directory-files (format "test/tests/%s" dir) t "^[^.]"))
+ (body nil))
+ (push 'progn body)
+ (dolist (file files)
+ (push `(objed-test ,file) body))
+ (nreverse body)))
+
+
;; needs to come first initializes, for tests, too
(ert-deftest objed-activate ()
- (should (string= (objed-with "Testing line he|re" "\C-a")
- "|<Testing line here>"))
- (should (string= (objed-with "Testing line he|re" (kbd "M-b"))
- "Testing line |<here>"))
- (should (string= (objed-with "Testing line he|re" (kbd "M-f"))
- "Testing line <here>|"))
- (should (string= (objed-with "Testing line he|re\nFollowing line here"
"\C-n")
- "Testing line here\n<Following line |here>"))
- (should (string= (objed-with "Testing line he|re"
(objed--call-object-interactively 'line))
- "|<Testing line here>"))
- (should (string= (objed-with "
-(defun objed--save-start-position (&rest _)
- \"Save position of| point via `objed--opoint'.\"
- (setq objed--opoint (point)))
-" (kbd "C-M-a"))
- "<
-|(defun objed--save-start-position (&rest _)
- \"Save position of point via `objed--opoint'.\"
- (setq objed--opoint (point)))
->")))
+ (objed-create-tests-for "activate")
+ ;; (should (string= (objed-with "Testing line he|re"
+ ;; (objed--call-object-interactively 'line))
+ ;; "|<Testing line here>"))
+ )
(ert-deftest objed-basic-movement ()
diff --git a/test/tests/activate/backward-word
b/test/tests/activate/backward-word
new file mode 100644
index 0000000..2887599
--- /dev/null
+++ b/test/tests/activate/backward-word
@@ -0,0 +1,5 @@
+M-b
+;;;;
+Testing line he|re
+;;;;
+Testing line |<here>
diff --git a/test/tests/activate/beginning-of-defun
b/test/tests/activate/beginning-of-defun
new file mode 100644
index 0000000..d11186b
--- /dev/null
+++ b/test/tests/activate/beginning-of-defun
@@ -0,0 +1,13 @@
+C-M-a
+;;;;
+
+(defun objed--save-start-position (&rest _)
+ "Save position of| point via `objed--opoint'."
+ (setq objed--opoint (point)))
+
+;;;;
+<
+|(defun objed--save-start-position (&rest _)
+ "Save position of point via `objed--opoint'."
+ (setq objed--opoint (point)))
+>
diff --git a/test/tests/activate/beginning-of-line
b/test/tests/activate/beginning-of-line
new file mode 100644
index 0000000..e0962b0
--- /dev/null
+++ b/test/tests/activate/beginning-of-line
@@ -0,0 +1,6 @@
+C-a
+;;;;
+Testing line he|re
+;;;;
+|<Testing line here
+>
\ No newline at end of file
diff --git a/test/tests/activate/forward-word b/test/tests/activate/forward-word
new file mode 100644
index 0000000..37f9586
--- /dev/null
+++ b/test/tests/activate/forward-word
@@ -0,0 +1,5 @@
+M-f
+;;;;
+Testing line he|re
+;;;;
+Testing line <here>|
diff --git a/test/tests/activate/next-line b/test/tests/activate/next-line
new file mode 100644
index 0000000..fa17c33
--- /dev/null
+++ b/test/tests/activate/next-line
@@ -0,0 +1,8 @@
+C-n
+;;;;
+Testing line he|re
+Following line here
+;;;;
+Testing line here
+<Following line |here
+>
\ No newline at end of file
- [elpa] externals/objed 15ea688 02/19: Fix markup, (continued)
- [elpa] externals/objed 15ea688 02/19: Fix markup, Clemens Radermacher, 2019/01/25
- [elpa] externals/objed a0c3a16 13/19: (Re)-adjust bindings, Clemens Radermacher, 2019/01/25
- [elpa] externals/objed c179aa4 05/19: Move all tests to test files, Clemens Radermacher, 2019/01/25
- [elpa] externals/objed 71aba6c 09/19: Simplify dir-locals notation, Clemens Radermacher, 2019/01/25
- [elpa] externals/objed 910cb7c 15/19: Further work on sexp object, Clemens Radermacher, 2019/01/25
- [elpa] externals/objed db3c6d0 06/19: Add option to pass major-mode for test, Clemens Radermacher, 2019/01/25
- [elpa] externals/objed 4bed548 11/19: Add additional binding for toggling state using ], Clemens Radermacher, 2019/01/25
- [elpa] externals/objed b74be32 03/19: Update install description, Clemens Radermacher, 2019/01/25
- [elpa] externals/objed 1e7b548 12/19: Reinit, to fix the case op exited objed unintended, Clemens Radermacher, 2019/01/25
- [elpa] externals/objed 7f874ca 01/19: Add copyright assignment notice, Clemens Radermacher, 2019/01/25
- [elpa] externals/objed 2f2d8bf 04/19: Starting to change testing,
Clemens Radermacher <=