Files
glib/glib/tests/option-argv0.c
Philip Withnall 00bfb3ab44 tree: Fix various typos and outdated terminology
This was mostly machine generated with the following command:
```
codespell \
    --builtin clear,rare,usage \
    --skip './po/*' --skip './.git/*' --skip './NEWS*' \
    --write-changes .
```
using the latest git version of `codespell` as per [these
instructions](https://github.com/codespell-project/codespell#user-content-updating).

Then I manually checked each change using `git add -p`, made a few
manual fixups and dropped a load of incorrect changes.

There are still some outdated or loaded terms used in GLib, mostly to do
with git branch terminology. They will need to be changed later as part
of a wider migration of git terminology.

If I’ve missed anything, please file an issue!

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2020-06-12 15:01:08 +01:00

113 lines
3.4 KiB
C

/*
* Copyright (C) 2011 Red Hat, Inc.
*
* This work is provided "as is"; redistribution and modification
* in whole or in part, in any medium, physical or electronic is
* permitted without restriction.
*
* This work 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.
*
* In no event shall the authors or contributors be liable for any
* direct, indirect, incidental, special, exemplary, or consequential
* damages (including, but not limited to, procurement of substitute
* goods or services; loss of use, data, or profits; or business
* interruption) however caused and on any theory of liability, whether
* in contract, strict liability, or tort (including negligence or
* otherwise) arising in any way out of the use of this software, even
* if advised of the possibility of such damage.
*
* Authors: Colin Walters <walters@verbum.org>
*/
#include "config.h"
#include <glib.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
static void
test_platform_argv0 (void)
{
GOptionContext *context;
gboolean arg;
GOptionEntry entries [] =
{ { "test", 't', 0, G_OPTION_ARG_STRING, &arg, NULL, NULL },
{ NULL } };
const gchar * const expected_prgnames[] =
{
"option-argv0",
"lt-option-argv0",
#ifdef G_OS_WIN32
"option-argv0.exe",
#endif
NULL,
};
gboolean retval;
gboolean fatal_errors = TRUE;
/* This test must pass on platforms where platform_get_argv0()
* is implemented. At the moment that means Linux/Cygwin,
* (which uses /proc/self/cmdline) or OpenBSD (which uses
* sysctl and KERN_PROC_ARGS) or Windows (which uses
* GetCommandlineW ()). On other platforms the test
* is not expected to pass, but we'd still want to know
* how it does (the test code itself doesn't use any platform-specific
* functionality, the difference is internal to glib, so it's quite
* possible to run this test everywhere - it just won't pass on some
* platforms). Make errors non-fatal on these other platforms,
* to prevent them from crashing hard on failed assertions,
* and make them call g_test_skip() instead.
*/
#if !defined HAVE_PROC_SELF_CMDLINE && \
!defined __OpenBSD__ && \
!defined __linux && \
!defined G_OS_WIN32
fatal_errors = FALSE;
#endif
context = g_option_context_new (NULL);
g_option_context_add_main_entries (context, entries, NULL);
retval = g_option_context_parse (context, NULL, NULL, NULL);
if (fatal_errors)
{
g_assert_true (retval);
g_assert_true (g_strv_contains (expected_prgnames, g_get_prgname ()));
}
else
{
gboolean failed = FALSE;
if (!retval)
{
g_print ("g_option_context_parse() failed\n");
failed = TRUE;
}
else if (!g_strv_contains (expected_prgnames, g_get_prgname ()))
{
g_print ("program name `%s' is neither `option-argv0', nor `lt-option-argv0'\n", g_get_prgname());
failed = TRUE;
}
else
g_print ("The test unexpectedly passed\n");
if (failed)
g_test_skip ("platform_get_argv0() is not implemented [correctly?] on this platform");
}
g_option_context_free (context);
}
int
main (int argc,
char *argv[])
{
g_test_init (&argc, &argv, "no_g_set_prgname", NULL);
g_test_add_func ("/option/argv0", test_platform_argv0);
return g_test_run ();
}