From b40c6a768aa8df4774d2a8c3ac7045237cc748cd Mon Sep 17 00:00:00 2001 From: Andreas Gampe Date: Fri, 2 May 2014 14:25:12 -0700 Subject: ART: Fix assembler_test to use ScratchFile This removes a warning about tmpnam usage. Also add an assertion to ScratchFile about ANDROID_DATA being set, which it relies on for the temp directory. Change-Id: I1202f92e48e61492f0ed3ac36ff44fde34dbb0e1 --- compiler/utils/assembler_test.h | 14 +++++++++++--- runtime/common_runtime_test.h | 3 +++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/compiler/utils/assembler_test.h b/compiler/utils/assembler_test.h index ce1c4de2fa..1b050cf88d 100644 --- a/compiler/utils/assembler_test.h +++ b/compiler/utils/assembler_test.h @@ -19,7 +19,7 @@ #include "assembler.h" -#include "gtest/gtest.h" +#include "common_runtime_test.h" // For ScratchFile #include #include @@ -30,6 +30,10 @@ namespace art { +// Use a glocal static variable to keep the same name for all test data. Else we'll just spam the +// temp directory. +static std::string tmpnam_; + template class AssemblerTest : public testing::Test { public: @@ -203,6 +207,10 @@ class AssemblerTest : public testing::Test { void SetUp() OVERRIDE { assembler_.reset(new Ass()); + // Fake a runtime test for ScratchFile + std::string android_data; + CommonRuntimeTest::SetEnvironmentVariables(android_data); + SetUpHelpers(); } @@ -667,7 +675,8 @@ class AssemblerTest : public testing::Test { // Use a consistent tmpnam, so store it. std::string GetTmpnam() { if (tmpnam_.length() == 0) { - tmpnam_ = std::string(tmpnam(nullptr)); + ScratchFile tmp; + tmpnam_ = tmp.GetFilename() + "asm"; } return tmpnam_; } @@ -677,7 +686,6 @@ class AssemblerTest : public testing::Test { std::string resolved_assembler_cmd_; std::string resolved_objdump_cmd_; std::string resolved_disassemble_cmd_; - std::string tmpnam_; static constexpr size_t OBJDUMP_SECTION_LINE_MIN_TOKENS = 6; }; diff --git a/runtime/common_runtime_test.h b/runtime/common_runtime_test.h index 723e32c85f..79d36901df 100644 --- a/runtime/common_runtime_test.h +++ b/runtime/common_runtime_test.h @@ -57,6 +57,9 @@ namespace art { class ScratchFile { public: ScratchFile() { + // ANDROID_DATA needs to be set + CHECK_NE(static_cast(nullptr), getenv("ANDROID_DATA")) << + "Are you subclassing RuntimeTest?"; filename_ = getenv("ANDROID_DATA"); filename_ += "/TmpFile-XXXXXX"; int fd = mkstemp(&filename_[0]); -- cgit v1.2.3