Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

blob-binary test failed on Emacs 28. #121

Open
cireu opened this issue May 16, 2022 · 1 comment
Open

blob-binary test failed on Emacs 28. #121

cireu opened this issue May 16, 2022 · 1 comment

Comments

@cireu
Copy link

cireu commented May 16, 2022

libegit2 version: 0ef8b13
libgit2 version: 1.4.3
Emacs version: 28.1.

Error Log
starting phase `check'
Running tests...
/gnu/store/zga679c4nldah9l8dhd5a4hdy820hcyf-cmake-minimal-3.21.4/bin/ctest --force-new-ctest-process 
Test project /tmp/guix-build-emacs-libgit-20200515-1.0ef8b13.drv-0/build
      Start  1: libegit2_annotated-commit
 1/29 Test  #1: libegit2_annotated-commit ........   Passed    0.28 sec
      Start  2: libegit2_blame
 2/29 Test  #2: libegit2_blame ...................   Passed    0.29 sec
      Start  3: libegit2_blob
 3/29 Test  #3: libegit2_blob ....................***Failed    0.28 sec
Running 4 tests (2022-05-16 05:38:35+0000, selector ‘t’)
Test blob-binary backtrace:
  signal(wrong-type-argument (utf-8-string-p "\177ELF\2\1\1\0\0\0\0\0\
  apply(signal (wrong-type-argument (utf-8-string-p "\177ELF\2\1\1\0\0
  (setq value-42 (apply fn-40 args-41))
  (unwind-protect (setq value-42 (apply fn-40 args-41)) (setq form-des
  (if (unwind-protect (setq value-42 (apply fn-40 args-41)) (setq form
  (let (form-description-44) (if (unwind-protect (setq value-42 (apply
  (let ((value-42 'ert-form-evaluation-aborted-43)) (let (form-descrip
  (let* ((fn-40 #'string=) (args-41 (condition-case err (let ((signal-
  (let* ((repo (libgit-repository-open path)) (blob (libgit-revparse-s
  (let ((default-directory path)) (init) (commit-change "filename" str
  (progn (make-directory path 'parents) (let ((default-directory path)
  (unwind-protect (progn (make-directory path 'parents) (let ((default
  (let ((path "/tmp/guix-build-emacs-libgit-20200515-1.0ef8b13.dr...")
  (let* ((str (unibyte-string 127 69 76 70 2 1 1 0 0 0 0 0 0 0 0 0 3 0
  (let ((lexical-binding nil)) (let* ((str (unibyte-string 127 69 76 7
  (lambda nil (let ((lexical-binding nil)) (let* ((str (unibyte-string
  ert--run-test-internal(#s(ert--test-execution-info :test #s(ert-test
  ert-run-test(#s(ert-test :name blob-binary :documentation nil :body 
  ert-run-or-rerun-test(#s(ert--stats :selector t :tests [#s(ert-test 
  ert-run-tests(t #f(compiled-function (event-type &rest event-args) #
  ert-run-tests-batch(nil)
  ert-run-tests-batch-and-exit()
  command-line-1(("-L" "/tmp/guix-build-emacs-libgit-20200515-1.0ef8b1
  command-line()
  normal-top-level()
Test blob-binary condition:
    (wrong-type-argument utf-8-string-p "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260\7\0\0\0\0\0\0@\0\0\0\0\0\0\0\270\33\0\0\0\0\0\0\0\0\0\0@\08\0\11\0@\0\35\0\34\0\6\0\0\0\5\0\0\0@\0\0\0\0\0\0\0")
   FAILED  1/4  blob-binary (0.018840 sec)
   passed  2/4  blob-create-fromdisk (0.009633 sec)
   passed  3/4  blob-create-fromstring (0.008941 sec)
   passed  4/4  blob-text (0.018801 sec)

Ran 4 tests, 3 results as expected, 1 unexpected (2022-05-16 05:38:36+0000, 0.172075 sec)

1 unexpected results:
FAILED blob-binary

  Start  4: libegit2_branch

4/29 Test #4: libegit2_branch .................. Passed 0.51 sec
Start 5: libegit2_checkout
5/29 Test #5: libegit2_checkout ................ Passed 0.22 sec
Start 6: libegit2_cherrypick
6/29 Test #6: libegit2_cherrypick .............. Passed 0.38 sec
Start 7: libegit2_commit
7/29 Test #7: libegit2_commit .................. Passed 0.26 sec
Start 8: libegit2_config
8/29 Test #8: libegit2_config .................. Passed 0.12 sec
Start 9: libegit2_describe
9/29 Test #9: libegit2_describe ................ Passed 0.14 sec
Start 10: libegit2_diff
10/29 Test #10: libegit2_diff .................... Passed 0.28 sec
Start 11: libegit2_graph
11/29 Test #11: libegit2_graph ................... Passed 0.26 sec
Start 12: libegit2_ignore
12/29 Test #12: libegit2_ignore .................. Passed 0.09 sec
Start 13: libegit2_index
13/29 Test #13: libegit2_index ................... Passed 0.27 sec
Start 14: libegit2_merge
14/29 Test #14: libegit2_merge ................... Passed 0.50 sec
Start 15: libegit2_message
15/29 Test #15: libegit2_message ................. Passed 0.08 sec
Start 16: libegit2_pathspec
16/29 Test #16: libegit2_pathspec ................ Passed 0.20 sec
Start 17: libegit2_reference
17/29 Test #17: libegit2_reference ............... Passed 0.29 sec
Start 18: libegit2_reflog
18/29 Test #18: libegit2_reflog .................. Passed 0.22 sec
Start 19: libegit2_remote
19/29 Test #19: libegit2_remote .................. Passed 0.28 sec
Start 20: libegit2_repository
20/29 Test #20: libegit2_repository .............. Passed 0.47 sec
Start 21: libegit2_reset
21/29 Test #21: libegit2_reset ................... Passed 0.27 sec
Start 22: libegit2_revert
22/29 Test #22: libegit2_revert .................. Passed 0.28 sec
Start 23: libegit2_revparse
23/29 Test #23: libegit2_revparse ................ Passed 0.16 sec
Start 24: libegit2_revwalk
24/29 Test #24: libegit2_revwalk ................. Passed 0.32 sec
Start 25: libegit2_signature
25/29 Test #25: libegit2_signature ............... Passed 0.10 sec
Start 26: libegit2_status
26/29 Test #26: libegit2_status .................. Passed 0.15 sec
Start 27: libegit2_submodule
27/29 Test #27: libegit2_submodule ............... Passed 0.47 sec
Start 28: libegit2_tag
28/29 Test #28: libegit2_tag ..................... Passed 0.19 sec
Start 29: libegit2_tree
29/29 Test #29: libegit2_tree .................... Passed 0.11 sec

97% tests passed, 1 tests failed out of 29

Total Test time (real) = 7.48 sec

The following tests FAILED:
3 - libegit2_blob (Failed)
Errors while running CTest
make: *** [Makefile:94: test] Error 8

Test suite failed, dumping logs.

IMO the problem is module_make_string in Emacs 28 force its input be a UTF-8 string. libgit-blob-rawcontent use this to create string for binary content, this is undefined behaviour, Eli Zaretskii claims if there's raw bytes in input string, module_make_string will raise an error.

So since emacs-mirror/emacs@3252f31, it's no longer possible.

We should consider change the representation of binary blob, maybe use vector of 8 bit number.

@cireu
Copy link
Author

cireu commented May 16, 2022

There's new module_make_unibyte_string for Emacs 28. We should use this to create from binary blob contet.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

1 participant