From: Joao Tavora Date: Tue, 31 Dec 2013 15:33:20 +0000 (+0000) Subject: Add Travis CI and update tests. Start a Changelog. X-Git-Url: https://code.delx.au/gnu-emacs-elpa/commitdiff_plain/12b7f82dd8cdac4dc577b6a0b6a91b71b1e61142 Add Travis CI and update tests. Start a Changelog. * .travis.yml: new file * README.mdown: Add Travis CI badge. * Rakefile: use ert-run-tests-batch-and-exit. * yasnippet-tests.el (example-for-issue-404-external-emacs): Use `yas-with-snippet-dirs' to not depend on bundled snippets. (yas--call-with-temporary-redefinitions): Use `cl-labels' since no cl-flet in emacs-24.3's cl-lib.el. (loading-with-cyclic-parenthood): prog-mode doesn't exist in emacs 24.3. (yas-batch-run-tests): remove it. * yasnippet.el (require): require cl-lib during byte-compilation and load. --- diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..83990f6d1 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,23 @@ +language: emacs +before_install: + - echo -e "\ndeb http://us.archive.ubuntu.com/ubuntu raring universe multiverse main" | sudo tee -a /etc/apt/sources.list + - echo -e "\ndeb http://emacs.naquadah.org/ stable/" | sudo tee -a /etc/apt/sources.list + - echo -e "\ndeb-src http://emacs.naquadah.org/ stable/" | sudo tee -a /etc/apt/sources.list + - cat /etc/apt/sources.list + - wget -q -O - http://emacs.naquadah.org/key.gpg | sudo apt-key add - + - sudo apt-get update +install: + - sudo apt-get install emacs + - sudo apt-get -t raring install libgnutls26 + - sudo apt-get install emacs-snapshot-nox + - curl -O https://raw.github.com/ohler/ert/c619b56c5bc6a866e33787489545b87d79973205/lisp/emacs-lisp/ert.el + - curl -O https://raw.github.com/ohler/ert/c619b56c5bc6a866e33787489545b87d79973205/lisp/emacs-lisp/ert-x.el + - curl -o cl-lib.el http://elpa.gnu.org/packages/cl-lib-0.3.el +before_script: +script: + - export EMACS=emacs; rm *.elc; rake compile; rake tests + - rm ert*.el; rm cl-lib.el + - export EMACS=emacs-snapshot; rm *.elc; rake compile; rake tests +notifications: + email: + - joaotavora@gmail.com diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 000000000..483f2ac3d --- /dev/null +++ b/ChangeLog @@ -0,0 +1,18 @@ +2013-12-31 João Távora + + * yasnippet.el (require): require cl-lib during byte-compilation + and load. + + * yasnippet-tests.el (example-for-issue-404-external-emacs): Use + `yas-with-snippet-dirs' to not depend on bundled snippets. + (yas--call-with-temporary-redefinitions): Use `cl-labels' since no + cl-flet in emacs-24.3's cl-lib.el. + (loading-with-cyclic-parenthood): prog-mode doesn't exist in emacs + 24.3. + (yas-batch-run-tests): remove it. + + * Rakefile: use ert-run-tests-batch-and-exit. + + * README.mdown: Add Travis CI badge. + + * .travis.yml: new file diff --git a/README.mdown b/README.mdown index da6128423..4a8d597c0 100644 --- a/README.mdown +++ b/README.mdown @@ -1,3 +1,5 @@ +[![Build Status](https://travis-ci.org/capitaomorte/yasnippet.png)](https://travis-ci.org/capitaomorte/yasnippet) + # Intro **YASnippet** is a template system for Emacs. It allows you to diff --git a/Rakefile b/Rakefile index efbea56c5..2965eb9d5 100644 --- a/Rakefile +++ b/Rakefile @@ -16,9 +16,8 @@ FileUtils.mkdir_p('pkg') desc "run tests in batch mode" task :tests do - batch_run_line = "(yas-batch-run-tests t)" - sh "#{$EMACS} -Q -L . -l yasnippet-tests.el -nw" + - " --batch --eval '#{batch_run_line}'" + sh "#{$EMACS} -Q -L . -l yasnippet-tests.el" + + " --batch -f ert-run-tests-batch-and-exit" end desc "create a release package" diff --git a/yasnippet-tests.el b/yasnippet-tests.el index 4e2f1bc06..d2f3c2cae 100644 --- a/yasnippet-tests.el +++ b/yasnippet-tests.el @@ -229,20 +229,26 @@ (insert (pp-to-string `(condition-case _ (progn - (require 'yasnippet) - (yas-global-mode) - (switch-to-buffer "foo.c") - (c-mode) - (insert "#include \nmain") - (setq yas-good-grace nil) - (yas-expand) - (kill-emacs 0)) + (require 'yasnippet-tests) + (yas-with-snippet-dirs + '((".emacs.d/snippets" + ("c-mode" + ("main" . "int main ()")))) + (yas-global-mode) + (switch-to-buffer "foo.c") + (c-mode) + (insert "#include \nmain") + (setq yas-good-grace nil) + (yas-expand) + (should (string= (buffer-string) + "#include \nint main ()")) + (kill-emacs 0))) (error (kill-emacs -1))))) (write-file fixture-el-file)) (should (= 0 (call-process (concat invocation-directory invocation-name) nil nil nil - "-Q" ;; "--batch" + "-Q" "--batch" "-L" "." "-l" fixture-el-file))))) (ert-deftest middle-of-buffer-snippet-insertion () @@ -325,10 +331,10 @@ TODO: correct this bug!" ;; saving all definitions before overriding anything ensures FDEFINITION ;; errors don't cause accidental permanent redefinitions. ;; - (cl-flet ((set-fdefinitions (names functions) - (loop for name in names - for fn in functions - do (fset name fn)))) + (cl-labels ((set-fdefinitions (names functions) + (loop for name in names + for fn in functions + do (fset name fn)))) (set-fdefinitions definition-names overriding-functions) (unwind-protect (funcall function) (set-fdefinitions definition-names saved-functions))))) @@ -409,12 +415,14 @@ TODO: correct this bug!" (yas-reload-all) (with-temp-buffer (let* ((major-mode 'c-mode) - (expected '(c-mode + (expected `(c-mode cc-mode yet-another-c-mode and-also-this-one and-that-one - prog-mode + ;; prog-mode doesn't exit in emacs 24.3 + ,@(if (fboundp 'prog-mode) + '(prog-mode)) emacs-lisp-mode lisp-interaction-mode)) (observed (yas--modes-to-activate))) @@ -627,15 +635,6 @@ add the snippets associated with the given mode." ;;; Helpers ;;; -(defun yas-batch-run-tests (&optional also-external) - (interactive) - (with-temp-buffer - (yas--with-temporary-redefinitions - ((message (&rest _args) nil)) - (ert (or (and also-external t) - '(not (tag :external))) (buffer-name (current-buffer))) - (princ (buffer-string))))) - (defun yas-should-expand (keys-and-expansions) (dolist (key-and-expansion keys-and-expansions) (yas-exit-all-snippets) diff --git a/yasnippet.el b/yasnippet.el index 9348590d3..98ace6a7c 100644 --- a/yasnippet.el +++ b/yasnippet.el @@ -130,6 +130,8 @@ ;;; Code: (require 'cl) +(eval-and-compile + (require 'cl-lib)) (require 'easymenu) (require 'help-mode)