diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
commit | 2aa4a82499d4becd2284cdb482213d541b8804dd (patch) | |
tree | b80bf8bf13c3766139fbacc530efd0dd9d54394c /third_party/python/gyp/tools/emacs/gyp-tests.el | |
parent | Initial commit. (diff) | |
download | firefox-2aa4a82499d4becd2284cdb482213d541b8804dd.tar.xz firefox-2aa4a82499d4becd2284cdb482213d541b8804dd.zip |
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/python/gyp/tools/emacs/gyp-tests.el')
-rw-r--r-- | third_party/python/gyp/tools/emacs/gyp-tests.el | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/third_party/python/gyp/tools/emacs/gyp-tests.el b/third_party/python/gyp/tools/emacs/gyp-tests.el new file mode 100644 index 0000000000..11b8497886 --- /dev/null +++ b/third_party/python/gyp/tools/emacs/gyp-tests.el @@ -0,0 +1,63 @@ +;;; 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))) |