From 4604deab398ec1d04c57f3cdce7fc4a96ebb6f2b Mon Sep 17 00:00:00 2001 From: Mikael Kermorgant Date: Fri, 22 Feb 2019 10:09:40 +0200 Subject: [PATCH] buttercup first tests with linked changes in phactor.el add travis conf in order to run buttercup tests test phpactor installation test phpactor-get-working-dir (remove unused phpactor-working-dir variable) test phpactor--lisp-directory and add a fix for it --- .travis.yml | 38 ++++++++++++++++++++++++++++++++++ Cask | 3 ++- phpactor.el | 18 +++++----------- tests/e2e/test-sanity.el | 44 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 89 insertions(+), 14 deletions(-) create mode 100644 .travis.yml create mode 100644 tests/e2e/test-sanity.el diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..28455d1 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,38 @@ +# matrix: +# include: +# - language: emacs-lisp +# sudo: no +# env: +# - EVM_EMACS=emacs-25.1-travis +# before_install: +# - curl -fsSkL https://gist.github.com/rejeep/ebcd57c3af83b049833b/raw > travis.sh && source ./travis.sh +# - evm install "$EVM_EMACS" --use --skip +# install: +# - cask --debug --verbose +# script: +# - cask exec buttercup -L . -p phpactor-install-or-update +# - cd ~/.emacs.d/phpactor && composer install --no-dev +# - cd - + +# - language: php +# php: +# - 7.2 +# script: +# - cd ~/.emacs.d/phpactor && composer install --no-dev + +language: php +php: + - 7.1 +sudo: no +env: + - EVM_EMACS=emacs-25.1-travis +before_install: + - curl -fsSkL https://gist.github.com/rejeep/ebcd57c3af83b049833b/raw > travis.sh && source ./travis.sh + - evm install "$EVM_EMACS" --use --skip +install: + - cask --debug --verbose +script: + - cask exec buttercup -L . + # - cask exec buttercup -L . -p phpactor-install-or-update # running only this test prepares ./emacs.d/phpactor folder + # - cd ~/.emacs.d/phpactor && composer install --no-dev + # - cd - && cask exec buttercup -L . diff --git a/Cask b/Cask index c681d79..47579e8 100644 --- a/Cask +++ b/Cask @@ -1,9 +1,10 @@ (package "phpactor" "0.1.0" "Interface to Phpactor") (source melpa) +(source gnu) (package-file "phpactor.el") (package-file "company-phpactor.el") (development (depends-on "php-mode") - (depends-on "auto-complete")) + (depends-on "buttercup")) diff --git a/phpactor.el b/phpactor.el index 7338065..ca345cd 100644 --- a/phpactor.el +++ b/phpactor.el @@ -78,15 +78,6 @@ #'(lambda (v) (if (consp v) (and (eq 'root (car v)) (stringp (cdr v))) (or (null v) (stringp v)))))) -;;;###autoload -(progn - (defvar phpactor-working-dir nil - "Path to working directory for Phpactor.") - (make-variable-buffer-local 'phpactor-working-dir) - (put 'phpactor-executable 'safe-local-variable - #'(lambda (v) (if (consp v) - (and (eq 'root (car v)) (stringp (cdr v))) - (or (null v) (stringp v)))))) (defvar phpactor--debug nil) (defvar phpactor-history-size 100) @@ -105,7 +96,7 @@ lib-dir) (if (and byte-compiled-dir (file-directory-p byte-compiled-dir)) (file-name-directory byte-compiled-dir) - (setq lib-dir (locate-library "phpactor.el")) + (setq lib-dir (file-name-directory (locate-library "phpactor.el"))) (when (and lib-dir (file-directory-p lib-dir)) (file-name-directory lib-dir)))) "Path to phpactor.el installed directory. @@ -156,14 +147,15 @@ of GitHub.") (php-runtime-quote-string (concat directory file)) (php-runtime-quote-string (concat phpactor-install-directory file))) do (php-runtime-expr code)) - (composer nil "install" "--no-dev"))) + (composer nil "install" "--no-dev") + ;; (call-process "composer" nil t nil "install" "--no-dev") + )) (defalias 'phpactor-update #'phpactor-install-or-update) (defun phpactor-get-working-dir () "Return working directory of Phpactor." (directory-file-name - (expand-file-name - (or phpactor-working-dir (php-project-get-root-dir))))) + (expand-file-name (php-project-get-root-dir)))) (defun phpactor--expand-local-file-name (name) "Expand file name by `NAME'." diff --git a/tests/e2e/test-sanity.el b/tests/e2e/test-sanity.el new file mode 100644 index 0000000..9c8f34f --- /dev/null +++ b/tests/e2e/test-sanity.el @@ -0,0 +1,44 @@ +(require 'phpactor) + +(defun buffer-string* (buffer) + (with-current-buffer buffer + (buffer-substring-no-properties (point-min) (point-max) ))) + +(describe "var: `phpactor-history-size'" + (it "should have default value" + (expect phpactor-history-size :to-be 100) + )) + +(describe "var: `phpactor-install-directory'" + (it "should have some value" + (display-warning 'buttercup (format "phpactor install folder is : %s" phpactor-install-directory)) + (expect phpactor-install-directory :not :to-be nil) + )) + +(describe ": `phpactor--lisp-directory'" ;; I prefer having a test as I'm not that really fine with it being nil + (it "should have some value" + (display-warning 'buttercup (format "phpactor lisp folder is : %s" phpactor--lisp-directory)) + (expect phpactor--lisp-directory :not :to-be nil) +)) + +(describe "defun: `phpactor-install-or-update'" + (it "should find phpactor installed under phpactor-install-directory :" + (let ((timeout-duration 300)) + (phpactor-install-or-update) + (with-timeout + (timeout-duration (display-warning 'buttercup (format "Error : timeout waiting %s seconds for composer install to finish" timeout-duration))) + (while (not (file-exists-p (f-join phpactor-install-directory "vendor/bin/phpactor"))) + (sleep-for 1))) + (expect (phpactor-find-executable) :to-equal (f-join phpactor-install-directory "vendor/bin/phpactor")) + ))) + +(describe "defun: `phpactor-get-working-dir'" + (it "should rely on php-project" + (spy-on 'php-project-get-root-dir :and-call-through) + ;; (display-warning 'buttercup (format "phpactor-working-dir is : %s" phpactor-working-dir)) + (with-current-buffer (find-file "tests/src/Book.php") + ;; (message "phpactor-working-dir is : %s" (php-project-get-root-dir)) + (phpactor-get-working-dir) + (expect 'php-project-get-root-dir :to-have-been-called) + ) + ))