diff --git a/phosphor-regulators/test/config_file_parser_tests.cpp b/phosphor-regulators/test/config_file_parser_tests.cpp
index 80e65ba..edfa958 100644
--- a/phosphor-regulators/test/config_file_parser_tests.cpp
+++ b/phosphor-regulators/test/config_file_parser_tests.cpp
@@ -40,7 +40,7 @@
 #include "run_rule_action.hpp"
 #include "sensor_monitoring.hpp"
 #include "set_device_action.hpp"
-#include "tmp_file.hpp"
+#include "temporary_file.hpp"
 
 #include <sys/stat.h> // for chmod()
 
@@ -107,8 +107,8 @@
             }
         )"_json;
 
-        TmpFile configFile;
-        std::filesystem::path pathName{configFile.getName()};
+        TemporaryFile configFile;
+        std::filesystem::path pathName{configFile.getPath()};
         writeConfigFile(pathName, configFileContents);
 
         std::vector<std::unique_ptr<Rule>> rules{};
@@ -146,8 +146,8 @@
             }
         )"_json;
 
-        TmpFile configFile;
-        std::filesystem::path pathName{configFile.getName()};
+        TemporaryFile configFile;
+        std::filesystem::path pathName{configFile.getPath()};
         writeConfigFile(pathName, configFileContents);
 
         chmod(pathName.c_str(), 0222);
@@ -165,8 +165,8 @@
     {
         const std::string configFileContents = "] foo [";
 
-        TmpFile configFile;
-        std::filesystem::path pathName{configFile.getName()};
+        TemporaryFile configFile;
+        std::filesystem::path pathName{configFile.getPath()};
         writeConfigFile(pathName, configFileContents);
 
         parse(pathName);
@@ -182,8 +182,8 @@
     {
         const json configFileContents = R"( { "foo": "bar" } )"_json;
 
-        TmpFile configFile;
-        std::filesystem::path pathName{configFile.getName()};
+        TemporaryFile configFile;
+        std::filesystem::path pathName{configFile.getPath()};
         writeConfigFile(pathName, configFileContents);
 
         parse(pathName);
diff --git a/phosphor-regulators/test/tmp_file.hpp b/phosphor-regulators/test/tmp_file.hpp
deleted file mode 100644
index dd0a66c..0000000
--- a/phosphor-regulators/test/tmp_file.hpp
+++ /dev/null
@@ -1,99 +0,0 @@
-/**
- * Copyright © 2020 IBM Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#pragma once
-
-#include <errno.h>  // for errno
-#include <stdio.h>  // for perror()
-#include <stdlib.h> // for mkstemp()
-#include <string.h> // for strerror()
-#include <unistd.h> // for close(), unlink()
-
-#include <stdexcept>
-#include <string>
-
-namespace phosphor::power::regulators
-{
-
-/**
- * @class TmpFile
- *
- * Temporary file.
- *
- * File is created by the constructor and deleted by the destructor.  The file
- * name can be obtained from getName().
- */
-class TmpFile
-{
-  public:
-    // Specify which compiler-generated methods we want
-    TmpFile(const TmpFile&) = delete;
-    TmpFile(TmpFile&&) = delete;
-    TmpFile& operator=(const TmpFile&) = delete;
-    TmpFile& operator=(TmpFile&&) = delete;
-
-    /**
-     * Constructor.
-     *
-     * Creates the temporary file.
-     */
-    TmpFile()
-    {
-        // Generate unique file name, create file, and open it.  The XXXXXX
-        // characters are replaced by mkstemp() to make the file name unique.
-        char fileNameTemplate[17] = "/tmp/temp-XXXXXX";
-        int fd = mkstemp(fileNameTemplate);
-        if (fd == -1)
-        {
-            // If mkstemp() fails, throw an exception.  No temporary file has
-            // been created and calling getName() would not work.
-            throw std::runtime_error{"Unable to create temporary file: " +
-                                     std::string{strerror(errno)}};
-        }
-
-        // Close file
-        if (close(fd) == -1)
-        {
-            // If close() fails, write a message to standard error but do not
-            // throw an exception.  If an exception is thrown, the destructor
-            // will not be run and the temporary file will not be deleted.
-            perror("Unable to close temporary file");
-        }
-
-        // Save file name
-        fileName = fileNameTemplate;
-    }
-
-    const std::string& getName()
-    {
-        return fileName;
-    }
-
-    ~TmpFile()
-    {
-        // Delete temporary file
-        if (unlink(fileName.c_str()) == -1)
-        {
-            // If unlink() fails, write a message to standard error but do not
-            // throw an exception.  Destructors must not throw exceptions.
-            perror("Unable to delete temporary file");
-        }
-    }
-
-  private:
-    std::string fileName{};
-};
-
-} // namespace phosphor::power::regulators
diff --git a/phosphor-regulators/test/validate-regulators-config_tests.cpp b/phosphor-regulators/test/validate-regulators-config_tests.cpp
index 139b3ca..e62a88c 100644
--- a/phosphor-regulators/test/validate-regulators-config_tests.cpp
+++ b/phosphor-regulators/test/validate-regulators-config_tests.cpp
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-#include "tmp_file.hpp"
+#include "temporary_file.hpp"
 
 #include <stdio.h>    // for popen(), pclose(), fgets()
 #include <sys/stat.h> // for chmod()
@@ -120,8 +120,8 @@
 {
     // run the validation tool with the temporary file and return the output
     // of the validation tool.
-    TmpFile tmpFile;
-    command += " 2> " + tmpFile.getName();
+    TemporaryFile tmpFile;
+    command += " 2> " + tmpFile.getPath().string();
     // get the jsonschema print from validation tool.
     char buffer[256];
     std::string result;
@@ -151,7 +151,7 @@
     int exitStatus = WEXITSTATUS(returnValue);
 
     // Read the standardError from tmpFile.
-    std::ifstream input(tmpFile.getName().c_str());
+    std::ifstream input(tmpFile.getPath());
     std::string line;
 
     if (std::getline(input, line))
@@ -199,9 +199,8 @@
 
 void expectJsonValid(const json configFileJson)
 {
-    std::string fileName;
-    TmpFile tmpFile;
-    fileName = tmpFile.getName();
+    TemporaryFile tmpFile;
+    std::string fileName = tmpFile.getPath().string();
     writeDataToFile(configFileJson, fileName);
 
     EXPECT_FILE_VALID(fileName);
@@ -211,9 +210,8 @@
                        const std::string& expectedErrorMessage,
                        const std::string& expectedOutputMessage)
 {
-    std::string fileName;
-    TmpFile tmpFile;
-    fileName = tmpFile.getName();
+    TemporaryFile tmpFile;
+    std::string fileName = tmpFile.getPath().string();
     writeDataToFile(configFileJson, fileName);
 
     EXPECT_FILE_INVALID(fileName, expectedErrorMessage, expectedOutputMessage);
@@ -2867,9 +2865,8 @@
         "usage: validate-regulators-config.py [-h] [-s SCHEMA_FILE]";
     int valid = 0;
 
-    std::string fileName;
-    TmpFile tmpFile;
-    fileName = tmpFile.getName();
+    TemporaryFile tmpFile;
+    std::string fileName = tmpFile.getPath().string();
     writeDataToFile(validConfigFile, fileName);
     // Valid: -s specified
     {
@@ -2954,9 +2951,8 @@
     }
     // Invalid: File specified after -s is not right data format
     {
-        std::string wrongFormatFileName;
-        TmpFile wrongFormatFile;
-        wrongFormatFileName = wrongFormatFile.getName();
+        TemporaryFile wrongFormatFile;
+        std::string wrongFormatFileName = wrongFormatFile.getPath().string();
         std::ofstream out(wrongFormatFileName);
         out << "foo";
         out.close();
@@ -2967,9 +2963,8 @@
     }
     // Invalid: File specified after -c is not readable
     {
-        std::string notReadableFileName;
-        TmpFile notReadableFile;
-        notReadableFileName = notReadableFile.getName();
+        TemporaryFile notReadableFile;
+        std::string notReadableFileName = notReadableFile.getPath().string();
         writeDataToFile(validConfigFile, notReadableFileName);
         command = validateTool + schema + schemaFile + configuration +
                   notReadableFileName;
@@ -2979,9 +2974,8 @@
     }
     // Invalid: File specified after -s is not readable
     {
-        std::string notReadableFileName;
-        TmpFile notReadableFile;
-        notReadableFileName = notReadableFile.getName();
+        TemporaryFile notReadableFile;
+        std::string notReadableFileName = notReadableFile.getPath().string();
         writeDataToFile(validConfigFile, notReadableFileName);
         command = validateTool + schema + notReadableFileName + configuration +
                   fileName;
