37 Commits

Author SHA1 Message Date
Ryan Lortie
ae52ab3d11 GOption: add strict posix mode
Add a "posixly correct" mode to GOption to stop parsing arguments as
soon as the first non-option argument is encountered.

We determine the default value on the basis of duplicating the behaviour
of the system getopt() implementation (which we directly check the
behaviour of at runtime).  On GNU systems this allows the user to modify
our behaviour using POSIXLY_CORRECT.

The user can change the value by g_option_context_set_strict_posix(),
which might be useful for some usecases of GOptionContext (as mentioned
in the doc string of this new function).

https://bugzilla.gnome.org/show_bug.cgi?id=723160
2014-10-15 23:37:45 +02:00
Philip Withnall
a4612a922b tests: Fix some minor leaks in the unit tests
https://bugzilla.gnome.org/show_bug.cgi?id=737446
2014-09-27 10:30:39 +01:00
Matthias Clasen
49f5737f00 Add a testcase for the previous fix
This testcase tests that short option arguments are
not erroneously added to the remaining argument array
when g_option_context_set_ignore_unknown_options is
called.
https://bugzilla.gnome.org/show_bug.cgi?id=729563
2014-05-05 20:30:35 -04:00
Ryan Lortie
d751e65aff tests: fix leaks in option-context test
Use the new g_option_context_parse_strv() to patch up some leaks in some
insufficiently-argv-emulating testcases in option-context.c.

This gives some test coverage of the new function while also making
option-context now leak-free.

https://bugzilla.gnome.org/show_bug.cgi?id=721947
2014-01-10 12:32:35 -05:00
Matthias Clasen
4989cb4dde Improve GOptionContext test coverage 2014-01-01 17:59:22 -05:00
Dan Winship
e3d1869ee3 tests: port from g_test_trap_subprocess() to g_test_trap_fork()
https://bugzilla.gnome.org/show_bug.cgi?id=679683
2013-05-13 12:10:52 -04:00
Marek Kasik
3c614be04a tests: Add test for disabled help options
Test whether help options are hidden when they are disabled
by g_option_context_set_help_enabled(.., FALSE).

https://bugzilla.gnome.org/show_bug.cgi?id=697652
2013-04-12 17:04:06 +02:00
Matthias Clasen
0178402c6d Revert "tests: port from g_test_trap_subprocess() to g_test_trap_fork()"
This reverts commit ea06ec80634ff8f22882f3bc92effb10ac294e41.
2012-12-19 15:20:37 -05:00
Matthias Clasen
50850fe08c Revert "tests/option-context: fix under --verbose"
This reverts commit 80253cd71007975946a084697ccec9891102a3e7.
2012-12-19 15:20:20 -05:00
Dan Winship
80253cd710 tests/option-context: fix under --verbose
We need to always pass G_TEST_TRAP_SILENCE_STDERR/STDOUT, or else
we can't check that they contained the right text later.

https://bugzilla.gnome.org/show_bug.cgi?id=679683
2012-12-19 14:35:12 -05:00
Dan Winship
ea06ec8063 tests: port from g_test_trap_subprocess() to g_test_trap_fork()
(or, in a few cases, to g_test_expect_message())

https://bugzilla.gnome.org/show_bug.cgi?id=679683
2012-12-19 14:35:10 -05:00
Dan Winship
1a2c5e155d glib/tests: fix leaks
https://bugzilla.gnome.org/show_bug.cgi?id=682560
2012-08-27 07:38:27 -04:00
Matthias Clasen
64bfbc2cf0 GOptionContext: Don't show headings without options
If the only entry in the main group is for the rest args,
don't bother printing "Application Options".
2012-06-29 14:16:55 -04:00
Matthias Clasen
6ee10762b5 Improve GOptionContext test coverage 2012-06-11 10:25:19 -04:00
Matthias Clasen
1089a0a9f6 Improve GOptionContext test coverage 2012-04-23 08:20:21 -04:00
Dan Winship
a8f516f61e glib/tests/option-context: remove unused tests
These tests were written, but then never used since it was decided to
add g_warnings() to goption.c in the cases they were supposed to be
testing. So anyway, just remove them.
2012-02-08 08:46:03 -05:00
Simon McVittie
fa4792c35e various tests: do not provoke SIGTRAP with -m no-undefined
Some of the GLib tests deliberately provoke warnings (or even fatal
errors) in a forked child. Normally, this is fine, but under valgrind
it's somewhat undesirable. We do want to follow fork(), so we can check
for leaks in child processes that exit gracefully; but we don't want to
be told about "leaks" in processes that are crashing, because there'd
be no point in cleaning those up anyway.

https://bugzilla.gnome.org/show_bug.cgi?id=666116
2011-12-27 17:51:09 -05:00
Simon McVittie
5dca72fe67 GOptionContext test: free all arguments, not just the remaining ones
On success, g_option_context_parse alters argv by removing options that
it understood, so g_strfreev is insufficient. Instead, take a shallow
copy and free all of the arguments in that, then free the array argv
but not its contents.

Also, improve the checks in error cases, by checking that argv has
not been altered in this way.

Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Bug: https://bugzilla.gnome.org/show_bug.cgi?id=666115
Reviewed-by: Matthias Clasen <mclasen@redhat.com>
2011-12-14 12:40:39 +00:00
Simon McVittie
29f2ced8eb various GLib tests: plug memory leaks
These don't really matter, since it's test code, but they do obscure
real leaks in the library.

Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Bug: https://bugzilla.gnome.org/show_bug.cgi?id=666115
Acked-by: Matthias Clasen <mclasen@redhat.com>
2011-12-14 12:40:16 +00:00
Ryan Lortie
3d93c44374 Mark some functions 'static' in glib/tests
This has uncovered two unused testcases in option-context.c.  They are
currently broken and require more investigation (which is probably why
they are unused).
2011-10-16 21:41:15 -04:00
Colin Walters
14bb138d58 goption: [linux] Look in /proc/self/cmdline for argv0 if not specified
We really shouldn't use <unknown> when we can perfectly easily
get argv0 out of /proc.  This avoids people having to pass argv
down into gtk_init/g_option_context_parse etc., which is important
because GTK+ uses it to initialize the WM_CLASS, which in turn
GNOME Shell consumes for application tracking.

https://bugzilla.gnome.org/show_bug.cgi?id=644309
2011-03-31 15:29:42 -04:00
Matthias Clasen
52ef73ac8c GOptionContext: Warn about invalid arg/flag combinations
This was proposed by Kjell Ahlstedt in bug 642825.
Also adding a few tests for this new behaviour.
2011-02-25 10:10:37 -05:00
Matthias Clasen
147139d968 Use g_assert_no_error
The option-context test had its own version.
2011-02-13 23:49:18 -05:00
Christian Persch
a35efb0939 G_OPTION_FLAG_NO_ARG is only for callback options
Bug #627252.
2010-08-18 15:32:07 +02:00
Matthias Clasen
008615f999 Test an option handling corner-case 2010-08-05 02:24:26 -04:00
Matthias Clasen
9100828185 Improve option context test coverage 2010-07-30 19:51:21 -04:00
Matthias Clasen
c617e94cf1 Improve option context test coverage a bit 2010-07-30 19:51:19 -04:00
Matthias Clasen
71d508776e Remove comment as well 2009-12-21 09:21:54 -05:00
Matthias Clasen
7db8b92b97 Revert the g_set_prgname change
This change breaks our API and causes warnings from essentially all applications.
See bug 563627.
2009-12-21 09:16:32 -05:00
Matthias Clasen
12939c54f9 Disable a broken test
One of the option context tests relied on the ability to
call g_set_pgrname() more than once. Thats no longer possible
(without incurring a warning that wrecks the test).
2009-11-29 20:47:51 -05:00
Matthias Clasen
636fa4640d Fix an issue with callbacks that return FALSE.
svn path=/trunk/; revision=7684
2008-11-28 05:17:27 +00:00
Mathias Hasselmann
981fbaa21e Set LANG variable for group caption tests to get reproducable results.
* glib/tests/option-context.c (group_captions()):
  Set LANG variable to C in the forked process to get reproducable.
  Don't silence the forked process in --verbose mode to support
  debugging.

svn path=/trunk/; revision=7238
2008-07-21 23:34:44 +00:00
Matthias Clasen
063c43c0d8 Move tests around
svn path=/trunk/; revision=7197
2008-07-18 06:25:23 +00:00
Michael Natterer
82bc28361e add G_DISABLE_SINGLE_INCLUDES to CPPFLAGS globally.
2008-05-28  Michael Natterer  <mitch@imendio.com>

	* configure.in: add G_DISABLE_SINGLE_INCLUDES to CPPFLAGS
	globally.

	* glib/tests/option-context.c
	* glib/tests/testing.c
	* tests/testingbase64.c: don't include <glib/gtestutils.h>


svn path=/trunk/; revision=6955
2008-05-28 16:18:27 +00:00
Matthias Clasen
da0e7e81c1 /bin/ksh can't handle a for-loop with no arguments, so add a "." for when
2008-02-09  Matthias Clasen <mclasen@redhat.com>

        * Makefile.decl: /bin/ksh can't handle a for-loop with no
        arguments, so add a "." for when $(SUBDIRS) is empty.

        * glib/tests/option-context.c:
        * glib/tests/testing.c:
        * gthread/gthread-posix.c:
        * tets/testingbase64.c:
        * glib/gtester.c:
        * glib/gsequence.c: Portability fixes.  (#515154)



svn path=/trunk/; revision=6487
2008-02-10 04:41:25 +00:00
Loïc Minier
64c2dc4a06 Pass context down the implementation to check for the main_group. Bug
2008-01-25  Loïc Minier  <lool@dooz.org>

       * glib/goption.c: (group_has_visible_entries),
       (group_list_has_visible_entires), (g_option_context_get_help): Pass
       context down the implementation to check for the main_group.
       Bug #510292.
       * glib/tests/option-context.c:
       Don't set G_OPTION_FLAG_IN_MAIN in main_entries
       (group_captions): only create group when actually adding it to the
       context; add an exit(0) to make sure the test succeeds.

svn path=/trunk/; revision=6377
2008-01-25 17:49:53 +00:00
Mathias Hasselmann
005a22ab10 Do not show empty groups in --help output. Initial patch from Yevgen
Muntyan. (#504142)

* glib/goption.c: Do not show empty groups in --help output.
* glib/tests/Makefile.am: Add option-context.c
* glib/tests/option-context.c: Test skipping of empty groups.

svn path=/trunk/; revision=6198
2007-12-24 11:09:03 +00:00