aboutsummaryrefslogtreecommitdiff
path: root/test/functional/legacy/010_errorformat_spec.lua
blob: 785bf136b543e657e86e562caa3f982b93528be7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
-- Test for 'errorformat'.  This will fail if the quickfix feature was
-- disabled.

local helpers = require('test.functional.helpers')(after_each)
local feed, clear, execute = helpers.feed, helpers.clear, helpers.execute
local expect, write_file = helpers.expect, helpers.write_file

describe('errorformat', function()
  setup(function()
    clear()
    local error_file_text = [[
      start of errorfile
      "Xtestfile", line 4.12: 1506-045 (S) Undeclared identifier fd_set.
      "Xtestfile", line 6 col 19; this is an error
      gcc -c -DHAVE_CONFIsing-prototypes -I/usr/X11R6/include  version.c
      Xtestfile:9: parse error before `asd'
      make: *** [vim] Error 1
      in file "Xtestfile" linenr 10: there is an error
      
      2 returned
      "Xtestfile", line 11 col 1; this is an error
      "Xtestfile", line 12 col 2; this is another error
      "Xtestfile", line 14:10; this is an error in column 10
      =Xtestfile=, line 15:10; this is another error, but in vcol 10 this time
      "Xtestfile", linenr 16: yet another problem
      Error in "Xtestfile" at line 17:
      x should be a dot
      	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 17
                  ^
      Error in "Xtestfile" at line 18:
      x should be a dot
      	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 18
      .............^
      Error in "Xtestfile" at line 19:
      x should be a dot
      	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 19
      --------------^
      Error in "Xtestfile" at line 20:
      x should be a dot
      	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 20
      	       ^
      
      Does anyone know what is the problem and how to correction it?
      "Xtestfile", line 21 col 9: What is the title of the quickfix window?
      "Xtestfile", line 22 col 9: What is the title of the quickfix window?
      ]]
    write_file('Xerrorfile1', error_file_text .. 'end of errorfile\n')
    write_file('Xerrorfile2', error_file_text)
    write_file('Xtestfile', [[
      start of testfile
      	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  2
      	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  3
      	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  4
      	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  5
      	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  6
      	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  7
      	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  8
      	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  9
      	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 10
      	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 11
      	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 12
      	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 13
      	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 14
      	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 15
      	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 16
      	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 17
      	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 18
      	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 19
      	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 20
      	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 21
      	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 22
      end of testfile
      ]])
  end)
  teardown(function()
    os.remove('Xerrorfile1')
    os.remove('Xerrorfile2')
    os.remove('Xtestfile')
  end)

  it('is working', function()
    -- Also test a BOM is ignored.
    execute(
      'set encoding=utf-8',
      [[set efm+==%f=\\,\ line\ %l%*\\D%v%*[^\ ]\ %m]],
      [[set efm^=%AError\ in\ \"%f\"\ at\ line\ %l:,%Z%p^,%C%m]],
      'cf Xerrorfile2',
      'clast',
      'copen',
      'let a=w:quickfix_title',
      'wincmd p'
    )
    feed('lgR<C-R>=a<CR><esc>')
    execute('cf Xerrorfile1')
    feed('grA<cr>')
    execute('cn')
    feed('gRLINE 6, COL 19<esc>')
    execute('cn')
    feed('gRNO COLUMN SPECIFIED<esc>')
    execute('cn')
    feed('gRAGAIN NO COLUMN<esc>')
    execute('cn')
    feed('gRCOL 1<esc>')
    execute('cn')
    feed('gRCOL 2<esc>')
    execute('cn')
    feed('gRCOL 10<esc>')
    execute('cn')
    feed('gRVCOL 10<esc>')
    execute('cn')
    feed('grI<cr>')
    execute('cn')
    feed('gR. SPACE POINTER<esc>')
    execute('cn')
    feed('gR. DOT POINTER<esc>')
    execute('cn')
    feed('gR. DASH POINTER<esc>')
    execute('cn')
    feed('gR. TAB-SPACE POINTER<esc>')
    execute(
      'clast',
      'cprev',
      'cprev',
      'wincmd w',
      'let a=w:quickfix_title',
      'wincmd p'
    )
    feed('lgR<C-R>=a<CR><esc>')

    -- Assert buffer contents.
    expect([[
      start of testfile
      	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  2
      	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  3
      	xxxxxxxxxxAxxxxxxxxxxxxxxxxxxx    line  4
      	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  5
      	xxxxxxxxxxxxxxxxxLINE 6, COL 19   line  6
      	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  7
      	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  8
      	NO COLUMN SPECIFIEDxxxxxxxxxxx    line  9
      	AGAIN NO COLUMNxxxxxxxxxxxxxxx    line 10
      COL 1	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 11
      	COL 2xxxxxxxxxxxxxxxxxxxxxxxxx    line 12
      	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 13
      	xxxxxxxxCOL 10xxxxxxxxxxxxxxxx    line 14
      	xVCOL 10xxxxxxxxxxxxxxxxxxxxxx    line 15
      	Ixxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 16
      	xxxx. SPACE POINTERxxxxxxxxxxx    line 17
      	xxxxx. DOT POINTERxxxxxxxxxxxx    line 18
      	xxxxxx. DASH POINTERxxxxxxxxxx    line 19
      	xxxxxxx. TAB-SPACE POINTERxxxx    line 20
      	xxxxxxxx:cf Xerrorfile1xxxxxxx    line 21
      	xxxxxxxx:cf Xerrorfile2xxxxxxx    line 22
      end of testfile]])
  end)
end)