emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 2a82b55: ; Still working on tramp--test-file-attrib


From: Michael Albinus
Subject: [Emacs-diffs] master 2a82b55: ; Still working on tramp--test-file-attributes-equal-p
Date: Wed, 7 Aug 2019 10:36:09 -0400 (EDT)

branch: master
commit 2a82b5542661d181933b11f9c72323ef5da708ef
Author: Michael Albinus <address@hidden>
Commit: Michael Albinus <address@hidden>

    ; Still working on tramp--test-file-attributes-equal-p
---
 test/lisp/net/tramp-tests.el | 56 ++++++++++++++++++++++++++++++--------------
 1 file changed, 38 insertions(+), 18 deletions(-)

diff --git a/test/lisp/net/tramp-tests.el b/test/lisp/net/tramp-tests.el
index c11997a..bcc74cc 100644
--- a/test/lisp/net/tramp-tests.el
+++ b/test/lisp/net/tramp-tests.el
@@ -3085,24 +3085,44 @@ This tests also `access-file', `file-readable-p',
 
 (defsubst tramp--test-file-attributes-equal-p (attr1 attr2)
   "Check, whether file attributes ATTR1 and ATTR2 are equal.
-They might differ only in time attributes."
-  ;; Access time.
-  (setcar (nthcdr 4 attr1) tramp-time-dont-know)
-  (setcar (nthcdr 4 attr2) tramp-time-dont-know)
-  ;; Modification time.
-  (when (or (tramp-compat-time-equal-p (nth 5 attr1) tramp-time-dont-know)
-           (tramp-compat-time-equal-p (nth 5 attr2) tramp-time-dont-know)
-           (< (abs (tramp-time-diff (nth 5 attr1) (nth 5 attr2))) 5))
-    (setcar (nthcdr 5 attr1) tramp-time-dont-know)
-    (setcar (nthcdr 5 attr2) tramp-time-dont-know))
-  ;; Status change time.
-  (when (or (tramp-compat-time-equal-p (nth 6 attr1) tramp-time-dont-know)
-           (tramp-compat-time-equal-p (nth 6 attr2) tramp-time-dont-know)
-           (< (abs (tramp-time-diff (nth 6 attr1) (nth 6 attr2))) 5))
-    (setcar (nthcdr 6 attr1) tramp-time-dont-know)
-    (setcar (nthcdr 6 attr2) tramp-time-dont-know))
-  (unless (equal attr1 attr2) (tramp--test-message "%S\n%S" attr1 attr2))
-  (equal attr1 attr2))
+They might differ only in time attributes or directory size."
+  (let ((attr1 (copy-sequence attr1))
+       (attr2 (copy-sequence attr2))
+       (start-time
+        (aref
+         (ert--stats-test-start-times ert--current-run-stats)
+         (ert--stats-test-pos ert--current-run-stats (ert-running-test)))))
+    ;; Access time.
+    (setcar (nthcdr 4 attr1) tramp-time-dont-know)
+    (setcar (nthcdr 4 attr2) tramp-time-dont-know)
+    ;; Modification time.  If any of the time values is "don't know",
+    ;; we cannot compare, and we normalize the time stamps.  If the
+    ;; time value is newer than the test start time, normalize it,
+    ;; because due to caching the time stamps could differ slightly (a
+    ;; few seconds).
+    (when (or (tramp-compat-time-equal-p (nth 5 attr1) tramp-time-dont-know)
+             (tramp-compat-time-equal-p (nth 5 attr2) tramp-time-dont-know))
+      (setcar (nthcdr 5 attr1) tramp-time-dont-know)
+      (setcar (nthcdr 5 attr2) tramp-time-dont-know))
+    (when (time-less-p start-time (nth 5 attr1))
+      (setcar (nthcdr 5 attr1) tramp-time-dont-know))
+    (when (time-less-p start-time (nth 5 attr2))
+      (setcar (nthcdr 5 attr2) tramp-time-dont-know))
+    ;; Status change time.  Dito.
+    (when (or (tramp-compat-time-equal-p (nth 6 attr1) tramp-time-dont-know)
+             (tramp-compat-time-equal-p (nth 6 attr2) tramp-time-dont-know))
+      (setcar (nthcdr 6 attr1) tramp-time-dont-know)
+      (setcar (nthcdr 6 attr2) tramp-time-dont-know))
+    (when (time-less-p start-time (nth 6 attr1))
+      (setcar (nthcdr 6 attr1) tramp-time-dont-know))
+    (when (time-less-p start-time (nth 6 attr2))
+      (setcar (nthcdr 6 attr2) tramp-time-dont-know))
+    ;; Size.  Set it to 0 for directories, because it might have
+    ;; changed.  For example the upper directory "../".
+    (when (eq (car attr1) t) (setcar (nthcdr 7 attr1) 0))
+    (when (eq (car attr2) t) (setcar (nthcdr 7 attr2) 0))
+    ;; The check.
+    (equal attr1 attr2)))
 
 ;; This isn't 100% correct, but better than no explainer at all.
 (put #'tramp--test-file-attributes-equal-p 'ert-explainer #'ert--explain-equal)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]