diff --git a/glib/tests/environment.c b/glib/tests/environment.c
index aba19a7ae..486acc907 100644
--- a/glib/tests/environment.c
+++ b/glib/tests/environment.c
@@ -1,3 +1,20 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 2010 Ryan Lortie
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, see .
+ */
+
#include
static void
@@ -41,6 +58,69 @@ test_listenv (void)
g_strfreev (list);
}
+static void
+test_getenv (void)
+{
+ const gchar *data;
+ const gchar *variable = "TEST_G_SETENV";
+ const gchar *value1 = "works";
+ const gchar *value2 = "again";
+
+ /* Check that TEST_G_SETENV is not already set */
+ g_assert_null (g_getenv (variable));
+
+ /* Check if g_setenv() failed */
+ g_assert_cmpint (g_setenv (variable, value1, TRUE), !=, 0);
+
+ data = g_getenv (variable);
+ g_assert_nonnull (data);
+ g_assert_cmpstr (data, ==, value1);
+
+ g_assert_cmpint (g_setenv (variable, value2, FALSE), !=, 0);
+
+ data = g_getenv (variable);
+ g_assert_nonnull (data);
+ g_assert_cmpstr (data, !=, value2);
+ g_assert_cmpstr (data, ==, value1);
+
+ g_assert_cmpint (g_setenv (variable, value2, TRUE), !=, 0);
+
+ data = g_getenv (variable);
+ g_assert_nonnull (data);
+ g_assert_cmpstr (data, !=, value1);
+ g_assert_cmpstr (data, ==, value2);
+
+ g_unsetenv (variable);
+ g_assert_null (g_getenv (variable));
+
+ if (g_test_undefined ())
+ {
+ g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+ "*assertion* == NULL*");
+ g_assert_false (g_setenv ("foo=bar", "baz", TRUE));
+ g_test_assert_expected_messages ();
+ }
+
+ g_assert_true (g_setenv ("foo", "bar=baz", TRUE));
+
+ data = g_getenv ("foo=bar");
+ g_assert_cmpstr (data, ==, "baz");
+
+ data = g_getenv ("foo");
+ g_assert_cmpstr (data, ==, "bar=baz");
+
+ if (g_test_undefined ())
+ {
+ g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+ "*assertion* == NULL*");
+ g_unsetenv ("foo=bar");
+ g_test_assert_expected_messages ();
+ }
+
+ g_unsetenv ("foo");
+ g_assert_null (g_getenv ("foo"));
+}
+
static void
test_setenv (void)
{
@@ -160,6 +240,7 @@ main (int argc, char **argv)
g_test_init (&argc, &argv, NULL);
g_test_add_func ("/environ/listenv", test_listenv);
+ g_test_add_func ("/environ/getenv", test_getenv);
g_test_add_func ("/environ/setenv", test_setenv);
g_test_add_func ("/environ/array", test_environ_array);
g_test_add_func ("/environ/null", test_environ_null);
diff --git a/tests/env-test.c b/tests/env-test.c
deleted file mode 100644
index edf7edda7..000000000
--- a/tests/env-test.c
+++ /dev/null
@@ -1,109 +0,0 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see .
- */
-
-/*
- * Modified by the GLib Team and others 1997-2000. See the AUTHORS
- * file for a list of people on the GLib Team. See the ChangeLog
- * files for a list of changes. These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/.
- */
-
-#undef G_DISABLE_ASSERT
-#undef G_LOG_DOMAIN
-
-#ifdef GLIB_COMPILATION
-#undef GLIB_COMPILATION
-#endif
-
-#include
-#include
-#include
-
-#include
-
-int
-main (int argc, char *argv[])
-{
- gboolean result;
- const gchar *data;
- gchar *variable = "TEST_G_SETENV";
- gchar *value1 = "works";
- gchar *value2 = "again";
-
- data = g_getenv (variable);
- g_assert (data == NULL && "TEST_G_SETENV already set");
-
- result = g_setenv (variable, value1, TRUE);
- g_assert (result && "g_setenv() failed");
-
- data = g_getenv (variable);
- g_assert (data != NULL && "g_getenv() returns NULL");
- g_assert (strcmp (data, value1) == 0 && "g_getenv() returns wrong value");
-
- result = g_setenv (variable, value2, FALSE);
- g_assert (result && "g_setenv() failed");
-
- data = g_getenv (variable);
- g_assert (data != NULL && "g_getenv() returns NULL");
- g_assert (strcmp (data, value2) != 0 && "g_setenv() always overwrites");
- g_assert (strcmp (data, value1) == 0 && "g_getenv() returns wrong value");
-
- result = g_setenv (variable, value2, TRUE);
- g_assert (result && "g_setenv() failed");
-
- data = g_getenv (variable);
- g_assert (data != NULL && "g_getenv() returns NULL");
- g_assert (strcmp (data, value1) != 0 && "g_setenv() doesn't overwrite");
- g_assert (strcmp (data, value2) == 0 && "g_getenv() returns wrong value");
-
- g_unsetenv (variable);
- data = g_getenv (variable);
- g_assert (data == NULL && "g_unsetenv() doesn't work");
-
-#if 0
- /* We can't test this, because it's an illegal argument that
- * we g_return_if_fail for.
- */
- result = g_setenv ("foo=bar", "baz", TRUE);
- g_assert (!result && "g_setenv() accepts '=' in names");
-#endif
-
- result = g_setenv ("foo", "bar=baz", TRUE);
- g_assert (result && "g_setenv() doesn't accept '=' in values");
-#if 0
- /* While glibc supports '=' in names in getenv(), SUS doesn't say anything about it,
- * and Solaris doesn't support it.
- */
- data = g_getenv ("foo=bar");
- g_assert (strcmp (data, "baz") == 0 && "g_getenv() doesn't support '=' in names");
-#endif
- data = g_getenv ("foo");
- g_assert (strcmp (data, "bar=baz") == 0 && "g_getenv() doesn't support '=' in values");
-
-#if 0
- /* We can't test this, because it's an illegal argument that
- * we g_return_if_fail for. Plus how would we check for failure,
- * since we can't set the value...
- */
- g_unsetenv ("foo=bar");
-#endif
- g_unsetenv ("foo");
- data = g_getenv ("foo");
- g_assert (data == NULL && "g_unsetenv() doesn't support '=' in values");
-
- return 0;
-}
diff --git a/tests/meson.build b/tests/meson.build
index 9bb97fd5e..585e10549 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -19,7 +19,6 @@ tests = {
'testglib' : {'tap' : true},
'testgdate' : {},
'file-test' : {},
- 'env-test' : {},
'gio-test' : {},
'mainloop-test' : {},
'mapping-test' : {},