Add test for phpinspect-fix-imports

master
Hugo Thunnissen 1 month ago
parent 5032ae74ff
commit be2f8dada5

@ -199,9 +199,7 @@ that there are import (\"use\") statements for them."
tree nil (phpinspect-buffer-location-resolver buffer)))
(classes (alist-get 'classes index))
(imports (alist-get 'imports index))
(project (phpinspect--cache-get-project-create
(phpinspect--get-or-create-global-cache)
(phpinspect-current-project-root)))
(project (phpinspect-buffer-project buffer))
(used-types (alist-get 'used-types index)))
(phpinspect-add-use-statements-for-missing-types

@ -10,16 +10,26 @@
(phpinspect-ensure-worker)
(phpinspect-purge-cache)
(defun phpinspect--make-dummy-project ()
(phpinspect--make-project
:fs (phpinspect-make-virtual-fs)
:autoload (phpinspect-make-autoloader)
:worker 'nil-worker))
(defvar phpinspect-test-directory
(file-name-directory (macroexp-file-name))
"Directory that phpinspect tests reside in.")
(defun phpinspect--make-dummy-project (&optional fs project-root)
(setq fs (or fs (phpinspect-make-virtual-fs))
project-root (or project-root "could never be a real project root"))
(let ((project (phpinspect--make-project
:root project-root
:fs fs
:autoload (phpinspect-make-autoloader
:fs fs
:project-root-resolver (lambda () project-root))
:worker 'nil-worker)))
(setf (phpinspect-autoloader-file-indexer (phpinspect-project-autoload project))
(phpinspect-project-make-file-indexer project))
project))
(defvar phpinspect-test-php-file-directory
(expand-file-name "fixtures" phpinspect-test-directory)

@ -398,6 +398,7 @@ class Thing
(load-file (concat phpinspect-test-directory "/test-toc.el"))
(load-file (concat phpinspect-test-directory "/test-meta.el"))
(load-file (concat phpinspect-test-directory "/test-resolve.el"))
(load-file (concat phpinspect-test-directory "/test-imports.el"))
(provide 'phpinspect-test)

@ -0,0 +1,65 @@
; test-autoload.el --- Unit tests for phpinspect.el -*- lexical-binding: t; -*-
(require 'ert)
(require 'phpinspect-pipeline)
(require 'phpinspect-resolve)
(require 'phpinspect-imports)
(require 'phpinspect)
(require 'phpinspect-test-env
(expand-file-name "phpinspect-test-env.el"
(file-name-directory (macroexp-file-name))))
(defun phpinspect--make-dummy-composer-project ()
(let ((fs (phpinspect-make-virtual-fs)))
(phpinspect-virtual-fs-set-file
fs
"/project/root/composer.json"
"{ \"autoload\": { \"psr-4\": {\"App\\\\\": [\"src/\", \"lib\"]}}}")
(phpinspect-virtual-fs-set-file fs "/project/root/src/Foo.php" "")
(phpinspect-virtual-fs-set-file fs "/project/root/src/Bar.php" "")
(let* ((project (phpinspect--make-dummy-project fs "/project/root"))
(autoload (phpinspect-project-autoload project))
result error)
(phpinspect-autoloader-refresh autoload (lambda (res err)
(setq result res error err)))
(while (not (or result error))
(thread-yield))
project)))
(ert-deftest phpinspect-fix-imports-single-namespaced-class ()
(let ((project (phpinspect--make-dummy-composer-project)))
(with-temp-buffer
(let* ((buffer (phpinspect-make-buffer :buffer (current-buffer)
:-project project)))
(insert "<php
namespace Not\\App;
class Baz {
private Foo $foo;
public Bar $bar;
}")
;; Ensure buffer is made aware of changes
(setq phpinspect-current-buffer buffer)
(add-hook 'after-change-functions #'phpinspect-after-change-function)
(phpinspect-fix-imports)
(should (string= "<php
namespace Not\\App;
use App\\Bar;
use App\\Foo;
class Baz {
private Foo $foo;
public Bar $bar;
}"
(buffer-string)))))))
Loading…
Cancel
Save