summaryrefslogtreecommitdiffstats
ModeNameSize
-rw-r--r--.gitignore1091logstatsplain
-rw-r--r--.mailmap4465logstatsplain
-rw-r--r--COPYING18693logstatsplain
-rw-r--r--CREDITS95317logstatsplain
d---------Documentation9172logstatsplain
-rw-r--r--Kbuild2536logstatsplain
-rw-r--r--Kconfig252logstatsplain
-rw-r--r--MAINTAINERS254067logstatsplain
-rw-r--r--Makefile48423logstatsplain
-rw-r--r--README18736logstatsplain
-rw-r--r--REPORTING-BUGS7485logstatsplain
d---------arch1033logstatsplain
d---------block1290logstatsplain
d---------crypto3426logstatsplain
d---------drivers3580logstatsplain
d---------firmware1704logstatsplain
d---------fs5032logstatsplain
d---------include813logstatsplain
d---------init508logstatsplain
d---------ipc550logstatsplain
d---------kernel5317logstatsplain
d---------lib6914logstatsplain
d---------mm3198logstatsplain
d---------net1937logstatsplain
d---------samples410logstatsplain
d---------scripts3514logstatsplain
d---------security575logstatsplain
d---------sound849logstatsplain
d---------tools514logstatsplain
d---------usr196logstatsplain
d---------virt / kvm30logstatsplain
href='#n395'>395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508
" Test that the methods used for testing work.

source check.vim
source term_util.vim

func Test_assert_false()
  call assert_equal(0, assert_false(0))
  call assert_equal(0, assert_false(v:false))
  call assert_equal(0, v:false->assert_false())

  call assert_equal(1, assert_false(123))
  call assert_match("Expected False but got 123", v:errors[0])
  call remove(v:errors, 0)

  call assert_equal(1, 123->assert_false())
  call assert_match("Expected False but got 123", v:errors[0])
  call remove(v:errors, 0)
endfunc

func Test_assert_true()
  call assert_equal(0, assert_true(1))
  call assert_equal(0, assert_true(123))
  call assert_equal(0, assert_true(v:true))
  call assert_equal(0, v:true->assert_true())

  call assert_equal(1, assert_true(0))
  call assert_match("Expected True but got 0", v:errors[0])
  call remove(v:errors, 0)

  call assert_equal(1, 0->assert_true())
  call assert_match("Expected True but got 0", v:errors[0])
  call remove(v:errors, 0)
endfunc

func Test_assert_equal()
  let s = 'foo'
  call assert_equal(0, assert_equal('foo', s))
  let n = 4
  call assert_equal(0, assert_equal(4, n))
  let l = [1, 2, 3]
  call assert_equal(0, assert_equal([1, 2, 3], l))
  call assert_equal(test_null_list(), test_null_list())
  call assert_equal(test_null_list(), [])
  call assert_equal([], test_null_list())

  let s = 'foo'
  call assert_equal(1, assert_equal('bar', s))
  call assert_match("Expected 'bar' but got 'foo'", v:errors[0])
  call remove(v:errors, 0)

  call assert_equal('XxxxxxxxxxxxxxxxxxxxxxX', 'XyyyyyyyyyyyyyyyyyyyyyyyyyX')
  call assert_match("Expected 'X\\\\\\[x occurs 21 times]X' but got 'X\\\\\\[y occurs 25 times]X'", v:errors[0])
  call remove(v:errors, 0)

  " special characters are escaped
  call assert_equal("\b\e\f\n\t\r\\\x01\x7f", 'x')
  call assert_match('Expected ''\\b\\e\\f\\n\\t\\r\\\\\\x01\\x7f'' but got ''x''', v:errors[0])
  call remove(v:errors, 0)

  " many composing characters are handled properly
  call setline(1, ' ')
  norm 100grƯ€
  call assert_equal(1, getline(1))
  call assert_match("Expected 1 but got '.* occurs 100 times]'", v:errors[0])
  call remove(v:errors, 0)
  bwipe!
endfunc

func Test_assert_equal_dict()
  call assert_equal(0, assert_equal(#{one: 1, two: 2}, #{two: 2, one: 1}))

  call assert_equal(1, assert_equal(#{one: 1, two: 2}, #{two: 2, one: 3}))
  call assert_match("Expected {'one': 1} but got {'one': 3} - 1 equal item omitted", v:errors[0])
  call remove(v:errors, 0)

  call assert_equal(1, assert_equal(#{one: 1, two: 2}, #{two: 22, one: 11}))
  call assert_match("Expected {'one': 1, 'two': 2} but got {'one': 11, 'two': 22}", v:errors[0])
  call remove(v:errors, 0)

  call assert_equal(1, assert_equal(#{}, #{two: 2, one: 1}))
  call assert_match("Expected {} but got {'one': 1, 'two': 2}", v:errors[0])
  call remove(v:errors, 0)

  call assert_equal(1, assert_equal(#{two: 2, one: 1}, #{}))
  call assert_match("Expected {'one': 1, 'two': 2} but got {}", v:errors[0])
  call remove(v:errors, 0)
endfunc

func Test_assert_equalfile()
  call assert_equal(1, assert_equalfile('abcabc', 'xyzxyz'))
  call assert_match("E485: Can't read file abcabc", v:errors[0])
  call remove(v:errors, 0)

  let goodtext = ["one", "two", "three"]
  call writefile(goodtext, 'Xone', 'D')
  call assert_equal(1, 'Xone'->assert_equalfile('xyzxyz'))
  call assert_match("E485: Can't read file xyzxyz", v:errors[0])
  call remove(v:errors, 0)

  call writefile(goodtext, 'Xtwo', 'D')
  call assert_equal(0, assert_equalfile('Xone', 'Xtwo'))

  call writefile([goodtext[0]], 'Xone')
  call assert_equal(1, assert_equalfile('Xone', 'Xtwo'))
  call assert_match("first file is shorter", v:errors[0])
  call remove(v:errors, 0)

  call writefile(goodtext, 'Xone')
  call writefile([goodtext[0]], 'Xtwo')
  call assert_equal(1, assert_equalfile('Xone', 'Xtwo'))
  call assert_match("second file is shorter", v:errors[0])
  call remove(v:errors, 0)

  call writefile(['1234X89'], 'Xone')
  call writefile(['1234Y89'], 'Xtwo')
  call assert_equal(1, assert_equalfile('Xone', 'Xtwo'))
  call assert_match('difference at byte 4, line 1 after "1234X" vs "1234Y"', v:errors[0])
  call remove(v:errors, 0)

  call writefile([repeat('x', 234) .. 'X'], 'Xone')
  call writefile([repeat('x', 234) .. 'Y'], 'Xtwo')
  call assert_equal(1, assert_equalfile('Xone', 'Xtwo'))
  let xes = repeat('x', 134)
  call assert_match('difference at byte 234, line 1 after "' .. xes .. 'X" vs "' .. xes .. 'Y"', v:errors[0])
  call remove(v:errors, 0)

  call assert_equal(1, assert_equalfile('Xone', 'Xtwo', 'a message'))
  call assert_match("a message: difference at byte 234, line 1 after", v:errors[0])
  call remove(v:errors, 0)
endfunc

func Test_assert_notequal()
  let n = 4
  call assert_equal(0, assert_notequal('foo', n))
  let s = 'foo'
  call assert_equal(0, assert_notequal([1, 2, 3], s))

  call assert_equal(1, assert_notequal('foo', s))
  call assert_match("Expected not equal to 'foo'", v:errors[0])
  call remove(v:errors, 0)
endfunc

func Test_assert_report()
  call assert_equal(1, assert_report('something is wrong'))
  call assert_match('something is wrong', v:errors[0])
  call remove(v:errors, 0)
  call assert_equal(1, 'also wrong'->assert_report())
  call assert_match('also wrong', v:errors[0])
  call remove(v:errors, 0)
endfunc

func Test_assert_exception()
  try
    nocommand
  catch
    call assert_equal(0, assert_exception('E492:'))
  endtry

  try
    nocommand
  catch
    call assert_equal(1, assert_exception('E12345:'))
  endtry
  call assert_match("Expected 'E12345:' but got 'Vim:E492: ", v:errors[0])
  call remove(v:errors, 0)

  try
    nocommand
  catch
    try
      " illegal argument, get NULL for error
      call assert_equal(1, assert_exception([]))
    catch
      call assert_equal(0, assert_exception('E730:'))
    endtry
  endtry

  call assert_equal(1, assert_exception('E492:'))
  call assert_match('v:exception is not set', v:errors[0])
  call remove(v:errors, 0)
endfunc

func Test_wrong_error_type()
  let save_verrors = v:errors
  let v:['errors'] = {'foo': 3}
  call assert_equal('yes', 'no')
  let verrors = v:errors
  let v:errors = save_verrors
  call assert_equal(type([]), type(verrors))
endfunc

func Test_compare_fail()
  let s:v = {}
  let s:x = {"a": s:v}
  let s:v["b"] = s:x
  let s:w = {"c": s:x, "d": ''}
  try
    call assert_equal(s:w, '')
  catch
    call assert_equal(0, assert_exception('E724:'))
    call assert_match("Expected NULL but got ''", v:errors[0])
    call remove(v:errors, 0)
  endtry
endfunc

func Test_match()
  call assert_equal(0, assert_match('^f.*b.*r$', 'foobar'))

  call assert_equal(1, assert_match('bar.*foo', 'foobar'))
  call assert_match("Pattern 'bar.*foo' does not match 'foobar'", v:errors[0])
  call remove(v:errors, 0)

  call assert_equal(1, assert_match('bar.*foo', 'foobar', 'wrong'))
  call assert_match('wrong', v:errors[0])
  call remove(v:errors, 0)

  call assert_equal(1, 'foobar'->assert_match('bar.*foo', 'wrong'))
  call assert_match('wrong', v:errors[0])
  call remove(v:errors, 0)
endfunc

func Test_notmatch()
  call assert_equal(0, assert_notmatch('foo', 'bar'))
  call assert_equal(0, assert_notmatch('^foobar$', 'foobars'))

  call assert_equal(1, assert_notmatch('foo', 'foobar'))
  call assert_match("Pattern 'foo' does match 'foobar'", v:errors[0])
  call remove(v:errors, 0)

  call assert_equal(1, 'foobar'->assert_notmatch('foo'))
  call assert_match("Pattern 'foo' does match 'foobar'", v:errors[0])
  call remove(v:errors, 0)
endfunc

func Test_assert_fail_fails()
  call assert_equal(1, assert_fails('xxx', 'E12345'))
  call assert_match("Expected 'E12345' but got 'E492:", v:errors[0])
  call remove(v:errors, 0)

  call assert_equal(1, assert_fails('xxx', 'E9876', 'stupid'))
  call assert_match("stupid: Expected 'E9876' but got 'E492:", v:errors[0])
  call remove(v:errors, 0)

  call assert_equal(1, assert_fails('xxx', ['E9876']))
  call assert_match("Expected 'E9876' but got 'E492:", v:errors[0])
  call remove(v:errors, 0)

  call assert_equal(1, assert_fails('xxx', ['E492:', 'E9876']))
  call assert_match("Expected 'E9876' but got 'E492:", v:errors[0])
  call remove(v:errors, 0)

  call assert_equal(1, assert_fails('echo', '', 'echo command'))
  call assert_match("command did not fail: echo command", v:errors[0])
  call remove(v:errors, 0)

  call assert_equal(1, 'echo'->assert_fails('', 'echo command'))
  call assert_match("command did not fail: echo command", v:errors[0])
  call remove(v:errors, 0)

  try
    call assert_equal(1, assert_fails('xxx', []))
  catch
    let exp = v:exception
  endtry
  call assert_match("E856: \"assert_fails()\" second argument", exp)

  try
    call assert_equal(1, assert_fails('xxx', ['1', '2', '3']))
  catch
    let exp = v:exception
  endtry
  call assert_match("E856: \"assert_fails()\" second argument", exp)

  try
    call assert_equal(1, assert_fails('xxx', test_null_list()))
  catch
    let exp = v:exception
  endtry
  call assert_match("E856: \"assert_fails()\" second argument", exp)

  try
    call assert_equal(1, assert_fails('xxx', []))
  catch
    let exp