Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit abdf6987 authored by Dan Albert's avatar Dan Albert Committed by Gerrit Code Review
Browse files

Merge "Get libbase tests working on Windows."

parents c9e38959 0c4b3a31
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -55,6 +55,9 @@ TEST(file, WriteStringToFile) {
  EXPECT_EQ("abc", s);
}

// WriteStringToFile2 is explicitly for setting Unix permissions, which make no
// sense on Windows.
#if !defined(_WIN32)
TEST(file, WriteStringToFile2) {
  TemporaryFile tf;
  ASSERT_TRUE(tf.fd != -1);
@@ -71,6 +74,7 @@ TEST(file, WriteStringToFile2) {
    << strerror(errno);
  EXPECT_EQ("abc", s);
}
#endif

TEST(file, WriteStringToFd) {
  TemporaryFile tf;
+3 −0
Original line number Diff line number Diff line
@@ -20,11 +20,14 @@

#include <string>

// The z size sepcifier isn't supported on Windows, so this test isn't useful.
#if !defined(_WIN32)
TEST(StringPrintfTest, HexSizeT) {
  size_t size = 0x00107e59;
  EXPECT_EQ("00107e59", android::base::StringPrintf("%08zx", size));
  EXPECT_EQ("0x00107e59", android::base::StringPrintf("0x%08zx", size));
}
#endif

TEST(StringPrintfTest, StringAppendF) {
  std::string s("a");
+5 −0
Original line number Diff line number Diff line
@@ -20,6 +20,11 @@

int main(int argc, char** argv) {
  ::testing::InitGoogleTest(&argc, argv);

  // No logging on Windows yet.
#if !defined(_WIN32)
  android::base::InitLogging(argv, android::base::StderrLogger);
#endif

  return RUN_ALL_TESTS();
}
+24 −3
Original line number Diff line number Diff line
@@ -16,15 +16,26 @@

#include "test_utils.h"

#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <unistd.h>

#if defined(_WIN32)
#include <windows.h>
#endif

TemporaryFile::TemporaryFile() {
#if defined(__ANDROID__)
  init("/data/local/tmp");
  if (fd == -1) {
#elif defined(_WIN32)
  char wd[MAX_PATH] = {};
  _getcwd(wd, sizeof(wd));
  init(wd);
#else
  init("/tmp");
  }
#endif
}

TemporaryFile::~TemporaryFile() {
@@ -34,5 +45,15 @@ TemporaryFile::~TemporaryFile() {

void TemporaryFile::init(const char* tmp_dir) {
  snprintf(filename, sizeof(filename), "%s/TemporaryFile-XXXXXX", tmp_dir);
#if !defined(_WIN32)
  fd = mkstemp(filename);
#else
  // Windows doesn't have mkstemp, and tmpfile creates the file in the root
  // directory, requiring root (?!) permissions. We have to settle for mktemp.
  if (mktemp(filename) == nullptr) {
    abort();
  }

  fd = open(filename, O_RDWR | O_NOINHERIT | O_CREAT, _S_IREAD | _S_IWRITE);
#endif
}