Lem
GitHubDiscord Matrix モードの切替 ダーク/ライト/自動モードの切替 ダーク/ライト/自動モードの切替 ダーク/ライト/自動トップページへ戻る

How Lem works on each implementation

Tests

Lem has a test suite that is trigger by the system lem-tests.asd, this list want to evaluate how each implementation is able to run these tests and the output of each.

Each check-mark means that all the tests are passing in that package.

This pull requests is used to track the progress: https://github.com/lem-project/lem/pull/686

This is the reference implementation, all tests should work in order to work in main.

Other implementations

Armed Bear Common Lisp (ABCL) is a full implementation of the Common Lisp language featuring both an interpreter and a compiler, running in the JVM.

Armed Bear Common Lisp 1.9.0 Java 11.0.19 Ubuntu OpenJDK 64-Bit Server VM

Common module
ring
killring
history
timer
Lisp-syntax
indent-test
defstruct-to-defclass
Lisp-mode
package-inferred-system
Misc
killring
string-width-utils
wide-char-p
  ✓ Expect (LOOP :FOR CHAR :IN LEM-TESTS/STRING-WIDTH-UTILS::ALPHABET-OR-NUMBERS :ALWAYS (NOT (LEM-BASE:WIDE-CHAR-P CHAR))) to be true.
  ✓ Expect (LOOP :FOR CHAR :IN LEM-TESTS/STRING-WIDTH-UTILS::CONTROL-CHARS :ALWAYS (LEM-BASE:WIDE-CHAR-P CHAR)) to be true.
  × 0) Expect (LOOP :FOR (LEM-TESTS/STRING-WIDTH-UTILS::START LEM-TESTS/STRING-WIDTH-UTILS::END) :IN LEM-TESTS/STRING-WIDTH-UTILS::+EASTASIAN-FULL-PAIRS+ :ALWAYS (LOOP :FOR LEM-TESTS/STRING-WIDTH-UTILS::CODE :FROM LEM-TESTS/STRING-WIDTH-UTILS::START :TO LEM-TESTS/STRING-WIDTH-UTILS::END :ALWAYS (LEM-BASE:WIDE-CHAR-P (CODE-CHAR LEM-TESTS/STRING-WIDTH-UTILS::CODE)))) to be true. (80ms)
  ✓ Expect (LEM-BASE:WIDE-CHAR-P (CODE-CHAR 127798)) to be false.
  ✓ Expect (LEM-BASE:WIDE-CHAR-P (CODE-CHAR 128253)) to be false.

× 1 of 5 tests failed

0) Expect (LOOP :FOR (LEM-TESTS/STRING-WIDTH-UTILS::START LEM-TESTS/STRING-WIDTH-UTILS::END) :IN LEM-TESTS/STRING-WIDTH-UTILS::+EASTASIAN-FULL-PAIRS+ :ALWAYS (LOOP :FOR LEM-TESTS/STRING-WIDTH-UTILS::CODE :FROM LEM-TESTS/STRING-WIDTH-UTILS::START :TO LEM-TESTS/STRING-WIDTH-UTILS::END :ALWAYS (LEM-BASE:WIDE-CHAR-P (CODE-CHAR LEM-TESTS/STRING-WIDTH-UTILS::CODE)))) to be true.
     (LOOP :FOR (LEM-TESTS/STRING-WIDTH-UTILS::START LEM-TESTS/STRING-WIDTH-UTILS::END) :IN LEM-TESTS/STRING-WIDTH-UTILS::+EASTASIAN-FULL-PAIRS+ :ALWAYS (LOOP :FOR LEM-TESTS/STRING-WIDTH-UTILS::CODE :FROM LEM-TESTS/STRING-WIDTH-UTILS::START :TO LEM-TESTS/STRING-WIDTH-UTILS::END :ALWAYS (LEM-BASE:WIDE-CHAR-P (CODE-CHAR LEM-TESTS/STRING-WIDTH-UTILS::CODE))))
buffer-list-tests
popup-window
prompt
isearch
cursors
simple-fake-cursor-test
  Test the fake-cursor created
    buffer-fake-cursors
      ✓ Expect (ALEXANDRIA:LENGTH= 1 (LEM-CORE:BUFFER-FAKE-CURSORS LEM-TESTS/CURSORS::BUFFER)) to be true.
      ✓ Expect (EQ LEM-TESTS/CURSORS::CURSOR (FIRST (LEM-CORE:BUFFER-FAKE-CURSORS LEM-TESTS/CURSORS::BUFFER))) to be true.
    killring
      ✓ Expect (EQ (LEM-CORE:CURRENT-KILLRING) LEM-TESTS/CURSORS::KILLRING) to be false.
      ✓ Expect (EQUAL "aaa" (LEM/COMMON/KILLRING:PEEK-KILLRING-ITEM LEM-TESTS/CURSORS::KILLRING 2)) to be true.
      ✓ Expect (EQUAL "bbb" (LEM/COMMON/KILLRING:PEEK-KILLRING-ITEM LEM-TESTS/CURSORS::KILLRING 1)) to be true.
      ✓ Expect (EQUAL "ccc" (LEM/COMMON/KILLRING:PEEK-KILLRING-ITEM LEM-TESTS/CURSORS::KILLRING 0)) to be true.
    point-kind
      ✓ Expect (EQ :LEFT-INSERTING (LEM-BASE:POINT-KIND LEM-TESTS/CURSORS::CURSOR)) to be true.
  Delete cursor
    ✓ Expect (NULL (LEM-CORE:BUFFER-FAKE-CURSORS LEM-TESTS/CURSORS::BUFFER)) to be true.

2 tests completed
test-to-execute-a-series-of-commands
  execute self-insert command
    × 1) Raise an error while testing.
  execute delete-previous-character command
    × 2) Raise an error while testing.
  multiple cursor killring
    ✓ Expect (EQUAL (QUOTE ("abcd" "opqr" "hijk")) (MAPCAR (LAMBDA (LEM-TESTS/CURSORS::KILLRING) (LEM/COMMON/KILLRING:PEEK-KILLRING-ITEM LEM-TESTS/CURSORS::KILLRING 0)) (CONS LEM-CORE::*KILLRING* (MAPCAR (LAMBDA (LEM-TESTS/CURSORS::CURSOR) (LEM-CORE::FAKE-CURSOR-KILLRING LEM-TESTS/CURSORS::CURSOR)) (LEM-CORE:BUFFER-FAKE-CURSORS LEM-TESTS/CURSORS::BUFFER))))) to be true.

× 2 of 3 tests failed

0) execute self-insert command
   Raise an error while testing.
   SIMPLE-TYPE-ERROR: Bad argument to SIGNAL: #.

     0: (# Bad argument to SIGNAL: #.)
     1: (SIGNAL Bad argument to SIGNAL: #.)
     2: (ERROR SIMPLE-TYPE-ERROR DATUM # EXPECTED-TYPE (OR SYMBOL STRING) FORMAT-CONTROL Bad argument to ~S: ~S. FORMAT-ARGUMENTS (SIGNAL #))
     3: (SYSTEM:COERCE-TO-CONDITION # (COMMAND #) SIMPLE-CONDITION SIGNAL)
     4: (SIGNAL # COMMAND #)
     5: (APPLY # # (COMMAND #))
     6: (LEM-CORE::SIGNAL-SUBCONDITIONS BEFORE-EXECUTING-COMMAND COMMAND #)
     7: (LEM-CORE:CALL-COMMAND SELF-INSERT NIL)
     8: (LEM-CORE:EXECUTE-KEY-SEQUENCE ( ))
     9: (#)
     10: (LEM-BASE::CALL-WITH-CURRENT-BUFFERS NIL #)
     11: (#)
     12: (RUN-SUITE LEM-TESTS/CURSORS)
     13: (SYSTEM::%EVAL (RUN-SUITE LEM-TESTS/CURSORS))
     14: (EVAL (RUN-SUITE LEM-TESTS/CURSORS))

1) execute delete-previous-character command
   Raise an error while testing.
   SIMPLE-TYPE-ERROR: Bad argument to SIGNAL: #.

     0: (# Bad argument to SIGNAL: #.)
     1: (SIGNAL Bad argument to SIGNAL: #.)
     2: (ERROR SIMPLE-TYPE-ERROR DATUM # EXPECTED-TYPE (OR SYMBOL STRING) FORMAT-CONTROL Bad argument to ~S: ~S. FORMAT-ARGUMENTS (SIGNAL #))
     3: (SYSTEM:COERCE-TO-CONDITION # (COMMAND #) SIMPLE-CONDITION SIGNAL)
     4: (SIGNAL # COMMAND #)
     5: (APPLY # # (COMMAND #))
     6: (LEM-CORE::SIGNAL-SUBCONDITIONS BEFORE-EXECUTING-COMMAND COMMAND #)
     7: (LEM-CORE:CALL-COMMAND DELETE-PREVIOUS-CHAR NIL)
     8: (LEM-CORE:EXECUTE-KEY-SEQUENCE (C-h))
     9: (#)
     10: (LEM-BASE::CALL-WITH-CURRENT-BUFFERS NIL #)
     11: (#)
     12: (RUN-SUITE LEM-TESTS/CURSORS)
     13: (SYSTEM::%EVAL (RUN-SUITE LEM-TESTS/CURSORS))
     14: (EVAL (RUN-SUITE LEM-TESTS/CURSORS))
next-line/previous-line
  ✓ Expect (LEM-TESTS/CURSORS::POSITIONS-SET-EQUAL (QUOTE ((2 12) (3 10) (4 10))) (LEM-TESTS/CURSORS::ALL-POSITIONS LEM-TESTS/CURSORS::BUFFER)) to be true.
  ✓ Expect (LEM-TESTS/CURSORS::POSITIONS-SET-EQUAL (QUOTE ((1 14) (2 12) (3 10))) (LEM-TESTS/CURSORS::ALL-POSITIONS LEM-TESTS/CURSORS::BUFFER)) to be true.
  ✓ Expect (LEM-TESTS/CURSORS::POSITIONS-SET-EQUAL (QUOTE ((2 12) (3 10) (4 10))) (LEM-TESTS/CURSORS::ALL-POSITIONS LEM-TESTS/CURSORS::BUFFER)) to be true.

3 tests completed
self-insert-command
self-insert-command
  × 2) Raise an error while testing.

× 1 of 1 test failed

0) Raise an error while testing.
   UNBOUND-VARIABLE: The variable LEM-BASE::N is unbound.

     0: (# The variable LEM-BASE::N is unbound.)
     1: (SIGNAL The variable LEM-BASE::N is unbound.)
     2: (:CLASS org.armedbear.lisp.Lisp METHOD error FILE Lisp.java LINE 383)
     3: (:CLASS org.armedbear.lisp.Symbol METHOD symbolValue FILE Symbol.java LINE 354)
     4: (:CLASS org.armedbear.lisp.buffer_insert_tmp84OWIL66_26 METHOD execute FILE buffer-insert.lisp LINE 186)
     5: (:CLASS org.armedbear.lisp.Symbol METHOD execute FILE Symbol.java LINE 828)
     6: (:CLASS org.armedbear.lisp.LispThread METHOD execute FILE LispThread.java LINE 945)
     7: (:CLASS org.armedbear.lisp.buffer_insert_tmp84OWIL66_31 METHOD execute FILE buffer-insert.lisp LINE 200)
     8: (:CLASS org.armedbear.lisp.clos_307 METHOD execute FILE clos.lisp LINE 2634)
     9: (:CLASS org.armedbear.lisp.LispThread METHOD execute FILE LispThread.java LINE 904)
     10: (:CLASS org.armedbear.lisp.buffer_insert_tmp84OWIL66_51 METHOD execute FILE buffer-insert.lisp LINE 286)
     11: (:CLASS org.armedbear.lisp.CompiledClosure METHOD execute FILE CompiledClosure.java LINE 89)
     12: (:CLASS org.armedbear.lisp.buffer_insert_tmp84OWIL66_50 METHOD execute FILE buffer-insert.lisp LINE 286)
     13: (:CLASS org.armedbear.lisp.clos_310 METHOD execute FILE clos.lisp LINE 2733)
     14: (:CLASS org.armedbear.lisp.clos_281 METHOD execute FILE clos.lisp LINE 2315)
NIL
interp
execute-the-same-command-consecutively
  × 3) Raise an error while testing.

× 1 of 1 test failed

0) Raise an error while testing.
   SIMPLE-TYPE-ERROR: Bad argument to SIGNAL: #.

     0: (# Bad argument to SIGNAL: #.)
     1: (SIGNAL Bad argument to SIGNAL: #.)
     2: (ERROR SIMPLE-TYPE-ERROR DATUM # EXPECTED-TYPE (OR SYMBOL STRING) FORMAT-CONTROL Bad argument to ~S: ~S. FORMAT-ARGUMENTS (SIGNAL #))
     3: (SYSTEM:COERCE-TO-CONDITION # (COMMAND #<$TEST-COMMAND-FLAG {14475B93}>) SIMPLE-CONDITION SIGNAL)
     4: (SIGNAL # COMMAND #<$TEST-COMMAND-FLAG {14475B93}>)
     5: (APPLY # # (COMMAND #<$TEST-COMMAND-FLAG {14475B93}>))
     6: (LEM-CORE::SIGNAL-SUBCONDITIONS BEFORE-EXECUTING-COMMAND COMMAND #<$TEST-COMMAND-FLAG {14475B93}>)
     7: (LEM-CORE:CALL-COMMAND $TEST-COMMAND-FLAG NIL)
     8: (LEM/TESTS/INTERP::EXECUTE-TESTING-COMMAND 3 $TEST-COMMAND-FLAG)
     9: (#)
     10: (LEM-BASE::CALL-WITH-CURRENT-BUFFERS NIL #)
     11: (#)
     12: (RUN-SUITE LEM/TESTS/INTERP)
     13: (SYSTEM::%EVAL (RUN-SUITE LEM/TESTS/INTERP))
     14: (EVAL (RUN-SUITE LEM/TESTS/INTERP))
NIL
file
completion