tests: Customize environment to run test cases

This commit minimizes the impact of running unit tests on the host
system. In particular, the test cases will have its own public info and
TPM.

Change-Id: Ic6e78ebd80dea920806ca1898caa6a2eac30348b
diff --git a/tests/global-configuration.cpp b/tests/global-configuration.cpp
index 24d4499..2be5a67 100644
--- a/tests/global-configuration.cpp
+++ b/tests/global-configuration.cpp
@@ -1,11 +1,12 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2014  Regents of the University of California,
- *                     Arizona Board of Regents,
- *                     Colorado State University,
- *                     University Pierre & Marie Curie, Sorbonne University,
- *                     Washington University in St. Louis,
- *                     Beijing Institute of Technology
+ * Copyright (c) 2014-2016,  Regents of the University of California,
+ *                           Arizona Board of Regents,
+ *                           Colorado State University,
+ *                           University Pierre & Marie Curie, Sorbonne University,
+ *                           Washington University in St. Louis,
+ *                           Beijing Institute of Technology,
+ *                           The University of Memphis.
  *
  * This file is part of NFD (Named Data Networking Forwarding Daemon).
  * See AUTHORS.md for complete list of NFD authors and contributors.
@@ -20,13 +21,14 @@
  *
  * You should have received a copy of the GNU General Public License along with
  * NFD, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
- **/
+ */
 
 #include "test-common.hpp"
 #include "core/logger.hpp"
 #include "core/config-file.hpp"
 
 #include <boost/filesystem.hpp>
+#include <fstream>
 
 namespace nfd {
 namespace tests {
@@ -44,7 +46,27 @@
 
         config.parse(filename, false);
       }
+
+    if (std::getenv("HOME"))
+      m_home = std::getenv("HOME");
+
+    boost::filesystem::path dir(UNIT_TEST_CONFIG_PATH "test-home");
+    setenv("HOME", dir.generic_string().c_str(), 1);
+    boost::filesystem::create_directories(dir);
+    std::ofstream clientConf((dir / ".ndn" / "client.conf").generic_string().c_str());
+    clientConf << "pib=pib-sqlite3\n"
+               << "tpm=tpm-file" << std::endl;
   }
+
+  ~GlobalConfigurationFixture()
+  {
+    if (!m_home.empty()) {
+      setenv("HOME", m_home.c_str(), 1);
+    }
+  }
+
+private:
+  std::string m_home;
 };
 
 BOOST_GLOBAL_FIXTURE(GlobalConfigurationFixture)