emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/assess 7a3189a587 86/95: Remove types and replace with


From: ELPA Syncer
Subject: [elpa] externals/assess 7a3189a587 86/95: Remove types and replace with convertors
Date: Tue, 19 Jul 2022 15:57:36 -0400 (EDT)

branch: externals/assess
commit 7a3189a5870fb20d179ff3ea761707a046814966
Author: Phillip Lord <phillip.lord@russet.org.uk>
Commit: Phillip Lord <phillip.lord@russet.org.uk>

    Remove types and replace with convertors
    
    "Types" were a nice idea, but in the end were just complicating
    things, for little gain. We now convert into strings where needed.
---
 .travis.yml         |   4 ++
 Makefile            |   6 +--
 assess.el           | 135 +++++++++++++++++++++-------------------------------
 test/assess-test.el | 105 +++++++++++++++++++---------------------
 4 files changed, 110 insertions(+), 140 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index c4dfc6c8c8..3571992cdf 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -7,6 +7,10 @@ env:
  - EVM_EMACS=emacs-24.4-travis
  - EVM_EMACS=emacs-24.5-travis
  - EVM_EMACS=emacs-25.1-travis
+ - EVM_EMACS=emacs-25.2-travis
+ - EVM_EMACS=emacs-25.3-travis
+ - EVM_EMACS=emacs-26-pretest-travis
+ - EVM_EMACS=emacs-git-snapshot-travis
 install:
   - curl -fsSkL https://gist.github.com/rejeep/ebcd57c3af83b049833b/raw > 
travis.sh && source ./travis.sh
   - evm install $EVM_EMACS --use --skip
diff --git a/Makefile b/Makefile
index aff2ae3970..a95e173daa 100644
--- a/Makefile
+++ b/Makefile
@@ -21,7 +21,7 @@ just-test:
        $(EMACS_ENV) $(CASK) emacs --batch -q \
        --directory=. \
        --load assess-discover.el \
-       --funcall assess-discover-run-and-exit-batch
+       --eval '(assess-discover-run-and-exit-batch t)'
 
 .PHONY: test dist
 
@@ -30,8 +30,8 @@ export:
 
 multi-test:
        make EMACS=$(EMACSES)/master/src/emacs test
-       make EMACS=$(EMACSES)/emacs-25/src/emacs test
-       make EMACS=$(EMACSES)/emacs-25.1/src/emacs test
+       make EMACS=$(EMACSES)/emacs-26.1/src/emacs test
+       make EMACS=$(EMACSES)/emacs-25.3/src/emacs test
        make EMACS=$(EMACSES)/emacs-24.5/src/emacs test
        make EMACS=$(EMACSES)/emacs-24.4/src/emacs test
        make EMACS=$(EMACSES)/emacs-24.3/src/emacs test
diff --git a/assess.el b/assess.el
index e084e218f4..8ef1ae5799 100644
--- a/assess.el
+++ b/assess.el
@@ -242,42 +242,31 @@ effectively, placed within an impicit `progn'."
   "Insert X in a type-appropriate way into a temp buffer and eval
 BODY there.
 
-See `assess-to-string' for the meaning of type-appropriate."
+See `assess-ensure-string' for the meaning of type-appropriate."
   (declare (indent 1) (debug t))
   `(with-temp-buffer
-     (insert (assess-to-string ,x))
+     (insert (assess-ensure-string ,x))
      ,@body))
 ;; #+end_src
 
-;; ** Types
+;; ** Converters
 
-;; Many tests on files or buffers actually end up being string comparison.
-;; In many cases, we want to compare the *contents* of a buffer to, for 
example,
-;; the *contents* of a file.
-
-;; Emacs normally uses strings to represent files (i.e. file names) and can 
also
-;; use them to represent buffers (i.e. buffer names). So, here, we introduce a
-;; set of "types" where so that we can distinguish between strings, buffer 
names
-;; and file names, passing them at a single parameter. This will allow us to 
make
-;; later parts of the API use overloaded methods based on their type.
-
-;; "Types" are either a Emacs core type (as with buffers and strings), or an 2
-;; element list (I haven't used cons cells in case I want to add more 
elements),
-;; with a keyword at the head. This allows assess to distinguish between a
-;; simple string and a file or buffer name.
+;; The majority of test functionality compares strings. We provide
+;; here some functions to convert between other Emacs types and
+;; strings.
 
 ;; #+begin_src elisp
-;; ;; Identify "~/.emacs" as a file name
+;; ;; Return a string of the contents of .emacs
 ;; (assess-file "~/.emacs")
 
-;; ;; Identify "*Messages*" as a buffer
+;; ;; Return the contents of the buffer with name *Messages*
 ;; (assess-buffer "*Messages*")
 ;; #+end_src
 
 ;; *** Implementation
 
 ;; #+begin_src emacs-lisp
-(defun assess-to-string (x)
+(defun assess-ensure-string (x)
   "Turn X into a string in a type appropriate way.
 
 If X is identified as a file, returns the file contents.
@@ -286,34 +275,22 @@ If X is a string, returns that.
 
 See also `assess-buffer' and `assess-file' which turn a
 string into something that will identified appropriately."
-  (pcase x
-    ((pred stringp) x)
-    ((pred bufferp) (m-buffer-at-string x))
-    (`(:buffer ,b) (assess-to-string (get-buffer-create b)))
-    (`(:file ,f)
-     (with-temp-buffer
-       (insert-file-contents f)
-       (buffer-string)))
-    ;; error condition
-    (_ (error "Type not recognised"))))
-
-(defun assess-buffer (b)
-  "Add type data to the string B marking it as a buffer."
-  `(:buffer ,b))
+  (cond
+   ((stringp x) x)
+   ((bufferp x) (m-buffer-at-string x))
+   (t (error "Type not recognised"))))
+
+(defalias 'assess-buffer 'get-buffer-create
+  "Create a buffer.
+
+This is now an alias for `get-buffer-create' but used to do
+  something quite different.")
 
 (defun assess-file (f)
-  "Add type data to the string F marking it as a file."
-  `(:file ,f))
-
-(defun assess-to-file-name (file)
-  "Return file name for FILE.
-
-FILE can be either a string, or a plist returned by
-`assess-file' or `assess-make-related-file'."
-  (pcase file
-    ((pred stringp) file)
-    (`(:file ,f) f)
-    (_ (error "Type not recognised"))))
+  "Convert a file to the string contents of that file."
+  (with-temp-buffer
+    (insert-file-contents f)
+    (buffer-string)))
 ;; #+end_src
 
 ;; ** Entity Comparison
@@ -482,16 +459,16 @@ contents and so on.
 
 Text properties in strings or buffers are ignored."
   (string=
-   (assess-to-string a)
-   (assess-to-string b)))
+   (assess-ensure-string a)
+   (assess-ensure-string b)))
 
 (defun assess-explain= (a b)
   "Compare A and B and return an explanation.
 
 This function is called by ERT as an explainer function
 automatically. See `assess=' for more information."
-  (let ((a (assess-to-string a))
-        (b (assess-to-string b)))
+  (let ((a (assess-ensure-string a))
+        (b (assess-ensure-string b)))
     (cond
      ((assess= a b)
       t)
@@ -565,12 +542,10 @@ the same file extension.
 
 This is useful for making test changes to FILE without actually
 altering it."
-  (let* ((file (assess-to-file-name file))
-         (related-file
+  (let* ((related-file
           (assess--make-related-file-1 file directory)))
     (copy-file file related-file t)
-    (assess-file
-     related-file)))
+    related-file))
 
 (defmacro assess-with-find-file (file &rest body)
   "Open FILE and evaluate BODY in resultant buffer.
@@ -583,17 +558,14 @@ unconditionally, even if the buffer has changed.
 See also `assess-make-related-file'."
   (declare (debug t) (indent 1))
   (let ((temp-buffer (make-symbol "temp-buffer"))
-        (file-has-buffer-p (make-symbol "file-has-buffer-p"))
-        (file-s (make-symbol "file")))
-    `(let* ((,file-s ,file)
-            (,file-s (assess-to-file-name ,file-s))
-            (,file-has-buffer-p
-             (find-buffer-visiting ,file-s))
+        (file-has-buffer-p (make-symbol "file-has-buffer-p")))
+    `(let* ((,file-has-buffer-p
+             (find-buffer-visiting ,file))
             (,temp-buffer))
        (unwind-protect
            (with-current-buffer
                (setq ,temp-buffer
-                     (find-file-noselect ,file-s))
+                     (find-file-noselect ,file))
              ,@body)
          (when
           ;; kill the buffer unless it was already open.
@@ -773,24 +745,25 @@ for change."
 
 ;; #+begin_src emacs-lisp
 (defun assess--indent-buffer (&optional column)
-  (cond
-   (column
-    (indent-region (point-min) (point-max) column))
-   ;; if indent-region-function is set, use it, and hope that it is not
-   ;; noisy.
-   (indent-region-function
-    (funcall indent-region-function (point-min) (point-max)))
-   (t
-    (seq-map
-     (lambda (m)
-       (goto-char m)
-       (indent-according-to-mode))
-     (m-buffer-match-line-start (current-buffer))))))
+  (let ((inhibit-message t))
+    (cond
+     (column
+      (indent-region (point-min) (point-max) column))
+     ;; if indent-region-function is set, use it, and hope that it is not
+     ;; noisy.
+     (indent-region-function
+      (funcall indent-region-function (point-min) (point-max)))
+     (t
+      (seq-map
+       (lambda (m)
+         (goto-char m)
+         (indent-according-to-mode))
+       (m-buffer-match-line-start (current-buffer)))))))
 
 (defun assess--indent-in-mode (mode unindented)
   (with-temp-buffer
     (insert
-     (assess-to-string unindented))
+     (assess-ensure-string unindented))
     (funcall mode)
     (assess--indent-buffer)
     (buffer-string)))
@@ -802,7 +775,7 @@ for change."
 (defun assess-indentation= (mode unindented indented)
   "Return non-nil if UNINDENTED indents in MODE to INDENTED.
 Both UNINDENTED and INDENTED can be any value usable by
-`assess-to-string'. Indentation is performed using
+`assess-ensure-string'. Indentation is performed using
 `indent-region', which MODE should set up appropriately.
 
 See also `assess-file-roundtrip-indentation=' for an
@@ -838,7 +811,7 @@ alternative mechanism."
              mode
              (progn
                (insert
-                (assess-to-string indented))
+                (assess-ensure-string indented))
                (assess--buffer-unindent (current-buffer))
                (buffer-string))
              indented)))
@@ -878,7 +851,7 @@ mechanisms of checking indentation."
      (assess--buffer-unindent (current-buffer))
      (assess--indent-buffer)
      (buffer-string))
-   file))
+   (assess-file file)))
 
 (defun assess-file-roundtrip-indentation= (file)
   "Return t if text in FILE is indented correctly.
@@ -1093,7 +1066,7 @@ the copy of FILE will be in a different directory."
 
 (defun assess--face-at=-1 (x mode locations faces property throw-on-nil)
   (with-temp-buffer
-    (insert (assess-to-string x))
+    (insert (assess-ensure-string x))
     (funcall mode)
     (font-lock-fontify-buffer)
     (assess--face-at= (current-buffer) locations faces property throw-on-nil)))
@@ -1110,7 +1083,7 @@ match data, then each the beginning and end of each match 
are
 tested against each face.
 
 X can be a buffer, file name or string -- see
-`assess-to-string' for details.
+`assess-ensure-string' for details.
 
 MODE is the major mode with which to fontify X -- actually, it
 will just be a function called to initialize the buffer.
@@ -1124,7 +1097,7 @@ FACES can be one or more faces.
 
 PROPERTY is the text property on which to check the faces.
 
-See also `assess-to-string' for treatment of the parameter X.
+See also `assess-ensure-string' for treatment of the parameter X.
 
 See `assess-file-face-at=' for a similar function which
 operates over files and takes the mode from that file."
diff --git a/test/assess-test.el b/test/assess-test.el
index ecd4fb2dcf..4bc06abf53 100644
--- a/test/assess-test.el
+++ b/test/assess-test.el
@@ -44,16 +44,18 @@
    (ert-test-result-with-condition-condition result)))
 
 (ert-deftest plist-extraction ()
-  (should
-   (equal
-    (assess-test--plist-from-result
-     (ert-run-test
-      (make-ert-test
-       :body
-       (lambda ()
-         (should
-          (eq 1 2))))))
-    '(:form (eq 1 2) :value nil))))
+  (let ((tmp
+         (assess-test--plist-from-result
+          (ert-run-test
+           (make-ert-test
+            :body
+            (lambda ()
+              (should
+               (eq 1 2))))))))
+    (should
+     (equal
+      tmp
+      '(:form (eq 1 2) :value nil)))))
 
 (defun assess-test--explanation-from-result (result)
   (plist-get
@@ -63,14 +65,15 @@
 (ert-deftest explanation-extraction-from-result ()
   "Test that explanation is extractable from failing test.
 This also tests the advice on string=."
-  (should
-   (assess-test--explanation-from-result
-    (ert-run-test
-     (make-ert-test
-      :body
-      (lambda ()
-        (should
-         (assess= "1" "2"))))))))
+  (let ((tmp
+         (ert-run-test
+          (make-ert-test
+           :body
+           (lambda ()
+             (should
+              (assess= "1" "2")))))))
+    (should
+     (assess-test--explanation-from-result tmp))))
 
 (defun assess-test--explanation (f)
   (assess-test--explanation-from-result
@@ -88,39 +91,29 @@ This also tests the advice on string=."
        (assess= "1" "2"))))))
 ;; #+end_src
 
-;; ** To-String testing
+;; ** Ensure-String testing
 
 ;; #+begin_src emacs-lisp
 (defvar assess-test-hello.txt
-  (assess-file
-   (relative-expand-file-name "../dev-resources/hello.txt")))
+  (relative-expand-file-name "../dev-resources/hello.txt"))
 
-(ert-deftest to-string ()
+(ert-deftest ensure-string ()
   (should
    (equal "hello"
-          (assess-to-string "hello")))
-  (should
-   (with-temp-buffer
-     (equal "hello"
-            (progn
-              (insert "hello")
-              (assess-to-string (current-buffer))))))
+          (assess-ensure-string "hello")))
   (should
    (with-temp-buffer
      (equal "hello"
             (progn
               (insert "hello")
-              (assess-to-string
-               (list
-                :buffer
-                (buffer-name (current-buffer))))))))
+              (assess-ensure-string (current-buffer))))))
   (should
    (with-temp-buffer
      (equal "hello\n"
-            (assess-to-string
-             assess-test-hello.txt))))
+            (assess-ensure-string
+             (assess-file assess-test-hello.txt)))))
   (should-error
-   (assess-to-string :hello)))
+   (assess-ensure-string :hello)))
 
 ;; #+end_src
 
@@ -191,18 +184,20 @@ This also tests the advice on string=."
 (ert-deftest file-string= ()
   (should
    (assess=
-    assess-test-hello.txt
+    (assess-file
+     assess-test-hello.txt)
     "hello\n"))
   (should-not
    (assess=
-    assess-test-hello.txt
+    (assess-file assess-test-hello.txt)
     "goodbye"))
   (should
    (assess-test--explanation
     (lambda ()
       (should
        (assess=
-        assess-test-hello.txt
+        (assess-file
+         assess-test-hello.txt)
         "goodbye"))))))
 
 
@@ -269,12 +264,12 @@ This also tests the advice on string=."
 (ert-deftest assess-test-related-file ()
   (should
    (file-exists-p
-    (assess-to-file-name
-     (assess-make-related-file assess-test-hello.txt))))
+    (assess-make-related-file assess-test-hello.txt)))
   (should
    (assess=
-    assess-test-hello.txt
-    (assess-make-related-file assess-test-hello.txt))))
+    (assess-file assess-test-hello.txt)
+    (assess-file
+     (assess-make-related-file assess-test-hello.txt)))))
 
 (ert-deftest assess-test-with-find-file ()
   (should
@@ -384,24 +379,22 @@ This also tests the advice on string=."
   (relative-expand-file-name "../dev-resources/"))
 
 (defvar assess-dev-elisp-indented
-  (assess-file
-   (concat assess-dev-resources
-           "elisp-indented.el")))
+  (concat assess-dev-resources
+          "elisp-indented.el"))
 
 (defvar assess-dev-elisp-unindented
-  (assess-file
-   (concat assess-dev-resources
-           "elisp-unindented.el")))
+  (concat assess-dev-resources
+          "elisp-unindented.el"))
 
 (ert-deftest assess-test-roundtrip-indentation= ()
   (should
    (assess-roundtrip-indentation=
     'emacs-lisp-mode
-    assess-dev-elisp-indented))
+    (assess-file assess-dev-elisp-indented)))
   (should-not
    (assess-roundtrip-indentation=
     'emacs-lisp-mode
-    assess-dev-elisp-unindented)))
+    (assess-file assess-dev-elisp-unindented))))
 
 (ert-deftest assess-test-roundtrip-indentation-explain= ()
   (should
@@ -410,7 +403,7 @@ This also tests the advice on string=."
       (should
        (assess-roundtrip-indentation=
         'emacs-lisp-mode
-        assess-dev-elisp-unindented))))))
+        (assess-file assess-dev-elisp-unindented)))))))
 
 (ert-deftest assess-test-file-roundtrip-indentation= ()
   (should
@@ -430,9 +423,8 @@ This also tests the advice on string=."
 
 ;; ** Face Tests
 (defvar assess-dev-elisp-fontified
-  (assess-file
-   (concat assess-dev-resources
-           "elisp-fontified.el")))
+  (concat assess-dev-resources
+          "elisp-fontified.el"))
 
 (ert-deftest assess-test-face-at-simple ()
   (should
@@ -530,7 +522,8 @@ This also tests the advice on string=."
    (assess-face-at= "foo bar" 'fundamental-mode
                     "bar" 'font-lock-type-face))
   (should-not
-   (assess-face-at= "def" 'python-mode "def" nil)))
+   (let ((inhibit-message t))
+     (assess-face-at= "def" 'python-mode "def" nil))))
 
 ;; https://github.com/phillord/assess/issues/5
 (ert-deftest issue-5-test-example ()



reply via email to

[Prev in Thread] Current Thread [Next in Thread]