gcc/contrib/mdcompact/mdcompact-testsuite.el
Andrea Corallo e866d08d8b contrib: add mdcompact
Hello all,

this patch checks in mdcompact, the tool written in elisp that I used
to mass convert all the multi choice pattern in the aarch64 back-end to
the new compact syntax.

I tested it on Emacs 29 (might run on older versions as well not
sure), also I verified it runs cleanly on a few other back-ends (arm,
loongarch).

The tool can be used to convert a single pattern, an open buffer or
all md files in a directory.

The tool might need further adjustment to run on some specific
back-end, in case very happy to help.

This patch was pre-approved here [1].

Best Regards

  Andrea Corallo

[1] <https://gcc.gnu.org/pipermail/gcc-patches/2023-October/631830.html>

contrib/ChangeLog

	* mdcompact/mdcompact-testsuite.el: New file.
	* mdcompact/mdcompact.el: Likewise.
	* mdcompact/tests/1.md: Likewise.
	* mdcompact/tests/1.md.out: Likewise.
	* mdcompact/tests/2.md: Likewise.
	* mdcompact/tests/2.md.out: Likewise.
	* mdcompact/tests/3.md: Likewise.
	* mdcompact/tests/3.md.out: Likewise.
	* mdcompact/tests/4.md: Likewise.
	* mdcompact/tests/4.md.out: Likewise.
	* mdcompact/tests/5.md: Likewise.
	* mdcompact/tests/5.md.out: Likewise.
	* mdcompact/tests/6.md: Likewise.
	* mdcompact/tests/6.md.out: Likewise.
	* mdcompact/tests/7.md: Likewise.
	* mdcompact/tests/7.md.out: Likewise.
2023-10-05 17:41:54 +02:00

57 lines
1.6 KiB
EmacsLisp

;;; -*- lexical-binding: t; -*-
;; This file is part of GCC.
;; GCC is free software: you can redistribute it and/or modify it
;; under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; GCC is distributed in the hope that it will be useful, but WITHOUT
;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
;; License for more details.
;; You should have received a copy of the GNU General Public License
;; along with GCC. If not, see <https://www.gnu.org/licenses/>.
;;; Commentary:
;;; Usage:
;; $ emacs -batch -l mdcompact.el -l mdcompact-testsuite.el -f ert-run-tests-batch-and-exit
;;; Code:
(require 'mdcompact)
(require 'ert)
(defconst mdcompat-test-directory (concat (file-name-directory
(or load-file-name
buffer-file-name))
"tests/"))
(defun mdcompat-test-run (f)
(with-temp-buffer
(insert-file-contents f)
(mdcomp-run-at-point)
(let ((a (buffer-string))
(b (with-temp-buffer
(insert-file-contents (concat f ".out"))
(buffer-string))))
(should (string= a b)))))
(defmacro mdcompat-gen-tests ()
`(progn
,@(cl-loop
for f in (directory-files mdcompat-test-directory t "md$")
collect
`(ert-deftest ,(intern (concat "mdcompat-test-"
(file-name-sans-extension
(file-name-nondirectory f))))
()
(mdcompat-test-run ,f)))))
(mdcompat-gen-tests)
;;; mdcompact-testsuite.el ends here