diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2011-06-26 15:18:29 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2011-06-26 21:23:42 +0300 |
commit | 440771ca0056eb20396e24f03d349a75ee1c9d22 (patch) | |
tree | 3ec58a85e96d21a855ad3dcefaa8adc51039fc38 /tests/locus-git.at | |
parent | 4c1959a4848c30206de3be4b16bdf04b650daae8 (diff) | |
download | grecs-440771ca0056eb20396e24f03d349a75ee1c9d22.tar.gz grecs-440771ca0056eb20396e24f03d349a75ee1c9d22.tar.bz2 |
Keep track of columns in the node and value locations. Improve error diagnostics.
* src/grecs.h (grecs_locus_point): New struct.
(grecs_locus_point_advance_line): New macro.
(grecs_locus_t): Redesign.
(grecs_value) <locus>: New member.
(grecs_node) <idloc>: New member.
(grecs_print_diag_fun): Change signature.
(grecs_warning,grecs_error): Change signature.
(grecs_parse_line_directive)
(grecs_parse_line_directive_cpp)
(grecs_string_convert): Change signature.
(grecs_current_locus): Remove.
(grecs_current_locus_point): New extern.
* src/grecs-locus.h: New file.
* src/Make.am (noinst_HEADERS): Add grecs-locus.h.
* src/join.c (reset_locus): Rewrite.
* src/lookup.c: Initialize new members of grecs_value and grecs_node.
(split_cfg_path): Return wrdse error code.
(grecs_node_from_path_locus): Take two grecs_locus_t arguments.
Make sure all created nodes have their locus members
properly initialized.
* src/parser.c (grecs_parse): Initialize grecs_current_locus_point.
* src/tree.c (grecs_node_create_points): New function.
(string_to_bool,string_to_host,string_to_sockaddr)
(grecs_string_convert): Change signatures. Be more precise in
what locus to report.
* src/diag.c (default_print_diag): Use YY_LOCATION_PRINT to
output locus.
(grecs_print_diag_fun): Change signature.
(grecs_warning,grecs_error): Change signature.
* src/format.c (grecs_format_locus): Rewrite.
(grecs_format_node): Be more precise in what locus is being
output.
* src/bind-gram.y: Keep track of locations. Turn on error-verbose mode.
* src/grecs-gram.y: Likewise.
* src/meta1-gram.y: Likewise.
* src/bind-lex.l: Keep track of locations.
* src/git-parser.c: Likewise.
* src/grecs-lex.l: Likewise.
* src/meta1-lex.l: Likewise.
* src/path-parser.c: Likewise.
* src/preproc.c: Likewise.
* tests/gcf1.conf: Untabify.
* tests/format01.at: Reflect changes in the output.
* tests/join.at: Likewise.
* tests/set.at: Likewise.
* tests/locus-bind.at: New testcase.
* tests/locus-git.at: New testcase.
* tests/locus-meta1.at: New testcase.
* tests/locus00.at: New testcase.
* tests/locus01.at: New testcase.
* tests/locus02.at: New testcase.
* tests/path-locus.at: New testcase.
Diffstat (limited to 'tests/locus-git.at')
-rw-r--r-- | tests/locus-git.at | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/tests/locus-git.at b/tests/locus-git.at new file mode 100644 index 0000000..0b74714 --- /dev/null +++ b/tests/locus-git.at @@ -0,0 +1,61 @@ +# This file is part of grecs -*- Autotest -*- +# Copyright (C) 2011 Sergey Poznyakoff +# +# Grecs is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# Grecs is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Grecs. If not, see <http://www.gnu.org/licenses/>. + +AT_SETUP(Locations: git) +AT_KEYWORDS([locus git locus-git]) + +AT_DATA([test.cf],[[[core]] + repositoryformatversion = 0 + filemode = true + bare = false + logallrefupdates = true +[[remote "origin"]] + url = ssh://git.gnu.org.ua/gitroot/grecs.git + fetch = +refs/heads/*:refs/remotes/origin/* +]) + +AT_CHECK([gcffmt -type=GIT -locus test.cf], +[0], +[test.cf:2.9-35: .core.repositoryformatversion: "0" +test.cf:3.9-23: .core.filemode: "true" +test.cf:4.9-20: .core.bare: "false" +test.cf:5.9-31: .core.logallrefupdates: "true" +test.cf:7.9-52: .remote.origin.url: "ssh://git.gnu.org.ua/gitroot/grecs.git" +test.cf:8.9-51: .remote.origin.fetch: "+refs/heads/*:refs/remotes/origin/*" +]) + +AT_CHECK([gcffmt -type=GIT -novalue -locus test.cf], +[0], +[test.cf:2.9-31: .core.repositoryformatversion +test.cf:3.9-16: .core.filemode +test.cf:4.9-12: .core.bare +test.cf:5.9-24: .core.logallrefupdates +test.cf:7.9-11: .remote.origin.url +test.cf:8.9-13: .remote.origin.fetch +]) + +AT_CHECK([gcffmt -type=GIT -nopath -locus test.cf], +[0], +[test.cf:2.35: "0" +test.cf:3.20-23: "true" +test.cf:4.16-20: "false" +test.cf:5.28-31: "true" +test.cf:7.15-52: "ssh://git.gnu.org.ua/gitroot/grecs.git" +test.cf:8.17-51: "+refs/heads/*:refs/remotes/origin/*" +]) + +AT_CLEANUP + |