| // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | |
| // for details. All rights reserved. Use of this source code is governed by a | |
| // BSD-style license that can be found in the LICENSE file. | |
| #include "bin/directory.h" | |
| #include "include/dart_api.h" | |
| #include "platform/assert.h" | |
| #include "vm/unit_test.h" | |
| namespace dart { | |
| VM_UNIT_TEST_CASE(DirectoryCurrentNoScope) { | |
| char* current_dir = dart::bin::Directory::CurrentNoScope(); | |
| EXPECT_NOTNULL(current_dir); | |
| free(current_dir); | |
| } | |
| TEST_CASE(DirectoryCurrent) { | |
| const char* current = dart::bin::Directory::Current(nullptr); | |
| EXPECT_NOTNULL(current); | |
| } | |
| TEST_CASE(DirectoryExists) { | |
| const char* current = dart::bin::Directory::Current(nullptr); | |
| EXPECT_NOTNULL(current); | |
| dart::bin::Directory::ExistsResult r = | |
| dart::bin::Directory::Exists(nullptr, current); | |
| EXPECT_EQ(dart::bin::Directory::EXISTS, r); | |
| } | |
| TEST_CASE(DirectorySystemTemp) { | |
| const char* system_temp = dart::bin::Directory::SystemTemp(nullptr); | |
| EXPECT_NOTNULL(system_temp); | |
| } | |
| TEST_CASE(DirectorySystemTempExists) { | |
| const char* system_temp = dart::bin::Directory::SystemTemp(nullptr); | |
| EXPECT_NOTNULL(system_temp); | |
| dart::bin::Directory::ExistsResult r = | |
| dart::bin::Directory::Exists(nullptr, system_temp); | |
| EXPECT_EQ(dart::bin::Directory::EXISTS, r); | |
| } | |
| TEST_CASE(DirectoryCreateTemp) { | |
| const char* kTempPrefix = "test_prefix"; | |
| const char* system_temp = dart::bin::Directory::SystemTemp(nullptr); | |
| EXPECT_NOTNULL(system_temp); | |
| const char* temp_dir = dart::bin::Directory::CreateTemp(nullptr, kTempPrefix); | |
| EXPECT_NOTNULL(temp_dir); | |
| // Make sure temp_dir contains test_prefix. | |
| EXPECT_NOTNULL(strstr(temp_dir, kTempPrefix)); | |
| // Cleanup. | |
| EXPECT(dart::bin::Directory::Delete(nullptr, temp_dir, false)); | |
| } | |
| TEST_CASE(DirectorySetCurrent) { | |
| const char* current = dart::bin::Directory::Current(nullptr); | |
| EXPECT_NOTNULL(current); | |
| const char* system_temp = dart::bin::Directory::SystemTemp(nullptr); | |
| EXPECT_NOTNULL(system_temp); | |
| EXPECT(dart::bin::Directory::SetCurrent(nullptr, system_temp)); | |
| const char* new_current = dart::bin::Directory::Current(nullptr); | |
| EXPECT_NOTNULL(new_current); | |
| EXPECT_NOTNULL(strstr(new_current, system_temp)); | |
| EXPECT(dart::bin::Directory::SetCurrent(nullptr, current)); | |
| } | |
| TEST_CASE(DirectoryCreateDelete) { | |
| const char* kTempDirName = "create_delete_test_name"; | |
| const char* system_temp = dart::bin::Directory::SystemTemp(nullptr); | |
| EXPECT_NOTNULL(system_temp); | |
| const intptr_t name_len = | |
| snprintf(nullptr, 0, "%s/%s", system_temp, kTempDirName); | |
| ASSERT(name_len > 0); | |
| char* name = new char[name_len + 1]; | |
| snprintf(name, name_len + 1, "%s/%s", system_temp, kTempDirName); | |
| // Make a directory. | |
| EXPECT(dart::bin::Directory::Create(nullptr, name)); | |
| // Make sure it exists. | |
| dart::bin::Directory::ExistsResult r = | |
| dart::bin::Directory::Exists(nullptr, name); | |
| EXPECT_EQ(dart::bin::Directory::EXISTS, r); | |
| // Cleanup. | |
| EXPECT(dart::bin::Directory::Delete(nullptr, name, false)); | |
| delete[] name; | |
| } | |
| TEST_CASE(DirectoryRename) { | |
| const char* kTempDirName = "rename_test_name"; | |
| const char* system_temp = dart::bin::Directory::SystemTemp(nullptr); | |
| EXPECT_NOTNULL(system_temp); | |
| const intptr_t name_len = | |
| snprintf(nullptr, 0, "%s/%s", system_temp, kTempDirName); | |
| ASSERT(name_len > 0); | |
| char* name = new char[name_len + 1]; | |
| snprintf(name, name_len + 1, "%s/%s", system_temp, kTempDirName); | |
| // Make a directory. | |
| EXPECT(dart::bin::Directory::Create(nullptr, name)); | |
| // Make sure it exists. | |
| dart::bin::Directory::ExistsResult r = | |
| dart::bin::Directory::Exists(nullptr, name); | |
| EXPECT_EQ(dart::bin::Directory::EXISTS, r); | |
| const intptr_t new_name_len = | |
| snprintf(nullptr, 0, "%s/%snewname", system_temp, kTempDirName); | |
| ASSERT(new_name_len > 0); | |
| char* new_name = new char[new_name_len + 1]; | |
| snprintf(new_name, new_name_len + 1, "%s/%snewname", system_temp, | |
| kTempDirName); | |
| EXPECT(dart::bin::Directory::Rename(nullptr, name, new_name)); | |
| r = dart::bin::Directory::Exists(nullptr, new_name); | |
| EXPECT_EQ(dart::bin::Directory::EXISTS, r); | |
| r = dart::bin::Directory::Exists(nullptr, name); | |
| EXPECT_EQ(dart::bin::Directory::DOES_NOT_EXIST, r); | |
| EXPECT(dart::bin::Directory::Delete(nullptr, new_name, false)); | |
| delete[] name; | |
| delete[] new_name; | |
| } | |
| } // namespace dart |