branch: externals/phps-mode commit 1dd3bd3dbfba0a6d37627acd1579d450010d6900 Author: Christian Johansson <christ...@cvj.se> Commit: Christian Johansson <christ...@cvj.se>
More working on trying to get parser test working --- phps-mode-parser.el | 2 +- test/phps-mode-test-parser.el | 53 +++++++++++++++++++++++++++++++++++++------ 2 files changed, 47 insertions(+), 8 deletions(-) diff --git a/phps-mode-parser.el b/phps-mode-parser.el index bc5befb..f059b10 100644 --- a/phps-mode-parser.el +++ b/phps-mode-parser.el @@ -62,7 +62,7 @@ (defconst phps-mode-parser-lex-analyzer--function - (lambda (index) (save-current-buffer (set-buffer "*phps-mode-lex-analyzer*") (if (= (point) index) nil (goto-char index)) (phps-mode-lexer--re2c) (if (boundp 'phps-mode-lexer--generated-new-tokens) (progn (car (nreverse phps-mode-lexer--generated-new-tokens)))))) + (lambda (index) (save-current-buffer (set-buffer "*phps-mode-lex-analyzer*") (if (= (point) index) nil (goto-char index)) (message "Index: %S" index) (phps-mode-lexer--re2c) (if (boundp 'phps-mode-lexer--generated-new-tokens) (let ((first (car (nreverse phps-mode-lexer--generated-new-tokens)))) (when (or (equal (car first) 'T_OPEN_TAG) (equal (car first) 'T_OPEN_TAG_WITH_ECHO))(message "Skipping token: %S.. Going to %S" first (cdr (cdr first)))(goto-char (cdr (cdr first)))(setq phps-mo [...] "The lex-analyzer function.") (defconst diff --git a/test/phps-mode-test-parser.el b/test/phps-mode-test-parser.el index 28fa141..f3ce29a 100644 --- a/test/phps-mode-test-parser.el +++ b/test/phps-mode-test-parser.el @@ -25,19 +25,58 @@ ;;; Code: +(require 'ert) +(require 'phps-mode) +(require 'phps-mode-lexer) (require 'phps-mode-parser) +(defun phps-mode-test-parser--buffer-contentes (buffer-contents name logic) + (generate-new-buffer "*phps-mode-lex-analyzer*") + (with-current-buffer "*phps-mode-lex-analyzer*" + (kill-region (point-min) (point-max)) + (insert buffer-contents) + (message "Testing buffer '%S' with buffer-contents:\n%S\n" name (buffer-substring-no-properties (point-min) (point-max))) + + ;; Reset lexer + (setq + phps-mode-lexer--generated-tokens + nil) + (setq + phps-mode-lexer--state + 'ST_INITIAL) + (setq + phps-mode-lexer--states + nil) + (setq + phps-mode-lexer--state-stack + nil) + (setq + phps-mode-lexer--heredoc-label + nil) + (setq + phps-mode-lexer--heredoc-label-stack + nil) + (setq + phps-mode-lexer--nest-location-stack + nil) + + (funcall logic) + + (message "Passed %s" name))) + (defun phps-mode-test-parser() "Run test for lexer." (message "-- Running all tests for parser... --\n") - (with-temp-buffer - (insert "<?php echo 'hello';") - (should - (equal - nil - (phps-mode-parser-parse)))) - (message "Passed basic echo test") + (phps-mode-test-parser--buffer-contentes + "<?php echo 'hello';" + "Basic echo test" + (lambda() + (message "was here") + (should + (equal + t + (phps-mode-parser-parse))))) (message "\n-- Ran all tests for parser. --"))