fix latest mocker.el compat
This commit is contained in:
parent
dd1308c170
commit
5d76849737
|
@ -12,3 +12,4 @@ https://raw.githubusercontent.com/nashamri/spacemacs-theme/master/spacemacs-comm
|
|||
https://raw.githubusercontent.com/nashamri/spacemacs-theme/master/spacemacs-dark-theme.el core/libs/spacemacs-theme/spacemacs-dark-theme.el
|
||||
https://raw.githubusercontent.com/nashamri/spacemacs-theme/master/spacemacs-light-theme.el core/libs/spacemacs-theme/spacemacs-light-theme.el
|
||||
https://raw.githubusercontent.com/nashamri/spacemacs-theme/master/spacemacs-theme-pkg.el core/libs/spacemacs-theme/spacemacs-theme-pkg.el
|
||||
https://raw.githubusercontent.com/sigma/mocker.el/master/mocker.el core/libs/mocker.el
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
|
||||
;; Author: Yann Hodique <yann.hodique@gmail.com>
|
||||
;; Keywords: lisp, testing
|
||||
;; Version: 0.3.1
|
||||
;; Package-Requires: ((eieio "1.3") (el-x "0.2.4"))
|
||||
;; Version: 0.5.0
|
||||
;; Package-Requires: ((emacs "25.1"))
|
||||
|
||||
;; This file is free software; you can redistribute it and/or modify
|
||||
;; it under the terms of the GNU General Public License as published by
|
||||
|
@ -28,18 +28,10 @@
|
|||
|
||||
;;; Code:
|
||||
|
||||
(eval-when-compile
|
||||
(require 'cl))
|
||||
(require 'cl-lib)
|
||||
|
||||
(require 'eieio)
|
||||
|
||||
(eval-and-compile
|
||||
;; use dflet from el-x if available
|
||||
(if (require 'dflet nil t)
|
||||
(defalias 'mocker-flet 'dflet)
|
||||
;; fallback to regular flet, hoping it's still there
|
||||
(defalias 'mocker-flet 'flet)))
|
||||
|
||||
(defvar mocker-mock-default-record-cls 'mocker-record)
|
||||
|
||||
(put 'mocker-mock-error 'error-conditions '(mocker-mock-error error))
|
||||
|
@ -63,8 +55,8 @@
|
|||
(ordered :initarg :ordered :initform t)
|
||||
(records :initarg :records :initform nil :type list)))
|
||||
|
||||
(defmethod constructor :static ((mock mocker-mock) newname &rest args)
|
||||
(let* ((obj (call-next-method))
|
||||
(cl-defmethod make-instance ((mock (subclass mocker-mock)) newname &rest args)
|
||||
(let* ((obj (cl-call-next-method))
|
||||
(recs (oref obj :records))
|
||||
(func (oref obj :function)))
|
||||
(oset obj :orig-def (when (fboundp func) (symbol-function func)))
|
||||
|
@ -74,7 +66,7 @@
|
|||
recs)
|
||||
obj))
|
||||
|
||||
(defmethod mocker-add-record ((mock mocker-mock) &rest args)
|
||||
(cl-defmethod mocker-add-record ((mock mocker-mock) &rest args)
|
||||
(object-add-to-list mock :records
|
||||
(let ((cls mocker-mock-default-record-cls)
|
||||
(tmp (plist-get args :record-cls)))
|
||||
|
@ -87,7 +79,7 @@
|
|||
:-sym (make-symbol "unique") args))
|
||||
t))
|
||||
|
||||
(defmethod mocker-fail-mock ((mock mocker-mock) args)
|
||||
(cl-defmethod mocker-fail-mock ((mock mocker-mock) args)
|
||||
(signal 'mocker-mock-error
|
||||
(list (format (concat "Unexpected call to mock `%s'"
|
||||
" with input `%s'")
|
||||
|
@ -95,7 +87,7 @@
|
|||
|
||||
(defvar mocker-inhibit nil)
|
||||
|
||||
(defmethod mocker-run ((mock mocker-mock) &rest args)
|
||||
(cl-defmethod mocker-run ((mock mocker-mock) &rest args)
|
||||
(if (not mocker-inhibit)
|
||||
(let* ((mocker-inhibit t)
|
||||
(rec (mocker-find-active-record mock args))
|
||||
|
@ -108,7 +100,7 @@
|
|||
(mocker-fail-record rec args))))
|
||||
(apply (oref mock :orig-def) args)))
|
||||
|
||||
(defmethod mocker-find-active-record ((mock mocker-mock) args)
|
||||
(cl-defmethod mocker-find-active-record ((mock mocker-mock) args)
|
||||
(let ((first-match (lambda (pred seq)
|
||||
(let ((x nil))
|
||||
(while (and seq
|
||||
|
@ -139,7 +131,7 @@
|
|||
(oref mock :records))))
|
||||
rec)))
|
||||
|
||||
(defmethod mocker-verify ((mock mocker-mock))
|
||||
(cl-defmethod mocker-verify ((mock mocker-mock))
|
||||
(mapc #'(lambda (r) (when (and (oref r :-active)
|
||||
(< (oref r :-occurrences)
|
||||
(oref r :min-occur)))
|
||||
|
@ -163,8 +155,8 @@
|
|||
(-active :initarg :-active :initform t :protection :protected)
|
||||
(-sym :initarg :-sym)))
|
||||
|
||||
(defmethod constructor :static ((rec mocker-record-base) newname &rest args)
|
||||
(let* ((obj (call-next-method))
|
||||
(cl-defmethod make-instance ((rec (subclass mocker-record-base)) newname &rest args)
|
||||
(let* ((obj (cl-call-next-method))
|
||||
(occur (oref obj :occur)))
|
||||
(when occur
|
||||
(oset obj :min-occur (max (oref obj :min-occur)
|
||||
|
@ -174,10 +166,10 @@
|
|||
occur)))
|
||||
obj))
|
||||
|
||||
(defmethod mocker-read-record :static ((rec mocker-record-base) spec)
|
||||
(cl-defmethod mocker-read-record ((rec (subclass mocker-record-base)) spec)
|
||||
spec)
|
||||
|
||||
(defmethod mocker-use-record ((rec mocker-record-base))
|
||||
(cl-defmethod mocker-use-record ((rec mocker-record-base))
|
||||
(let ((max (oref rec :max-occur))
|
||||
(n (1+ (oref rec :-occurrences))))
|
||||
(oset rec :-occurrences n)
|
||||
|
@ -185,21 +177,21 @@
|
|||
(= n max))
|
||||
(oset rec :-active nil))))
|
||||
|
||||
(defmethod mocker-skip-record ((rec mocker-record-base) args)
|
||||
(cl-defmethod mocker-skip-record ((rec mocker-record-base) args)
|
||||
(if (>= (oref rec :-occurrences)
|
||||
(oref rec :min-occur))
|
||||
(oset rec :-active nil)
|
||||
(mocker-fail-record rec args)))
|
||||
|
||||
(defmethod mocker-test-record ((rec mocker-record-base) args)
|
||||
(cl-defmethod mocker-test-record ((rec mocker-record-base) args)
|
||||
(error "not implemented in base class"))
|
||||
|
||||
(defmethod mocker-run-record ((rec mocker-record-base) args)
|
||||
(cl-defmethod mocker-run-record ((rec mocker-record-base) args)
|
||||
(error "not implemented in base class"))
|
||||
|
||||
(defmethod mocker-get-record-expectations ((rec mocker-record-base)))
|
||||
(cl-defmethod mocker-get-record-expectations ((rec mocker-record-base)))
|
||||
|
||||
(defmethod mocker-fail-record ((rec mocker-record-base) args)
|
||||
(cl-defmethod mocker-fail-record ((rec mocker-record-base) args)
|
||||
(signal 'mocker-record-error
|
||||
(list (format (concat "Violated record while mocking `%s'."
|
||||
" Expected input like: %s, got: `%s' instead")
|
||||
|
@ -212,8 +204,8 @@
|
|||
((input :initarg :input :initform nil :type list)
|
||||
(input-matcher :initarg :input-matcher :initform nil)))
|
||||
|
||||
(defmethod constructor :static ((rec mocker-input-record) newname &rest args)
|
||||
(let* ((obj (call-next-method)))
|
||||
(cl-defmethod make-instance ((rec (subclass mocker-input-record)) newname &rest args)
|
||||
(let* ((obj (cl-call-next-method)))
|
||||
(when (or (not (slot-boundp obj :max-occur))
|
||||
(and (oref obj :max-occur)
|
||||
(< (oref obj :max-occur)
|
||||
|
@ -221,7 +213,7 @@
|
|||
(oset obj :max-occur (oref obj :min-occur)))
|
||||
obj))
|
||||
|
||||
(defmethod mocker-test-record ((rec mocker-input-record) args)
|
||||
(cl-defmethod mocker-test-record ((rec mocker-input-record) args)
|
||||
(let ((matcher (oref rec :input-matcher))
|
||||
(input (oref rec :input)))
|
||||
(cond (matcher
|
||||
|
@ -229,7 +221,7 @@
|
|||
(t
|
||||
(equal input args)))))
|
||||
|
||||
(defmethod mocker-get-record-expectations ((rec mocker-input-record))
|
||||
(cl-defmethod mocker-get-record-expectations ((rec mocker-input-record))
|
||||
(format "`%s'" (or (oref rec :input-matcher) (oref rec :input))))
|
||||
|
||||
;;; Mock record default object
|
||||
|
@ -237,7 +229,7 @@
|
|||
((output :initarg :output :initform nil)
|
||||
(output-generator :initarg :output-generator :initform nil)))
|
||||
|
||||
(defmethod mocker-run-record ((rec mocker-record) args)
|
||||
(cl-defmethod mocker-run-record ((rec mocker-record) args)
|
||||
(let ((generator (oref rec :output-generator))
|
||||
(output (oref rec :output)))
|
||||
(cond (generator
|
||||
|
@ -249,28 +241,28 @@
|
|||
(defclass mocker-stub-record (mocker-record-base)
|
||||
((output :initarg :output :initform nil)))
|
||||
|
||||
(defmethod constructor :static ((rec mocker-stub-record) newname &rest args)
|
||||
(let* ((obj (call-next-method)))
|
||||
(cl-defmethod make-instance ((rec (subclass mocker-stub-record)) newname &rest args)
|
||||
(let* ((obj (cl-call-next-method)))
|
||||
(unless (slot-boundp obj :min-occur)
|
||||
(oset obj :min-occur 0))
|
||||
(unless (slot-boundp obj :max-occur)
|
||||
(oset obj :max-occur nil))
|
||||
obj))
|
||||
|
||||
(defmethod mocker-test-record ((rec mocker-stub-record) args)
|
||||
(cl-defmethod mocker-test-record ((rec mocker-stub-record) args)
|
||||
t)
|
||||
|
||||
(defmethod mocker-run-record ((rec mocker-stub-record) args)
|
||||
(cl-defmethod mocker-run-record ((rec mocker-stub-record) args)
|
||||
(oref rec :output))
|
||||
|
||||
(defmethod mocker-get-record-expectations ((rec mocker-stub-record))
|
||||
(cl-defmethod mocker-get-record-expectations ((rec mocker-stub-record))
|
||||
"anything")
|
||||
|
||||
;;; Mock passthrough record
|
||||
(defclass mocker-passthrough-record (mocker-input-record)
|
||||
())
|
||||
|
||||
(defmethod mocker-run-record ((rec mocker-passthrough-record) args)
|
||||
(cl-defmethod mocker-run-record ((rec mocker-passthrough-record) args)
|
||||
(let* ((mock (oref rec :-mock))
|
||||
(def (oref mock :orig-def)))
|
||||
(when def
|
||||
|
@ -337,21 +329,21 @@ specialized mini-languages for specific record classes.
|
|||
(spec (oref mock :argspec))
|
||||
(call (or (and (member '&rest spec) 'apply)
|
||||
'funcall))
|
||||
(args (loop for el in spec
|
||||
(args (cl-loop for el in spec
|
||||
if (or (not (symbolp el))
|
||||
(not (equal
|
||||
(elt (symbol-name el) 0)
|
||||
?&)))
|
||||
collect el)))
|
||||
(list func
|
||||
spec
|
||||
`(,call #'mocker-run ,mock-sym ,@args))))
|
||||
(list `(symbol-function ',func)
|
||||
`(lambda ,spec
|
||||
(,call #'mocker-run ,mock-sym ,@args)))))
|
||||
mocks))
|
||||
(inits (mapcar #'(lambda (m)
|
||||
(cons 'progn
|
||||
(mapcar #'(lambda (rec)
|
||||
`(mocker-add-record ,(car m)
|
||||
,@rec))
|
||||
,@rec))
|
||||
(nth 2 m))))
|
||||
mocks))
|
||||
(verifs (mapcar #'(lambda (m)
|
||||
|
@ -360,8 +352,7 @@ specialized mini-languages for specific record classes.
|
|||
`(let (,@vars)
|
||||
,@inits
|
||||
(prog1
|
||||
,(macroexpand `(mocker-flet (,@specs)
|
||||
,@body))
|
||||
,(macroexpand `(cl-letf (,@specs) ,@body))
|
||||
,@verifs))))
|
||||
|
||||
(provide 'mocker)
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
(configuration-layer/discover-layers 'refresh-index)
|
||||
(configuration-layer//declare-used-layers dotspacemacs-configuration-layers)
|
||||
(should (eq 'spacemacs-bootstrap
|
||||
(first configuration-layer--used-layers)))))
|
||||
(car configuration-layer--used-layers)))))
|
||||
|
||||
(ert-deftest test-declare-layers--defaults-layer-is-second-for-base-distribution ()
|
||||
(let ((dotspacemacs-distribution 'spacemacs-base)
|
||||
|
@ -33,7 +33,7 @@
|
|||
(configuration-layer--indexed-layers (make-hash-table :size 1024)))
|
||||
(configuration-layer/discover-layers 'refresh-index)
|
||||
(configuration-layer//declare-used-layers dotspacemacs-configuration-layers)
|
||||
(should (eq 'spacemacs-defaults (second configuration-layer--used-layers)))))
|
||||
(should (eq 'spacemacs-defaults (cadr configuration-layer--used-layers)))))
|
||||
|
||||
(ert-deftest test-declare-layers--base-layer-is-third-for-base-distribution ()
|
||||
(let ((dotspacemacs-distribution 'spacemacs-base)
|
||||
|
@ -43,7 +43,7 @@
|
|||
(configuration-layer--indexed-layers (make-hash-table :size 1024)))
|
||||
(configuration-layer/discover-layers 'refresh-index)
|
||||
(configuration-layer//declare-used-layers dotspacemacs-configuration-layers)
|
||||
(should (eq 'spacemacs-base (third configuration-layer--used-layers)))))
|
||||
(should (eq 'spacemacs-base (caddr configuration-layer--used-layers)))))
|
||||
|
||||
;; ---------------------------------------------------------------------------
|
||||
;; configuration-layer//stable-elpa-verify-archive
|
||||
|
|
Loading…
Reference in New Issue