* Viper tests failure? @ 2016-06-21 5:05 Fabrice Popineau 2016-06-21 14:27 ` Phillip Lord 0 siblings, 1 reply; 7+ messages in thread From: Fabrice Popineau @ 2016-06-21 5:05 UTC (permalink / raw) To: emacs-devel Hi, With emacs-25 commit e5e886d12f3eff3102916c82a5aa82e0db714579 Emacs compiled using Mingw64 I get a strange error running `make check': $ src/emacs --batch -Q -l ../emacs/test/automated/viper-tests.el --eval '(ert- run-tests-batch t)' Running 6 tests (2016-06-21 07:01:58+0200) Loading viper... Test viper-test-fix backtrace: byte-code(\204'\306\307\310!CB\301 CB\302\nCB\303 CB\311\307\311! load("viper") load-library("viper") viper-mode() (progn (viper-mode) (switch-to-buffer (get-buffer-create "*viper-tes (unwind-protect (progn (viper-mode) (switch-to-buffer (get-buffer-cr (let ((noninteractive nil) (viper-inhibit-startup-message (quote t)) viper-test-undo-kmacro([]) apply(viper-test-undo-kmacro []) (setq value-4 (apply fn-2 args-3)) (unwind-protect (setq value-4 (apply fn-2 args-3)) (setq form-descri (if (unwind-protect (setq value-4 (apply fn-2 args-3)) (setq form-de (let (form-description-6) (if (unwind-protect (setq value-4 (apply f (let ((value-4 (quote ert-form-evaluation-aborted-5))) (let (form-de (let ((fn-2 (function viper-test-undo-kmacro)) (args-3 (list []))) ( (lambda nil (let ((fn-2 (function viper-test-undo-kmacro)) (args-3 ( ert--run-test-internal([cl-struct-ert--test-execution-info [cl-struc ert-run-test([cl-struct-ert-test viper-test-fix "Test that the viper ert-run-or-rerun-test([cl-struct-ert--stats t [[cl-struct-ert-test v ert-run-tests(t #[385 "\306\307\"\203G\211\211G\310U\203\211@\20 ert-run-tests-batch(t) eval((ert-run-tests-batch t)) command-line-1(("-l" "../emacs/test/automated/viper-tests.el" "--eva command-line() normal-top-level() Test viper-test-fix condition: (file-error "Opening stdio stream" "No such file or directory" "c:/Users/Fabrice/AppData/Local/Temp/viper-tests21052GpM") FAILED 1/6 viper-test-fix I'm not sure what is happening there. I checked the temp file is created and does exist, so why is there a failure to open it? Regards, Fabrice ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Viper tests failure? 2016-06-21 5:05 Viper tests failure? Fabrice Popineau @ 2016-06-21 14:27 ` Phillip Lord 2016-06-21 15:33 ` Eli Zaretskii 0 siblings, 1 reply; 7+ messages in thread From: Phillip Lord @ 2016-06-21 14:27 UTC (permalink / raw) To: Fabrice Popineau; +Cc: emacs-devel Fabrice Popineau <fabrice.popineau@gmail.com> writes: > Hi, > > With emacs-25 commit e5e886d12f3eff3102916c82a5aa82e0db714579 > Emacs compiled using Mingw64 I get a strange error > running `make check': > > $ src/emacs --batch -Q -l ../emacs/test/automated/viper-tests.el --eval '(ert- > run-tests-batch t)' > Running 6 tests (2016-06-21 07:01:58+0200) > Loading viper... > Test viper-test-fix backtrace: > byte-code(\204'\306\307\310!CB\301 CB\302\nCB\303 > CB\311\307\311! > load("viper") > load-library("viper") > viper-mode() > (progn (viper-mode) (switch-to-buffer (get-buffer-create "*viper-tes > (unwind-protect (progn (viper-mode) (switch-to-buffer (get-buffer-cr > (let ((noninteractive nil) (viper-inhibit-startup-message (quote t)) > viper-test-undo-kmacro([]) > apply(viper-test-undo-kmacro []) > (setq value-4 (apply fn-2 args-3)) > (unwind-protect (setq value-4 (apply fn-2 args-3)) (setq form-descri > (if (unwind-protect (setq value-4 (apply fn-2 args-3)) (setq form-de > (let (form-description-6) (if (unwind-protect (setq value-4 (apply f > (let ((value-4 (quote ert-form-evaluation-aborted-5))) (let (form-de > (let ((fn-2 (function viper-test-undo-kmacro)) (args-3 (list []))) ( > (lambda nil (let ((fn-2 (function viper-test-undo-kmacro)) (args-3 ( > ert--run-test-internal([cl-struct-ert--test-execution-info [cl-struc > ert-run-test([cl-struct-ert-test viper-test-fix "Test that the viper > ert-run-or-rerun-test([cl-struct-ert--stats t [[cl-struct-ert-test v > ert-run-tests(t #[385 "\306\307\"\203G\211\211G\310U\203\211@\20 > ert-run-tests-batch(t) > eval((ert-run-tests-batch t)) > command-line-1(("-l" "../emacs/test/automated/viper-tests.el" "--eva > command-line() > normal-top-level() > Test viper-test-fix condition: > (file-error "Opening stdio stream" "No such file or directory" > "c:/Users/Fabrice/AppData/Local/Temp/viper-tests21052GpM") > FAILED 1/6 viper-test-fix > > I'm not sure what is happening there. > I checked the temp file is created and does exist, so why is there > a failure to open it? > > Regards, > > Fabrice The file is only created to be empty (viper loads the custom-file whatever I do, so making an empty one seemed the only way to disable it. I've checked and the error comes from the viper-load-custom-file function which is calle during load. The file exists according to emacs, but it cannot be loaded. Not sure what to test next. Phil ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Viper tests failure? 2016-06-21 14:27 ` Phillip Lord @ 2016-06-21 15:33 ` Eli Zaretskii 2016-06-21 20:26 ` Phillip Lord 0 siblings, 1 reply; 7+ messages in thread From: Eli Zaretskii @ 2016-06-21 15:33 UTC (permalink / raw) To: Phillip Lord; +Cc: fabrice.popineau, emacs-devel > From: phillip.lord@russet.org.uk (Phillip Lord) > Date: Tue, 21 Jun 2016 15:27:28 +0100 > Cc: emacs-devel@gnu.org > > > With emacs-25 commit e5e886d12f3eff3102916c82a5aa82e0db714579 > > Emacs compiled using Mingw64 I get a strange error > > running `make check': > > > > $ src/emacs --batch -Q -l ../emacs/test/automated/viper-tests.el --eval '(ert- > > run-tests-batch t)' > > Running 6 tests (2016-06-21 07:01:58+0200) > > Loading viper... > > Test viper-test-fix backtrace: > > byte-code(\204'\306\307\310!CB\301 CB\302\nCB\303 > > CB\311\307\311! > > load("viper") > > load-library("viper") > > viper-mode() > > (progn (viper-mode) (switch-to-buffer (get-buffer-create "*viper-tes > > (unwind-protect (progn (viper-mode) (switch-to-buffer (get-buffer-cr > > (let ((noninteractive nil) (viper-inhibit-startup-message (quote t)) > > viper-test-undo-kmacro([]) > > apply(viper-test-undo-kmacro []) > > (setq value-4 (apply fn-2 args-3)) > > (unwind-protect (setq value-4 (apply fn-2 args-3)) (setq form-descri > > (if (unwind-protect (setq value-4 (apply fn-2 args-3)) (setq form-de > > (let (form-description-6) (if (unwind-protect (setq value-4 (apply f > > (let ((value-4 (quote ert-form-evaluation-aborted-5))) (let (form-de > > (let ((fn-2 (function viper-test-undo-kmacro)) (args-3 (list []))) ( > > (lambda nil (let ((fn-2 (function viper-test-undo-kmacro)) (args-3 ( > > ert--run-test-internal([cl-struct-ert--test-execution-info [cl-struc > > ert-run-test([cl-struct-ert-test viper-test-fix "Test that the viper > > ert-run-or-rerun-test([cl-struct-ert--stats t [[cl-struct-ert-test v > > ert-run-tests(t #[385 "\306\307\"\203G\211\211G\310U\203\211@\20 > > ert-run-tests-batch(t) > > eval((ert-run-tests-batch t)) > > command-line-1(("-l" "../emacs/test/automated/viper-tests.el" "--eva > > command-line() > > normal-top-level() > > Test viper-test-fix condition: > > (file-error "Opening stdio stream" "No such file or directory" > > "c:/Users/Fabrice/AppData/Local/Temp/viper-tests21052GpM") > > FAILED 1/6 viper-test-fix > > > > I'm not sure what is happening there. > > I checked the temp file is created and does exist, so why is there > > a failure to open it? > > > > Regards, > > > > Fabrice > > > The file is only created to be empty (viper loads the custom-file > whatever I do, so making an empty one seemed the only way to disable it. > > I've checked and the error comes from the viper-load-custom-file > function which is calle during load. The file exists according to emacs, > but it cannot be loaded. > > Not sure what to test next. The problem is real. There's a bug in Fload: it blindly overwrites the last character of the file name, without making sure it ends in ".elc". That's why the simple change below (which is really a workaround) fixes the problem for me. The bug is here: /* openp already checked for newness, no point doing it again. FIXME would be nice to get a message when openp ignores suffix order due to load_prefer_newer. */ if (!load_prefer_newer) { result = stat (SSDATA (efound), &s1); if (result == 0) { SSET (efound, SBYTES (efound) - 1, 0); result = stat (SSDATA (efound), &s2); SSET (efound, SBYTES (efound) - 1, 'c'); } This removes the last character of the file, then replaces it with 'c', but we can end up in this fragment when the file name does not end in a ".elc", because the condition which guards this says: if (suffix_p (found, ".elc") || (fd >= 0 && (version = safe_to_load_version (fd)) > 0)) and the second alternative does not guarantee that the file name ends in ".elc". The error message we see on Windows is misleading, because it uses the correct file name, not the one Emacs tries to open. The error only happens on Windows, because we don't use fdopen there, but instead close and reopen the file -- using the wrong name. And here's the simple workaround I mentioned: diff --git a/test/lisp/emulation/viper-tests.el b/test/lisp/emulation/viper-tests.el index 074dd63..0d6095b 100644 --- a/test/lisp/emulation/viper-tests.el +++ b/test/lisp/emulation/viper-tests.el @@ -38,7 +38,7 @@ viper-test-undo-kmacro ;; Select an expert-level for the same reason. (viper-expert-level 5) ;; viper loads this even with -q so make sure it's empty! - (viper-custom-file-name (make-temp-file "viper-tests")) + (viper-custom-file-name (make-temp-file "viper-tests" nil ".elc")) (before-buffer (current-buffer))) (unwind-protect (progn ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: Viper tests failure? 2016-06-21 15:33 ` Eli Zaretskii @ 2016-06-21 20:26 ` Phillip Lord 2016-06-22 16:01 ` Eli Zaretskii 0 siblings, 1 reply; 7+ messages in thread From: Phillip Lord @ 2016-06-21 20:26 UTC (permalink / raw) To: Eli Zaretskii; +Cc: fabrice.popineau, emacs-devel Eli Zaretskii <eliz@gnu.org> writes: >> The file is only created to be empty (viper loads the custom-file >> whatever I do, so making an empty one seemed the only way to disable it. >> >> I've checked and the error comes from the viper-load-custom-file >> function which is calle during load. The file exists according to emacs, >> but it cannot be loaded. >> >> Not sure what to test next. > > The problem is real. There's a bug in Fload: it blindly overwrites > the last character of the file name, without making sure it ends in > ".elc". That's why the simple change below (which is really a > workaround) fixes the problem for me. > > The bug is here: > > /* openp already checked for newness, no point doing it again. > FIXME would be nice to get a message when openp > ignores suffix order due to load_prefer_newer. */ > if (!load_prefer_newer) > { > result = stat (SSDATA (efound), &s1); > if (result == 0) > { > SSET (efound, SBYTES (efound) - 1, 0); > result = stat (SSDATA (efound), &s2); > SSET (efound, SBYTES (efound) - 1, 'c'); > } > > This removes the last character of the file, then replaces it with > 'c', but we can end up in this fragment when the file name does not > end in a ".elc", because the condition which guards this says: > > if (suffix_p (found, ".elc") || (fd >= 0 && (version = safe_to_load_version (fd)) > 0)) > > and the second alternative does not guarantee that the file name ends > in ".elc". > > The error message we see on Windows is misleading, because it uses the > correct file name, not the one Emacs tries to open. The error only > happens on Windows, because we don't use fdopen there, but instead > close and reopen the file -- using the wrong name. > > And here's the simple workaround I mentioned: > > diff --git a/test/lisp/emulation/viper-tests.el b/test/lisp/emulation/viper-tests.el > index 074dd63..0d6095b 100644 > --- a/test/lisp/emulation/viper-tests.el > +++ b/test/lisp/emulation/viper-tests.el > @@ -38,7 +38,7 @@ viper-test-undo-kmacro > ;; Select an expert-level for the same reason. > (viper-expert-level 5) > ;; viper loads this even with -q so make sure it's empty! > - (viper-custom-file-name (make-temp-file "viper-tests")) > + (viper-custom-file-name (make-temp-file "viper-tests" nil ".elc")) > (before-buffer (current-buffer))) > (unwind-protect > (progn Okay, I was wondering whether it was a problem with the suffix. The viper-test is fix obviously fine by me -- should have done it that way in the first place, although uncovering the Fload but is a nice side effect. Can you add it to emacs-25 (I'm away from my windows machine, and I'd rather not commit something I can't test). Phil ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Viper tests failure? 2016-06-21 20:26 ` Phillip Lord @ 2016-06-22 16:01 ` Eli Zaretskii 2016-06-22 17:23 ` Phillip Lord 0 siblings, 1 reply; 7+ messages in thread From: Eli Zaretskii @ 2016-06-22 16:01 UTC (permalink / raw) To: Phillip Lord; +Cc: fabrice.popineau, emacs-devel > From: phillip.lord@russet.org.uk (Phillip Lord) > Cc: fabrice.popineau@gmail.com, emacs-devel@gnu.org > Date: Tue, 21 Jun 2016 21:26:58 +0100 > > > --- a/test/lisp/emulation/viper-tests.el > > +++ b/test/lisp/emulation/viper-tests.el > > @@ -38,7 +38,7 @@ viper-test-undo-kmacro > > ;; Select an expert-level for the same reason. > > (viper-expert-level 5) > > ;; viper loads this even with -q so make sure it's empty! > > - (viper-custom-file-name (make-temp-file "viper-tests")) > > + (viper-custom-file-name (make-temp-file "viper-tests" nil ".elc")) > > (before-buffer (current-buffer))) > > (unwind-protect > > (progn > > > Okay, I was wondering whether it was a problem with the suffix. The final piece of the puzzle is that the code changes the _encoded_ file name, evidently on the assumption that the original file name is unaffected. But that assumption is false: when the file name is all-ASCII, then some file-name encodings (notably, UTF-8) will return the original Lisp string unaltered, so modifying it will also modify the original. > The viper-test is fix obviously fine by me -- should have done it that > way in the first place, although uncovering the Fload but is a nice side > effect. I have now fixed this properly in Fload on master. No change in viper-tests is necessary. > Can you add it to emacs-25 Doesn't sound like a good idea: the changes are not really trivial, and this problem has been with us for so long that one more release is not an issue. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Viper tests failure? 2016-06-22 16:01 ` Eli Zaretskii @ 2016-06-22 17:23 ` Phillip Lord 2016-06-22 17:51 ` Eli Zaretskii 0 siblings, 1 reply; 7+ messages in thread From: Phillip Lord @ 2016-06-22 17:23 UTC (permalink / raw) To: Eli Zaretskii; +Cc: fabrice.popineau, emacs-devel Eli Zaretskii <eliz@gnu.org> writes: >> From: phillip.lord@russet.org.uk (Phillip Lord) >> Cc: fabrice.popineau@gmail.com, emacs-devel@gnu.org >> Date: Tue, 21 Jun 2016 21:26:58 +0100 >> >> > --- a/test/lisp/emulation/viper-tests.el >> > +++ b/test/lisp/emulation/viper-tests.el >> > @@ -38,7 +38,7 @@ viper-test-undo-kmacro >> > ;; Select an expert-level for the same reason. >> > (viper-expert-level 5) >> > ;; viper loads this even with -q so make sure it's empty! >> > - (viper-custom-file-name (make-temp-file "viper-tests")) >> > + (viper-custom-file-name (make-temp-file "viper-tests" nil ".elc")) >> > (before-buffer (current-buffer))) >> > (unwind-protect >> > (progn >> The viper-test is fix obviously fine by me -- should have done it that >> way in the first place, although uncovering the Fload but is a nice side >> effect. > > I have now fixed this properly in Fload on master. No change in > viper-tests is necessary. I'd probably change it anyway, to make it clearer in the test that this is an (empty) load file. >> Can you add it to emacs-25 > > Doesn't sound like a good idea: the changes are not really trivial, > and this problem has been with us for so long that one more release is > not an issue. Apologies, I mean fix the test. I guess there is no problem with making a change to test on emacs-25. It's also necessary to stop the test error as the Fload fix is on master. Phil ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Viper tests failure? 2016-06-22 17:23 ` Phillip Lord @ 2016-06-22 17:51 ` Eli Zaretskii 0 siblings, 0 replies; 7+ messages in thread From: Eli Zaretskii @ 2016-06-22 17:51 UTC (permalink / raw) To: Phillip Lord; +Cc: fabrice.popineau, emacs-devel > From: phillip.lord@russet.org.uk (Phillip Lord) > Cc: fabrice.popineau@gmail.com, emacs-devel@gnu.org > Date: Wed, 22 Jun 2016 18:23:09 +0100 > > >> Can you add it to emacs-25 > > > > Doesn't sound like a good idea: the changes are not really trivial, > > and this problem has been with us for so long that one more release is > > not an issue. > > Apologies, I mean fix the test. Feel free to do that. ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2016-06-22 17:51 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-06-21 5:05 Viper tests failure? Fabrice Popineau 2016-06-21 14:27 ` Phillip Lord 2016-06-21 15:33 ` Eli Zaretskii 2016-06-21 20:26 ` Phillip Lord 2016-06-22 16:01 ` Eli Zaretskii 2016-06-22 17:23 ` Phillip Lord 2016-06-22 17:51 ` Eli Zaretskii
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/emacs.git https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.