aboutsummaryrefslogtreecommitdiffstats
path: root/test/lisp/progmodes/python-tests.el
diff options
context:
space:
mode:
authorkobarity2022-11-27 18:52:32 +0900
committerEli Zaretskii2022-12-01 14:45:10 +0200
commit5d1a1019c61769e99782cc963a61673a194444d3 (patch)
tree4795d0c4533cfdfd85baf56996564eec8ccba72b /test/lisp/progmodes/python-tests.el
parent8b3baadf671b7b3d5058808c4655eca8bd46015e (diff)
downloademacs-5d1a1019c61769e99782cc963a61673a194444d3.tar.gz
emacs-5d1a1019c61769e99782cc963a61673a194444d3.zip
Add highlighting Python operators (bug#59629)
* lisp/progmodes/python.el (python-rx): Remove "is" and "not" from operator. (python-font-lock-keywords-maximum-decoration): Add highlighting operators. * test/lisp/progmodes/python-tests.el (python-font-lock-assignment-statement-1) (python-font-lock-assignment-statement-2) (python-font-lock-assignment-statement-3) (python-font-lock-assignment-statement-4) (python-font-lock-assignment-statement-5) (python-font-lock-assignment-statement-6) (python-font-lock-assignment-statement-7) (python-font-lock-assignment-statement-8) (python-font-lock-assignment-statement-9) (python-font-lock-assignment-statement-10) (python-font-lock-assignment-statement-11) (python-font-lock-assignment-statement-12) (python-font-lock-assignment-statement-13) (python-font-lock-assignment-statement-14) (python-font-lock-assignment-statement-15) (python-font-lock-assignment-statement-16) (python-font-lock-assignment-statement-17) (python-font-lock-assignment-statement-18) (python-font-lock-assignment-statement-multiline-1) (python-font-lock-assignment-statement-multiline-2) (python-font-lock-assignment-statement-multiline-3) (python-font-lock-assignment-statement-multiline-4) (python-font-lock-assignment-statement-multiline-5) (python-font-lock-assignment-statement-multiline-6) (python-font-lock-escape-sequence-multiline-string): Modify expectations to include faces for operators. (python-font-lock-operator-1, python-font-lock-operator-2): New tests.
Diffstat (limited to 'test/lisp/progmodes/python-tests.el')
-rw-r--r--test/lisp/progmodes/python-tests.el108
1 files changed, 90 insertions, 18 deletions
diff --git a/test/lisp/progmodes/python-tests.el b/test/lisp/progmodes/python-tests.el
index 3efc28c7edc..17d6d8aa706 100644
--- a/test/lisp/progmodes/python-tests.el
+++ b/test/lisp/progmodes/python-tests.el
@@ -280,28 +280,33 @@ aliqua."
280 "a, b, c = 1, 2, 3" 280 "a, b, c = 1, 2, 3"
281 '((1 . font-lock-variable-name-face) (2) 281 '((1 . font-lock-variable-name-face) (2)
282 (4 . font-lock-variable-name-face) (5) 282 (4 . font-lock-variable-name-face) (5)
283 (7 . font-lock-variable-name-face) (8)))) 283 (7 . font-lock-variable-name-face) (8)
284 (9 . font-lock-operator-face) (10))))
284 285
285(ert-deftest python-font-lock-assignment-statement-2 () 286(ert-deftest python-font-lock-assignment-statement-2 ()
286 (python-tests-assert-faces 287 (python-tests-assert-faces
287 "a, *b, c = 1, 2, 3, 4, 5" 288 "a, *b, c = 1, 2, 3, 4, 5"
288 '((1 . font-lock-variable-name-face) (2) 289 '((1 . font-lock-variable-name-face) (2)
290 (4 . font-lock-operator-face)
289 (5 . font-lock-variable-name-face) (6) 291 (5 . font-lock-variable-name-face) (6)
290 (8 . font-lock-variable-name-face) (9)))) 292 (8 . font-lock-variable-name-face) (9)
293 (10 . font-lock-operator-face) (11))))
291 294
292(ert-deftest python-font-lock-assignment-statement-3 () 295(ert-deftest python-font-lock-assignment-statement-3 ()
293 (python-tests-assert-faces 296 (python-tests-assert-faces
294 "[a, b] = (1, 2)" 297 "[a, b] = (1, 2)"
295 '((1) 298 '((1)
296 (2 . font-lock-variable-name-face) (3) 299 (2 . font-lock-variable-name-face) (3)
297 (5 . font-lock-variable-name-face) (6)))) 300 (5 . font-lock-variable-name-face) (6)
301 (8 . font-lock-operator-face) (9))))
298 302
299(ert-deftest python-font-lock-assignment-statement-4 () 303(ert-deftest python-font-lock-assignment-statement-4 ()
300 (python-tests-assert-faces 304 (python-tests-assert-faces
301 "(l[1], l[2]) = (10, 11)" 305 "(l[1], l[2]) = (10, 11)"
302 '((1) 306 '((1)
303 (2 . font-lock-variable-name-face) (3) 307 (2 . font-lock-variable-name-face) (3)
304 (8 . font-lock-variable-name-face) (9)))) 308 (8 . font-lock-variable-name-face) (9)
309 (14 . font-lock-operator-face) (15))))
305 310
306(ert-deftest python-font-lock-assignment-statement-5 () 311(ert-deftest python-font-lock-assignment-statement-5 ()
307 (python-tests-assert-faces 312 (python-tests-assert-faces
@@ -310,22 +315,29 @@ aliqua."
310 (2 . font-lock-variable-name-face) (3) 315 (2 . font-lock-variable-name-face) (3)
311 (5 . font-lock-variable-name-face) (6) 316 (5 . font-lock-variable-name-face) (6)
312 (8 . font-lock-variable-name-face) (9) 317 (8 . font-lock-variable-name-face) (9)
318 (11 . font-lock-operator-face)
313 (12 . font-lock-variable-name-face) (13) 319 (12 . font-lock-variable-name-face) (13)
320 (15 . font-lock-operator-face) (16)
321 (17 . font-lock-operator-face)
314 (18 . font-lock-variable-name-face) (19) 322 (18 . font-lock-variable-name-face) (19)
315 (21 . font-lock-variable-name-face) (22)))) 323 (21 . font-lock-variable-name-face) (22)
324 (23 . font-lock-operator-face) (24))))
316 325
317(ert-deftest python-font-lock-assignment-statement-6 () 326(ert-deftest python-font-lock-assignment-statement-6 ()
318 (python-tests-assert-faces 327 (python-tests-assert-faces
319 "(a,) = 'foo'," 328 "(a,) = 'foo',"
320 '((1) 329 '((1)
321 (2 . font-lock-variable-name-face) (3) 330 (2 . font-lock-variable-name-face) (3)
331 (6 . font-lock-operator-face) (7)
322 (8 . font-lock-string-face) (13)))) 332 (8 . font-lock-string-face) (13))))
323 333
324(ert-deftest python-font-lock-assignment-statement-7 () 334(ert-deftest python-font-lock-assignment-statement-7 ()
325 (python-tests-assert-faces 335 (python-tests-assert-faces
326 "(*a,) = ['foo', 'bar', 'baz']" 336 "(*a,) = ['foo', 'bar', 'baz']"
327 '((1) 337 '((1)
338 (2 . font-lock-operator-face)
328 (3 . font-lock-variable-name-face) (4) 339 (3 . font-lock-variable-name-face) (4)
340 (7 . font-lock-operator-face) (8)
329 (10 . font-lock-string-face) (15) 341 (10 . font-lock-string-face) (15)
330 (17 . font-lock-string-face) (22) 342 (17 . font-lock-string-face) (22)
331 (24 . font-lock-string-face) (29)))) 343 (24 . font-lock-string-face) (29))))
@@ -334,6 +346,7 @@ aliqua."
334 (python-tests-assert-faces 346 (python-tests-assert-faces
335 "d = D('a', ['b'], 'c')" 347 "d = D('a', ['b'], 'c')"
336 '((1 . font-lock-variable-name-face) (2) 348 '((1 . font-lock-variable-name-face) (2)
349 (3 . font-lock-operator-face) (4)
337 (7 . font-lock-string-face) (10) 350 (7 . font-lock-string-face) (10)
338 (13 . font-lock-string-face) (16) 351 (13 . font-lock-string-face) (16)
339 (19 . font-lock-string-face) (22)))) 352 (19 . font-lock-string-face) (22))))
@@ -344,7 +357,9 @@ aliqua."
344 '((1) 357 '((1)
345 (3 . font-lock-variable-name-face) (4) 358 (3 . font-lock-variable-name-face) (4)
346 (8 . font-lock-variable-name-face) (9) 359 (8 . font-lock-variable-name-face) (9)
360 (14 . font-lock-operator-face) (15)
347 (17 . font-lock-variable-name-face) (18) 361 (17 . font-lock-variable-name-face) (18)
362 (19 . font-lock-operator-face) (20)
348 (21 . font-lock-string-face) (24) 363 (21 . font-lock-string-face) (24)
349 (26 . font-lock-string-face) (29) 364 (26 . font-lock-string-face) (29)
350 (31 . font-lock-string-face) (34) 365 (31 . font-lock-string-face) (34)
@@ -355,7 +370,8 @@ aliqua."
355 (python-tests-assert-faces 370 (python-tests-assert-faces
356 "a: int = 5" 371 "a: int = 5"
357 '((1 . font-lock-variable-name-face) (2) 372 '((1 . font-lock-variable-name-face) (2)
358 (4 . font-lock-builtin-face) (7)))) 373 (4 . font-lock-builtin-face) (7)
374 (8 . font-lock-operator-face) (9))))
359 375
360(ert-deftest python-font-lock-assignment-statement-11 () 376(ert-deftest python-font-lock-assignment-statement-11 ()
361 (python-tests-assert-faces 377 (python-tests-assert-faces
@@ -364,13 +380,15 @@ aliqua."
364 (19 . font-lock-builtin-face) (22) 380 (19 . font-lock-builtin-face) (22)
365 (40 . font-lock-builtin-face) (43) 381 (40 . font-lock-builtin-face) (43)
366 (46 . font-lock-builtin-face) (49) 382 (46 . font-lock-builtin-face) (49)
383 (52 . font-lock-operator-face) (53)
367 (55 . font-lock-constant-face) (59) 384 (55 . font-lock-constant-face) (59)
368 (61 . font-lock-string-face) (66)))) 385 (61 . font-lock-string-face) (66))))
369 386
370(ert-deftest python-font-lock-assignment-statement-12 () 387(ert-deftest python-font-lock-assignment-statement-12 ()
371 (python-tests-assert-faces 388 (python-tests-assert-faces
372 "c: Collection = {1, 2, 3}" 389 "c: Collection = {1, 2, 3}"
373 '((1 . font-lock-variable-name-face) (2)))) 390 '((1 . font-lock-variable-name-face) (2)
391 (15 . font-lock-operator-face) (16))))
374 392
375(ert-deftest python-font-lock-assignment-statement-13 () 393(ert-deftest python-font-lock-assignment-statement-13 ()
376 (python-tests-assert-faces 394 (python-tests-assert-faces
@@ -378,6 +396,7 @@ aliqua."
378 '((1 . font-lock-variable-name-face) (2) 396 '((1 . font-lock-variable-name-face) (2)
379 (12 . font-lock-builtin-face) (15) 397 (12 . font-lock-builtin-face) (15)
380 (17 . font-lock-builtin-face) (20) 398 (17 . font-lock-builtin-face) (20)
399 (22 . font-lock-operator-face) (23)
381 (28 . font-lock-string-face) (33) 400 (28 . font-lock-string-face) (33)
382 (38 . font-lock-string-face) (43)))) 401 (38 . font-lock-string-face) (43))))
383 402
@@ -386,28 +405,38 @@ aliqua."
386 "(a) = 5; (b) = 6" 405 "(a) = 5; (b) = 6"
387 '((1) 406 '((1)
388 (2 . font-lock-variable-name-face) (3) 407 (2 . font-lock-variable-name-face) (3)
389 (11 . font-lock-variable-name-face) (12)))) 408 (5 . font-lock-operator-face) (6)
409 (11 . font-lock-variable-name-face) (12)
410 (14 . font-lock-operator-face) (15))))
390 411
391(ert-deftest python-font-lock-assignment-statement-15 () 412(ert-deftest python-font-lock-assignment-statement-15 ()
392 (python-tests-assert-faces 413 (python-tests-assert-faces
393 "[a] = 5,; [b] = 6," 414 "[a] = 5,; [b] = 6,"
394 '((1) 415 '((1)
395 (2 . font-lock-variable-name-face) (3) 416 (2 . font-lock-variable-name-face) (3)
396 (12 . font-lock-variable-name-face) (13)))) 417 (5 . font-lock-operator-face) (6)
418 (12 . font-lock-variable-name-face) (13)
419 (15 . font-lock-operator-face) (16))))
397 420
398(ert-deftest python-font-lock-assignment-statement-16 () 421(ert-deftest python-font-lock-assignment-statement-16 ()
399 (python-tests-assert-faces 422 (python-tests-assert-faces
400 "[*a] = 5, 6; [*b] = 7, 8" 423 "[*a] = 5, 6; [*b] = 7, 8"
401 '((1) 424 '((1)
425 (2 . font-lock-operator-face)
402 (3 . font-lock-variable-name-face) (4) 426 (3 . font-lock-variable-name-face) (4)
403 (16 . font-lock-variable-name-face) (17)))) 427 (6 . font-lock-operator-face) (7)
428 (15 . font-lock-operator-face)
429 (16 . font-lock-variable-name-face) (17)
430 (19 . font-lock-operator-face) (20))))
404 431
405(ert-deftest python-font-lock-assignment-statement-17 () 432(ert-deftest python-font-lock-assignment-statement-17 ()
406 (python-tests-assert-faces 433 (python-tests-assert-faces
407 "(a) = (b) = 1" 434 "(a) = (b) = 1"
408 `((1) 435 '((1)
409 (2 . font-lock-variable-name-face) (3) 436 (2 . font-lock-variable-name-face) (3)
410 (8 . font-lock-variable-name-face) (9)))) 437 (5 . font-lock-operator-face) (6)
438 (8 . font-lock-variable-name-face) (9)
439 (11 . font-lock-operator-face) (12))))
411 440
412(ert-deftest python-font-lock-assignment-statement-18 () 441(ert-deftest python-font-lock-assignment-statement-18 ()
413 (python-tests-assert-faces 442 (python-tests-assert-faces
@@ -420,13 +449,21 @@ def f(x: CustomInt) -> CustomInt:
420 return res 449 return res
421" 450"
422 '((1 . font-lock-variable-name-face) (10) 451 '((1 . font-lock-variable-name-face) (10)
452 (11 . font-lock-operator-face) (12)
423 (13 . font-lock-builtin-face) (16) 453 (13 . font-lock-builtin-face) (16)
424 (18 . font-lock-keyword-face) (21) 454 (18 . font-lock-keyword-face) (21)
425 (22 . font-lock-function-name-face) (23) 455 (22 . font-lock-function-name-face) (23)
456 (38 . font-lock-operator-face) (40)
426 (56 . font-lock-variable-name-face) (57) 457 (56 . font-lock-variable-name-face) (57)
458 (58 . font-lock-operator-face) (59)
459 (62 . font-lock-operator-face) (63)
427 (70 . font-lock-variable-name-face) (72) 460 (70 . font-lock-variable-name-face) (72)
461 (94 . font-lock-operator-face) (95)
462 (102 . font-lock-operator-face) (103)
428 (111 . font-lock-variable-name-face) (114) 463 (111 . font-lock-variable-name-face) (114)
464 (126 . font-lock-operator-face) (127)
429 (128 . font-lock-builtin-face) (131) 465 (128 . font-lock-builtin-face) (131)
466 (136 . font-lock-operator-face) (137)
430 (144 . font-lock-keyword-face) (150)))) 467 (144 . font-lock-keyword-face) (150))))
431 468
432(ert-deftest python-font-lock-assignment-statement-multiline-1 () 469(ert-deftest python-font-lock-assignment-statement-multiline-1 ()
@@ -442,7 +479,8 @@ def f(x: CustomInt) -> CustomInt:
442" 479"
443 '((1) 480 '((1)
444 (8 . font-lock-variable-name-face) (9) 481 (8 . font-lock-variable-name-face) (9)
445 (15 . font-lock-variable-name-face) (16)) 482 (15 . font-lock-variable-name-face) (16)
483 (19 . font-lock-operator-face) (20))
446 "#" "=")) 484 "#" "="))
447 485
448(ert-deftest python-font-lock-assignment-statement-multiline-2 () 486(ert-deftest python-font-lock-assignment-statement-multiline-2 ()
@@ -453,7 +491,9 @@ def f(x: CustomInt) -> CustomInt:
453] # 5, 6 491] # 5, 6
454" 492"
455 '((1) 493 '((1)
456 (9 . font-lock-variable-name-face) (10)) 494 (8 . font-lock-operator-face)
495 (9 . font-lock-variable-name-face) (10)
496 (13 . font-lock-operator-face) (14))
457 "#" "=")) 497 "#" "="))
458 498
459(ert-deftest python-font-lock-assignment-statement-multiline-3 () 499(ert-deftest python-font-lock-assignment-statement-multiline-3 ()
@@ -471,7 +511,8 @@ def f(x: CustomInt) -> CustomInt:
471 3" 511 3"
472 '((1 . font-lock-variable-name-face) (2) 512 '((1 . font-lock-variable-name-face) (2)
473 (15 . font-lock-variable-name-face) (16) 513 (15 . font-lock-variable-name-face) (16)
474 (29 . font-lock-variable-name-face) (30)) 514 (29 . font-lock-variable-name-face) (30)
515 (36 . font-lock-operator-face) (37))
475 "#" "=")) 516 "#" "="))
476 517
477(ert-deftest python-font-lock-assignment-statement-multiline-4 () 518(ert-deftest python-font-lock-assignment-statement-multiline-4 ()
@@ -482,7 +523,8 @@ def f(x: CustomInt) -> CustomInt:
482 #\\ 523 #\\
483 5" 524 5"
484 '((1 . font-lock-variable-name-face) (2) 525 '((1 . font-lock-variable-name-face) (2)
485 (15 . font-lock-builtin-face) (18)) 526 (15 . font-lock-builtin-face) (18)
527 (24 . font-lock-operator-face) (25))
486 "#" "=")) 528 "#" "="))
487 529
488(ert-deftest python-font-lock-assignment-statement-multiline-5 () 530(ert-deftest python-font-lock-assignment-statement-multiline-5 ()
@@ -500,7 +542,9 @@ def f(x: CustomInt) -> CustomInt:
500 6" 542 6"
501 '((1) 543 '((1)
502 (8 . font-lock-variable-name-face) (9) 544 (8 . font-lock-variable-name-face) (9)
503 (46 . font-lock-variable-name-face) (47)) 545 (18 . font-lock-operator-face) (19)
546 (46 . font-lock-variable-name-face) (47)
547 (60 . font-lock-operator-face) (61))
504 "#" "=")) 548 "#" "="))
505 549
506(ert-deftest python-font-lock-assignment-statement-multiline-6 () 550(ert-deftest python-font-lock-assignment-statement-multiline-6 ()
@@ -518,9 +562,33 @@ def f(x: CustomInt) -> CustomInt:
518 6" 562 6"
519 '((1) 563 '((1)
520 (7 . font-lock-variable-name-face) (8) 564 (7 . font-lock-variable-name-face) (8)
521 (43 . font-lock-variable-name-face) (44)) 565 (16 . font-lock-operator-face) (17)
566 (43 . font-lock-variable-name-face) (44)
567 (56 . font-lock-operator-face) (57))
522 "#" "=")) 568 "#" "="))
523 569
570(ert-deftest python-font-lock-operator-1 ()
571 (python-tests-assert-faces
572 "1 << 2 ** 3 == +4%-5|~6&7^8%9"
573 '((1)
574 (3 . font-lock-operator-face) (5)
575 (8 . font-lock-operator-face) (10)
576 (13 . font-lock-operator-face) (15)
577 (16 . font-lock-operator-face) (17)
578 (18 . font-lock-operator-face) (20)
579 (21 . font-lock-operator-face) (23)
580 (24 . font-lock-operator-face) (25)
581 (26 . font-lock-operator-face) (27)
582 (28 . font-lock-operator-face) (29))))
583
584(ert-deftest python-font-lock-operator-2 ()
585 "Keyword operators are font-locked as keywords."
586 (python-tests-assert-faces
587 "is_ is None"
588 '((1)
589 (5 . font-lock-keyword-face) (7)
590 (8 . font-lock-constant-face))))
591
524(ert-deftest python-font-lock-escape-sequence-string-newline () 592(ert-deftest python-font-lock-escape-sequence-string-newline ()
525 (python-tests-assert-faces 593 (python-tests-assert-faces
526 "'\\n' 594 "'\\n'
@@ -603,12 +671,16 @@ u\"\\n\""
603 (196 . font-lock-constant-face) 671 (196 . font-lock-constant-face)
604 (215 . font-lock-string-face) (218) 672 (215 . font-lock-string-face) (218)
605 (221 . font-lock-string-face) (254) 673 (221 . font-lock-string-face) (254)
674 (259 . font-lock-operator-face) (260)
606 (271 . font-lock-string-face) (274) 675 (271 . font-lock-string-face) (274)
607 (277 . font-lock-string-face) (310) 676 (277 . font-lock-string-face) (310)
677 (315 . font-lock-operator-face) (316)
608 (327 . font-lock-string-face) (330) 678 (327 . font-lock-string-face) (330)
609 (333 . font-lock-string-face) (366) 679 (333 . font-lock-string-face) (366)
680 (371 . font-lock-operator-face) (372)
610 (383 . font-lock-string-face) (386) 681 (383 . font-lock-string-face) (386)
611 (389 . font-lock-string-face) (422) 682 (389 . font-lock-string-face) (422)
683 (427 . font-lock-operator-face) (428)
612 (439 . font-lock-string-face) (442) 684 (439 . font-lock-string-face) (442)
613 (444 . font-lock-string-face) (497) 685 (444 . font-lock-string-face) (497)
614 (499 . font-lock-string-face) (552) 686 (499 . font-lock-string-face) (552)