diff --git a/tests/unistd_test.cpp b/tests/unistd_test.cpp
index f56c5da..70b23bd 100644
--- a/tests/unistd_test.cpp
+++ b/tests/unistd_test.cpp
@@ -132,3 +132,111 @@
   ASSERT_TRUE(WIFEXITED(status));
   ASSERT_EQ(99, WEXITSTATUS(status));
 }
+
+TEST(unistd, getenv_unsetenv) {
+  ASSERT_EQ(0, setenv("test-variable", "hello", 1));
+  ASSERT_STREQ("hello", getenv("test-variable"));
+  ASSERT_EQ(0, unsetenv("test-variable"));
+  ASSERT_TRUE(getenv("test-variable") == NULL);
+}
+
+TEST(unistd, unsetenv_EINVAL) {
+  EXPECT_EQ(-1, unsetenv(NULL));
+  EXPECT_EQ(EINVAL, errno);
+  EXPECT_EQ(-1, unsetenv(""));
+  EXPECT_EQ(EINVAL, errno);
+  EXPECT_EQ(-1, unsetenv("a=b"));
+  EXPECT_EQ(EINVAL, errno);
+}
+
+TEST(unistd, setenv_EINVAL) {
+  EXPECT_EQ(-1, setenv(NULL, "value", 0));
+  EXPECT_EQ(EINVAL, errno);
+  EXPECT_EQ(-1, setenv(NULL, "value", 1));
+  EXPECT_EQ(EINVAL, errno);
+  EXPECT_EQ(-1, setenv("", "value", 0));
+  EXPECT_EQ(EINVAL, errno);
+  EXPECT_EQ(-1, setenv("", "value", 1));
+  EXPECT_EQ(EINVAL, errno);
+  EXPECT_EQ(-1, setenv("a=b", "value", 0));
+  EXPECT_EQ(EINVAL, errno);
+  EXPECT_EQ(-1, setenv("a=b", "value", 1));
+  EXPECT_EQ(EINVAL, errno);
+}
+
+TEST(unistd, setenv) {
+  ASSERT_EQ(0, unsetenv("test-variable"));
+
+  char a[] = "a";
+  char b[] = "b";
+  char c[] = "c";
+
+  // New value.
+  EXPECT_EQ(0, setenv("test-variable", a, 0));
+  EXPECT_STREQ(a, getenv("test-variable"));
+
+  // Existing value, no overwrite.
+  EXPECT_EQ(0, setenv("test-variable", b, 0));
+  EXPECT_STREQ(a, getenv("test-variable"));
+
+  // Existing value, overwrite.
+  EXPECT_EQ(0, setenv("test-variable", c, 1));
+  EXPECT_STREQ(c, getenv("test-variable"));
+  // But the arrays backing the values are unchanged.
+  EXPECT_EQ('a', a[0]);
+  EXPECT_EQ('b', b[0]);
+  EXPECT_EQ('c', c[0]);
+
+  ASSERT_EQ(0, unsetenv("test-variable"));
+}
+
+TEST(unistd, putenv) {
+  ASSERT_EQ(0, unsetenv("a"));
+
+  char* s1 = strdup("a=b");
+  ASSERT_EQ(0, putenv(s1));
+
+  ASSERT_STREQ("b", getenv("a"));
+  s1[2] = 'c';
+  ASSERT_STREQ("c", getenv("a"));
+
+  char* s2 = strdup("a=b");
+  ASSERT_EQ(0, putenv(s2));
+
+  ASSERT_STREQ("b", getenv("a"));
+  ASSERT_EQ('c', s1[2]);
+
+  ASSERT_EQ(0, unsetenv("a"));
+  free(s1);
+  free(s2);
+}
+
+TEST(unistd, clearenv) {
+  extern char** environ;
+
+  // Guarantee that environ is not initially empty...
+  ASSERT_EQ(0, setenv("test-variable", "a", 1));
+
+  // Stash a copy.
+  std::vector<char*> old_environ;
+  for (size_t i = 0; environ[i] != NULL; ++i) {
+    old_environ.push_back(strdup(environ[i]));
+  }
+
+  ASSERT_EQ(0, clearenv());
+
+  EXPECT_TRUE(environ == NULL || environ[0] == NULL);
+  EXPECT_EQ(NULL, getenv("test-variable"));
+  EXPECT_EQ(0, setenv("test-variable", "post-clear", 1));
+  EXPECT_STREQ("post-clear", getenv("test-variable"));
+
+  // Put the old environment back.
+  for (size_t i = 0; i < old_environ.size(); ++i) {
+    EXPECT_EQ(0, putenv(old_environ[i]));
+  }
+
+  // Check it wasn't overwritten.
+  EXPECT_STREQ("a", getenv("test-variable"));
+
+  EXPECT_EQ(0, unsetenv("test-variable"));
+}
