forked from universal-ctags/ctags
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
readtags: add -C/--canonicalize-input option
Partially close universal-ctags#3168. TODO: * revise code, Signed-off-by: Masatake YAMATO <yamato@redhat.com>
- Loading branch information
Showing
10 changed files
with
357 additions
and
17 deletions.
There are no files selected for viewing
12 changes: 12 additions & 0 deletions
12
Tmain/readtags-canonicalize-input-names.d/drive-letter0.tags
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/ | ||
!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/ | ||
!_TAG_OUTPUT_EXCMD mixed /number, pattern, mixed, or combineV2/ | ||
!_TAG_OUTPUT_FILESEP slash /slash or backslash/ | ||
!_TAG_OUTPUT_MODE u-ctags /u-ctags or e-ctags/ | ||
!_TAG_PATTERN_LENGTH_LIMIT 96 /0 for no limit/ | ||
!_TAG_PROC_CWD C:\tmp // | ||
!_TAG_PROGRAM_AUTHOR Universal Ctags Team // | ||
!_TAG_PROGRAM_NAME Universal Ctags /Derived from Exuberant Ctags/ | ||
!_TAG_PROGRAM_URL https://ctags.io/ /official site/ | ||
!_TAG_PROGRAM_VERSION 5.9.0 /e08db39a3/ | ||
a_fn xyz/a.c /^static void a_fn(void) {}$/;" f typeref:typename:void file: |
12 changes: 12 additions & 0 deletions
12
Tmain/readtags-canonicalize-input-names.d/drive-letter1.tags
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/ | ||
!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/ | ||
!_TAG_OUTPUT_EXCMD mixed /number, pattern, mixed, or combineV2/ | ||
!_TAG_OUTPUT_FILESEP slash /slash or backslash/ | ||
!_TAG_OUTPUT_MODE u-ctags /u-ctags or e-ctags/ | ||
!_TAG_PATTERN_LENGTH_LIMIT 96 /0 for no limit/ | ||
!_TAG_PROC_CWD D:/tmp // | ||
!_TAG_PROGRAM_AUTHOR Universal Ctags Team // | ||
!_TAG_PROGRAM_NAME Universal Ctags /Derived from Exuberant Ctags/ | ||
!_TAG_PROGRAM_URL https://ctags.io/ /official site/ | ||
!_TAG_PROGRAM_VERSION 5.9.0 /e08db39a3/ | ||
a_fn xyz/a.c /^static void a_fn(void) {}$/;" f typeref:typename:void file: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/ | ||
!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/ | ||
!_TAG_OUTPUT_EXCMD mixed /number, pattern, mixed, or combineV2/ | ||
!_TAG_OUTPUT_FILESEP slash /slash or backslash/ | ||
!_TAG_OUTPUT_MODE u-ctags /u-ctags or e-ctags/ | ||
!_TAG_PATTERN_LENGTH_LIMIT 96 /0 for no limit/ | ||
!_TAG_PROC_CWD /tmp/abc/ // | ||
!_TAG_PROGRAM_AUTHOR Universal Ctags Team // | ||
!_TAG_PROGRAM_NAME Universal Ctags /Derived from Exuberant Ctags/ | ||
!_TAG_PROGRAM_URL https://ctags.io/ /official site/ | ||
!_TAG_PROGRAM_VERSION 5.9.0 /e08db39a3/ | ||
a_fn xyz/a.c /^static void a_fn(void) {}$/;" f typeref:typename:void file: | ||
b_fn b.c /^static void b_fn(void) {}$/;" f typeref:typename:void file: | ||
c_fn ./c.c /^static void c_fn(void) {}$/;" f typeref:typename:void file: | ||
d_fn ./../d.c /^static void d_fn(void) {}$/;" f typeref:typename:void file: | ||
e_fn ../e.c /^static void e_fn(void) {}$/;" f typeref:typename:void file: | ||
f_fn ../../f.c /^static void f_fn(void) {}$/;" f typeref:typename:void file: | ||
g_fn ../../../g.c /^static void g_fn(void) {}$/;" f typeref:typename:void file: | ||
h_fn ../../../../h.c /^static void h_fn(void) {}$/;" f typeref:typename:void file: | ||
i_fn .././../../../i.c /^static void i_fn(void) {}$/;" f typeref:typename:void file: | ||
j_fn .././../j.c /^static void j_fn(void) {}$/;" f typeref:typename:void file: | ||
k_fn .././.././././k.c /^static void k_fn(void) {}$/;" f typeref:typename:void file: | ||
l_fn ././././././l.c /^static void l_fn(void) {}$/;" f typeref:typename:void file: | ||
m_fn ./././../abc/./m.c /^static void m_fn(void) {}$/;" f typeref:typename:void file: | ||
n_fn ./././../abc/X/.././n.c /^static void n_fn(void) {}$/;" f typeref:typename:void file: | ||
o_fn .////.///////./////..//abc//X//..///.///o.c /^static void o_fn(void) {}$/;" f typeref:typename:void file: | ||
p_fn ./../xyz/p.c /^static void p_fn(void) {}$/;" f typeref:typename:void file: | ||
q_fn ./../xyz/../././xyz/q.c /^static void q_fn(void) {}$/;" f typeref:typename:void file: | ||
r_fn /r.c /^static void r_fn(void) {}$/;" f typeref:typename:void file: | ||
s_fn /../s.c /^static void s_fn(void) {}$/;" f typeref:typename:void file: | ||
t_fn /../././t.c /^static void t_fn(void) {}$/;" f typeref:typename:void file: | ||
u_fn /../././tmp/./u.c /^static void u_fn(void) {}$/;" f typeref:typename:void file: | ||
v_fn /../././tmp/./../tmp/abc/./v.c /^static void v_fn(void) {}$/;" f typeref:typename:void file: | ||
w_fn /../././tmp/./../tmp/../abc/./w.c /^static void w_fn(void) {}$/;" f typeref:typename:void file: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/ | ||
!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/ | ||
!_TAG_OUTPUT_EXCMD mixed /number, pattern, mixed, or combineV2/ | ||
!_TAG_OUTPUT_FILESEP slash /slash or backslash/ | ||
!_TAG_OUTPUT_MODE u-ctags /u-ctags or e-ctags/ | ||
!_TAG_PATTERN_LENGTH_LIMIT 96 /0 for no limit/ | ||
!_TAG_PROC_CWD /tmp/abc/../././abc/../abc // | ||
!_TAG_PROGRAM_AUTHOR Universal Ctags Team // | ||
!_TAG_PROGRAM_NAME Universal Ctags /Derived from Exuberant Ctags/ | ||
!_TAG_PROGRAM_URL https://ctags.io/ /official site/ | ||
!_TAG_PROGRAM_VERSION 5.9.0 /e08db39a3/ | ||
a_fn xyz/a.c /^static void a_fn(void) {}$/;" f typeref:typename:void file: | ||
b_fn b.c /^static void b_fn(void) {}$/;" f typeref:typename:void file: | ||
c_fn ./c.c /^static void c_fn(void) {}$/;" f typeref:typename:void file: | ||
d_fn ./../d.c /^static void d_fn(void) {}$/;" f typeref:typename:void file: | ||
e_fn ../e.c /^static void e_fn(void) {}$/;" f typeref:typename:void file: | ||
f_fn ../../f.c /^static void f_fn(void) {}$/;" f typeref:typename:void file: | ||
g_fn ../../../g.c /^static void g_fn(void) {}$/;" f typeref:typename:void file: | ||
h_fn ../../../../h.c /^static void h_fn(void) {}$/;" f typeref:typename:void file: | ||
i_fn .././../../../i.c /^static void i_fn(void) {}$/;" f typeref:typename:void file: | ||
j_fn .././../j.c /^static void j_fn(void) {}$/;" f typeref:typename:void file: | ||
k_fn .././.././././k.c /^static void k_fn(void) {}$/;" f typeref:typename:void file: | ||
l_fn ././././././l.c /^static void l_fn(void) {}$/;" f typeref:typename:void file: | ||
m_fn ./././../abc/./m.c /^static void m_fn(void) {}$/;" f typeref:typename:void file: | ||
n_fn ./././../abc/X/.././n.c /^static void n_fn(void) {}$/;" f typeref:typename:void file: | ||
o_fn .////.///////./////..//abc//X//..///.///o.c /^static void o_fn(void) {}$/;" f typeref:typename:void file: | ||
p_fn ./../xyz/p.c /^static void p_fn(void) {}$/;" f typeref:typename:void file: | ||
q_fn ./../xyz/../././xyz/q.c /^static void q_fn(void) {}$/;" f typeref:typename:void file: | ||
r_fn /r.c /^static void r_fn(void) {}$/;" f typeref:typename:void file: | ||
s_fn /../s.c /^static void s_fn(void) {}$/;" f typeref:typename:void file: | ||
t_fn /../././t.c /^static void t_fn(void) {}$/;" f typeref:typename:void file: | ||
u_fn /../././tmp/./u.c /^static void u_fn(void) {}$/;" f typeref:typename:void file: | ||
v_fn /../././tmp/./../tmp/abc/./v.c /^static void v_fn(void) {}$/;" f typeref:typename:void file: | ||
w_fn /../././tmp/./../tmp/../abc/./w.c /^static void w_fn(void) {}$/;" f typeref:typename:void file: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/ | ||
!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/ | ||
!_TAG_OUTPUT_EXCMD mixed /number, pattern, mixed, or combineV2/ | ||
!_TAG_OUTPUT_FILESEP slash /slash or backslash/ | ||
!_TAG_OUTPUT_MODE u-ctags /u-ctags or e-ctags/ | ||
!_TAG_PATTERN_LENGTH_LIMIT 96 /0 for no limit/ | ||
!_TAG_PROC_CWD /tmp/abc/../././abc/../abc/ // | ||
!_TAG_PROGRAM_AUTHOR Universal Ctags Team // | ||
!_TAG_PROGRAM_NAME Universal Ctags /Derived from Exuberant Ctags/ | ||
!_TAG_PROGRAM_URL https://ctags.io/ /official site/ | ||
!_TAG_PROGRAM_VERSION 5.9.0 /e08db39a3/ | ||
a_fn xyz/a.c /^static void a_fn(void) {}$/;" f typeref:typename:void file: | ||
b_fn b.c /^static void b_fn(void) {}$/;" f typeref:typename:void file: | ||
c_fn ./c.c /^static void c_fn(void) {}$/;" f typeref:typename:void file: | ||
d_fn ./../d.c /^static void d_fn(void) {}$/;" f typeref:typename:void file: | ||
e_fn ../e.c /^static void e_fn(void) {}$/;" f typeref:typename:void file: | ||
f_fn ../../f.c /^static void f_fn(void) {}$/;" f typeref:typename:void file: | ||
g_fn ../../../g.c /^static void g_fn(void) {}$/;" f typeref:typename:void file: | ||
h_fn ../../../../h.c /^static void h_fn(void) {}$/;" f typeref:typename:void file: | ||
i_fn .././../../../i.c /^static void i_fn(void) {}$/;" f typeref:typename:void file: | ||
j_fn .././../j.c /^static void j_fn(void) {}$/;" f typeref:typename:void file: | ||
k_fn .././.././././k.c /^static void k_fn(void) {}$/;" f typeref:typename:void file: | ||
l_fn ././././././l.c /^static void l_fn(void) {}$/;" f typeref:typename:void file: | ||
m_fn ./././../abc/./m.c /^static void m_fn(void) {}$/;" f typeref:typename:void file: | ||
n_fn ./././../abc/X/.././n.c /^static void n_fn(void) {}$/;" f typeref:typename:void file: | ||
o_fn .////.///////./////..//abc//X//..///.///o.c /^static void o_fn(void) {}$/;" f typeref:typename:void file: | ||
p_fn ./../xyz/p.c /^static void p_fn(void) {}$/;" f typeref:typename:void file: | ||
q_fn ./../xyz/../././xyz/q.c /^static void q_fn(void) {}$/;" f typeref:typename:void file: | ||
r_fn /r.c /^static void r_fn(void) {}$/;" f typeref:typename:void file: | ||
s_fn /../s.c /^static void s_fn(void) {}$/;" f typeref:typename:void file: | ||
t_fn /../././t.c /^static void t_fn(void) {}$/;" f typeref:typename:void file: | ||
u_fn /../././tmp/./u.c /^static void u_fn(void) {}$/;" f typeref:typename:void file: | ||
v_fn /../././tmp/./../tmp/abc/./v.c /^static void v_fn(void) {}$/;" f typeref:typename:void file: | ||
w_fn /../././tmp/./../tmp/../abc/./w.c /^static void w_fn(void) {}$/;" f typeref:typename:void file: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
#!/bin/sh | ||
|
||
# Copyright: 2021 Masatake YAMATO | ||
# License: GPL-2 | ||
|
||
READTAGS=$3 | ||
|
||
. ../utils.sh | ||
|
||
#V="valgrind --leak-check=full -v" | ||
V= | ||
|
||
if ! [ -x "${READTAGS}" ]; then | ||
skip "no readtags" | ||
fi | ||
|
||
|
||
echo2() | ||
{ | ||
echo "$@" | ||
echo "$@" 1>&2 | ||
} | ||
|
||
run_test() | ||
{ | ||
echo2 "# $@" | ||
"${READTAGS}" -F '(list $name "\t" $input "\n")' $2 -t $1 -l | ||
} | ||
|
||
run_test good0.tags -C && | ||
run_test good1.tags --canonicalize-input && | ||
run_test good2.tags -C && | ||
! run_test drive-letter0.tags --canonicalize-input && | ||
! run_test drive-letter1.tags -C |
7 changes: 7 additions & 0 deletions
7
Tmain/readtags-canonicalize-input-names.d/stderr-expected.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
# good0.tags -C | ||
# good1.tags --canonicalize-input | ||
# good2.tags -C | ||
# drive-letter0.tags --canonicalize-input | ||
!_TAG_PROC_CWD must start with '/': C:\tmp | ||
# drive-letter1.tags -C | ||
!_TAG_PROC_CWD must start with '/': D:/tmp |
74 changes: 74 additions & 0 deletions
74
Tmain/readtags-canonicalize-input-names.d/stdout-expected.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
# good0.tags -C | ||
a_fn xyz/a.c | ||
b_fn b.c | ||
c_fn c.c | ||
d_fn /tmp/d.c | ||
e_fn /tmp/e.c | ||
f_fn /f.c | ||
g_fn /g.c | ||
h_fn /h.c | ||
i_fn /i.c | ||
j_fn /j.c | ||
k_fn /k.c | ||
l_fn l.c | ||
m_fn m.c | ||
n_fn n.c | ||
o_fn o.c | ||
p_fn /tmp/xyz/p.c | ||
q_fn /tmp/xyz/q.c | ||
r_fn /r.c | ||
s_fn /s.c | ||
t_fn /t.c | ||
u_fn /tmp/u.c | ||
v_fn /tmp/abc/v.c | ||
w_fn /abc/w.c | ||
# good1.tags --canonicalize-input | ||
a_fn xyz/a.c | ||
b_fn b.c | ||
c_fn c.c | ||
d_fn /tmp/d.c | ||
e_fn /tmp/e.c | ||
f_fn /f.c | ||
g_fn /g.c | ||
h_fn /h.c | ||
i_fn /i.c | ||
j_fn /j.c | ||
k_fn /k.c | ||
l_fn l.c | ||
m_fn m.c | ||
n_fn n.c | ||
o_fn o.c | ||
p_fn /tmp/xyz/p.c | ||
q_fn /tmp/xyz/q.c | ||
r_fn /r.c | ||
s_fn /s.c | ||
t_fn /t.c | ||
u_fn /tmp/u.c | ||
v_fn /tmp/abc/v.c | ||
w_fn /abc/w.c | ||
# good2.tags -C | ||
a_fn xyz/a.c | ||
b_fn b.c | ||
c_fn c.c | ||
d_fn /tmp/d.c | ||
e_fn /tmp/e.c | ||
f_fn /f.c | ||
g_fn /g.c | ||
h_fn /h.c | ||
i_fn /i.c | ||
j_fn /j.c | ||
k_fn /k.c | ||
l_fn l.c | ||
m_fn m.c | ||
n_fn n.c | ||
o_fn o.c | ||
p_fn /tmp/xyz/p.c | ||
q_fn /tmp/xyz/q.c | ||
r_fn /r.c | ||
s_fn /s.c | ||
t_fn /t.c | ||
u_fn /tmp/u.c | ||
v_fn /tmp/abc/v.c | ||
w_fn /abc/w.c | ||
# drive-letter0.tags --canonicalize-input | ||
# drive-letter1.tags -C |
Oops, something went wrong.