123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- ;;; gyp-tests.el - unit tests for gyp-mode.
- ;; Copyright (c) 2012 Google Inc. All rights reserved.
- ;; Use of this source code is governed by a BSD-style license that can be
- ;; found in the LICENSE file.
- ;; The recommended way to run these tests is to run them from the command-line,
- ;; with the run-unit-tests.sh script.
- (require 'cl)
- (require 'ert)
- (require 'gyp)
- (defconst samples (directory-files "testdata" t ".gyp$")
- "List of golden samples to check")
- (defun fontify (filename)
- (with-temp-buffer
- (insert-file-contents-literally filename)
- (gyp-mode)
- (font-lock-fontify-buffer)
- (buffer-string)))
- (defun read-golden-sample (filename)
- (with-temp-buffer
- (insert-file-contents-literally (concat filename ".fontified"))
- (read (current-buffer))))
- (defun equivalent-face (face)
- "For the purposes of face comparison, we're not interested in the
- differences between certain faces. For example, the difference between
- font-lock-comment-delimiter and font-lock-comment-face."
- (case face
- ((font-lock-comment-delimiter-face) font-lock-comment-face)
- (t face)))
- (defun text-face-properties (s)
- "Extract the text properties from s"
- (let ((result (list t)))
- (dotimes (i (length s))
- (setq result (cons (equivalent-face (get-text-property i 'face s))
- result)))
- (nreverse result)))
- (ert-deftest test-golden-samples ()
- "Check that fontification produces the same results as the golden samples"
- (dolist (sample samples)
- (let ((golden (read-golden-sample sample))
- (fontified (fontify sample)))
- (should (equal golden fontified))
- (should (equal (text-face-properties golden)
- (text-face-properties fontified))))))
- (defun create-golden-sample (filename)
- "Create a golden sample by fontifying filename and writing out the printable
- representation of the fontified buffer (with text properties) to the
- FILENAME.fontified"
- (with-temp-file (concat filename ".fontified")
- (print (fontify filename) (current-buffer))))
- (defun create-golden-samples ()
- "Recreate the golden samples"
- (dolist (sample samples) (create-golden-sample sample)))
|