Create the lowercase ecss repository as a pure selector and CSS cascade package with no TP, Ebox, or historical ECSS dependency.\n\nVerified with 47 ERT tests, warning-free byte compilation, checkdoc, and git diff checks.
71 lines
2.8 KiB
EmacsLisp
71 lines
2.8 KiB
EmacsLisp
;;; ecss-package-tests.el --- Package boundary tests -*- lexical-binding: t; -*-
|
|
|
|
;; Copyright (C) 2026 Geekinney
|
|
;; SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
;;; Code:
|
|
|
|
(require 'ert)
|
|
(require 'package)
|
|
(require 'ecss)
|
|
|
|
(defconst ecss-package-test--root
|
|
(file-name-directory
|
|
(directory-file-name
|
|
(file-name-directory (or load-file-name buffer-file-name))))
|
|
"Absolute ecss repository root used by package tests.")
|
|
|
|
(defun ecss-package-test--source (file)
|
|
"Return FILE contents below the repository root."
|
|
(with-temp-buffer
|
|
(insert-file-contents (expand-file-name file ecss-package-test--root))
|
|
(buffer-string)))
|
|
|
|
(ert-deftest ecss-package-test-facade-loads-public-features-only ()
|
|
(should (featurep 'ecss))
|
|
(should (featurep 'ecss-selector))
|
|
(should (featurep 'ecss-cascade))
|
|
(should-not (featurep 'tp))
|
|
(should-not (featurep 'ebox)))
|
|
|
|
(ert-deftest ecss-package-test-production-has-no-tp-or-ebox-dependency ()
|
|
(dolist (file '("ecss.el" "ecss-selector.el" "ecss-cascade.el"))
|
|
(let ((source (ecss-package-test--source file)))
|
|
(should-not (string-match-p "(require[ \t\n]+['\"]tp" source))
|
|
(should-not (string-match-p "(require[ \t\n]+['\"]ebox" source))
|
|
(should-not (string-match-p "\\_<tp[-/]" source))
|
|
(should-not (string-match-p "\\_<ebox[-/]" source)))))
|
|
|
|
(ert-deftest ecss-package-test-main-metadata-is-installable ()
|
|
(with-temp-buffer
|
|
(insert-file-contents (expand-file-name "ecss.el" ecss-package-test--root))
|
|
(let ((description (package-buffer-info)))
|
|
(should (equal (package-desc-name description) 'ecss))
|
|
(should (version-list-<= '(28 1)
|
|
(cadr (assq 'emacs
|
|
(package-desc-reqs description)))))
|
|
(should (equal (package-version-join
|
|
(package-desc-version description))
|
|
"0.1.0")))))
|
|
|
|
(ert-deftest ecss-package-test-independent-schema-and-stylesheet-state ()
|
|
(let ((left-schemas (ecss-schema-set-create))
|
|
(right-schemas (ecss-schema-set-create))
|
|
(left-sheet (ecss-stylesheet-create))
|
|
(right-sheet (ecss-stylesheet-create)))
|
|
(ecss-schema-set-define left-schemas 'left/color :initial "left")
|
|
(ecss-schema-set-define right-schemas 'right/color :initial "right")
|
|
(ecss-stylesheet-add-rule
|
|
left-sheet left-schemas "*" '(left/color "changed"))
|
|
(should (null (ecss-stylesheet-rules right-sheet)))
|
|
(should (null (ecss-schema-set-property right-schemas 'left/color)))
|
|
(should (equal (ecss-computed-style-value
|
|
(ecss-compute-style
|
|
right-schemas (ecss-subject-create :type "node")
|
|
:stylesheet right-sheet)
|
|
'right/color)
|
|
"right"))))
|
|
|
|
(provide 'ecss-package-tests)
|
|
;;; ecss-package-tests.el ends here
|