aboutsummaryrefslogtreecommitdiff
path: root/tests/locus-git.at
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2011-06-26 15:18:29 +0300
committerSergey Poznyakoff <gray@gnu.org.ua>2011-06-26 21:23:42 +0300
commit440771ca0056eb20396e24f03d349a75ee1c9d22 (patch)
tree3ec58a85e96d21a855ad3dcefaa8adc51039fc38 /tests/locus-git.at
parent4c1959a4848c30206de3be4b16bdf04b650daae8 (diff)
downloadgrecs-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.at61
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
+

Return to:

Send suggestions and report system problems to the System administrator.