[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/phpinspect 75562aab35 085/126: Add some tests for edit
From: |
ELPA Syncer |
Subject: |
[elpa] externals/phpinspect 75562aab35 085/126: Add some tests for edit tracker + patch newly discovered bugs |
Date: |
Sat, 12 Aug 2023 00:58:46 -0400 (EDT) |
branch: externals/phpinspect
commit 75562aab35f403b40767c037bd12ded281efa63b
Author: Hugo Thunnissen <devel@hugot.nl>
Commit: Hugo Thunnissen <devel@hugot.nl>
Add some tests for edit tracker + patch newly discovered bugs
---
phpinspect-buffer.el | 6 ++++--
phpinspect-edtrack.el | 10 +++++++++-
test/test-edtrack.el | 15 +++++++++++++++
3 files changed, 28 insertions(+), 3 deletions(-)
diff --git a/phpinspect-buffer.el b/phpinspect-buffer.el
index 64e5e17e6a..f540ca33a3 100644
--- a/phpinspect-buffer.el
+++ b/phpinspect-buffer.el
@@ -61,6 +61,7 @@ linked with."
:previous-bmap buffer-map
:edtrack (phpinspect-buffer-edit-tracker buffer))))
(phpinspect-with-parse-context ctx
+ (phpinspect--log "Parsing buffer")
(let ((parsed (phpinspect-parse-current-buffer)))
(setf (phpinspect-buffer-map buffer) map)
(setf (phpinspect-buffer-tree buffer) parsed)
@@ -91,8 +92,9 @@ linked with."
;; they grow or shrink, so their ful regions need to be marked for a
reparse).
(save-excursion
(goto-char start)
- (when (looking-back "\\($->|::\\)?[^][)(}{[:blank:]\n;'\"]+" nil t)
- (setq start (- start (length (match-string 0))))))
+ (when (looking-back "\\($|->|::\\)?[^][)(}{[:blank:]\n;'\"]+" nil t)
+ (setq start (- start (length (match-string 0))))
+ (setq pre-change-length (+ pre-change-length (length (match-string
0))))))
(phpinspect-edtrack-register-edit
(phpinspect-buffer-edit-tracker buffer) start end pre-change-length))
diff --git a/phpinspect-edtrack.el b/phpinspect-edtrack.el
index b7b899c949..2a7df925e3 100644
--- a/phpinspect-edtrack.el
+++ b/phpinspect-edtrack.el
@@ -122,7 +122,13 @@
(let ((delta ;; The delta of this edit.
(- (- end start) pre-change-length))
new-edit)
- (if (= (phpinspect-edtrack-last-edit-start track) start)
+ (if (and (= (phpinspect-edtrack-last-edit-start track) start)
+ ;; Confirm that this is indeed a growing edit and not an edit
+ ;; starting at the same place by chance
+ (or (and (> delta 0) (> (cdr (phpinspect-edtrack-last-edit
track)) 0)
+ (> delta (cdr (phpinspect-edtrack-last-edit track))))
+ (and (< delta 0) (< (cdr (phpinspect-edtrack-last-edit
track)) 0)
+ (< delta (cdr (phpinspect-edtrack-last-edit track))))))
;; `after-change-functions' can be called in succession with the same
;; start point for a continuously growing edited region. For example,
;; when typing without interruptions, subsequent calls can be:
@@ -196,6 +202,8 @@
(defsubst phpinspect-edtrack-clear (track)
(setf (phpinspect-edtrack-edits track) nil)
+ (setf (phpinspect-edtrack-last-edit track) nil)
+ (setf (phpinspect-edtrack-last-edit-start track) -1)
(phpinspect-edtrack-clear-taint-pool track))
(defsubst phpinspect-edtrack-register-taint (track start end)
diff --git a/test/test-edtrack.el b/test/test-edtrack.el
index e4e9e03613..e08750c73c 100644
--- a/test/test-edtrack.el
+++ b/test/test-edtrack.el
@@ -111,3 +111,18 @@
(phpinspect-edtrack-register-edit track 15 0 1)
(should (equal (list (cons 10 16)) (phpinspect-edtrack-taint-pool
track)))))
+
+(ert-deftest phpinspect-edtrack-register-growing-edit ()
+ (let ((track (phpinspect-make-edtrack)))
+ (phpinspect-edtrack-register-edit track 10 11 0)
+ (phpinspect-edtrack-register-edit track 10 12 0)
+ (phpinspect-edtrack-register-edit track 10 13 0)
+
+ (should (equal (list (cons 10 3)) (phpinspect-edtrack-edits track)))))
+
+(ert-deftest phpinspect-edtrack-register-multi-edits-same-start ()
+ (let ((track (phpinspect-make-edtrack)))
+ (phpinspect-edtrack-register-edit track 10 11 0)
+ (phpinspect-edtrack-register-edit track 10 10 1)
+
+ (should (equal (list (cons 10 -1) (cons 10 1)) (phpinspect-edtrack-edits
track)))))
- [elpa] externals/phpinspect bb04e9a0f8 079/126: Implement strategy pattern for phpinspect-eldoc-function, (continued)
- [elpa] externals/phpinspect bb04e9a0f8 079/126: Implement strategy pattern for phpinspect-eldoc-function, ELPA Syncer, 2023/08/12
- [elpa] externals/phpinspect f9f3440850 065/126: Make file contents insertion asynchronous in background threads, ELPA Syncer, 2023/08/12
- [elpa] externals/phpinspect ad5ede01ad 071/126: Implement Incremental Parsing, ELPA Syncer, 2023/08/12
- [elpa] externals/phpinspect 9d6ce5726d 076/126: Use `phpinspect-edtrack-original-position-at-point' for edit end determination, ELPA Syncer, 2023/08/12
- [elpa] externals/phpinspect 58ad65932b 069/126: Add `phpinspect-parser' type and `phpinspect-defparser' macro, ELPA Syncer, 2023/08/12
- [elpa] externals/phpinspect 5548734ef7 075/126: Implement parser interruption on user input, ELPA Syncer, 2023/08/12
- [elpa] externals/phpinspect 2049121810 097/126: Make edit delta lookup inclusive of current point, ELPA Syncer, 2023/08/12
- [elpa] externals/phpinspect 9a25959aad 095/126: Use metadata tree instead of hash table for token lookup, ELPA Syncer, 2023/08/12
- [elpa] externals/phpinspect 43310092ad 081/126: Clear tree and edit tracker when reparsing (to ensure full reparse), ELPA Syncer, 2023/08/12
- [elpa] externals/phpinspect 8dd9bb07e4 080/126: Increase phpinspect-bmap-last-token-before-point backward search limit to 100, ELPA Syncer, 2023/08/12
- [elpa] externals/phpinspect 75562aab35 085/126: Add some tests for edit tracker + patch newly discovered bugs,
ELPA Syncer <=
- [elpa] externals/phpinspect 135263c533 110/126: Add tests for incremental parsing + fix parser bugs that came to light, ELPA Syncer, 2023/08/12
- [elpa] externals/phpinspect ea7795c76e 106/126: Remove commented code, ELPA Syncer, 2023/08/12
- [elpa] externals/phpinspect 9b82c0d0f6 111/126: Reimplement `phpinspect-fix-imports' using metadata objects, ELPA Syncer, 2023/08/12
- [elpa] externals/phpinspect c20df819b8 114/126: Give `phpinspect-buffer' responsibility over buffer indexation, ELPA Syncer, 2023/08/12
- [elpa] externals/phpinspect 04606a4756 121/126: Fix test, ELPA Syncer, 2023/08/12
- [elpa] externals/phpinspect d51137e58e 112/126: Remove faulty edit tracker code based on wrong deduction, ELPA Syncer, 2023/08/12
- [elpa] externals/phpinspect db3ec3b67d 124/126: Add custom variables for worker and pipeline pause time, ELPA Syncer, 2023/08/12
- [elpa] externals/phpinspect 50d2bfeebe 002/126: Change indexer's cache dir from/to .cache/{phpns, phpinspect}, ELPA Syncer, 2023/08/12
- [elpa] externals/phpinspect 0b210309e7 041/126: Fix variable suggestion when there are loose dollar signs in the buffer, ELPA Syncer, 2023/08/12
- [elpa] externals/phpinspect c50f2ae09b 020/126: Fix resolving of "static" and "self" types, ELPA Syncer, 2023/08/12