brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.6 KiB · 26ab0ed Raw
79 lines · cpp
1//===-- SourceManagerTest.cpp ---------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "lldb/Core/SourceManager.h"10#include "lldb/Host/FileSystem.h"11#include "lldb/Utility/SupportFile.h"12#include "gtest/gtest.h"13 14#include "TestingSupport/MockTildeExpressionResolver.h"15 16using namespace lldb;17using namespace lldb_private;18 19class SourceFileCache : public ::testing::Test {20public:21  void SetUp() override {22    FileSystem::Initialize(std::unique_ptr<TildeExpressionResolver>(23        new MockTildeExpressionResolver("Jonas", "/jonas")));24  }25  void TearDown() override { FileSystem::Terminate(); }26};27 28TEST_F(SourceFileCache, FindSourceFileFound) {29  SourceManager::SourceFileCache cache;30 31  // Insert: foo32  FileSpec foo_file_spec("foo");33  auto foo_file_sp = std::make_shared<SourceManager::File>(34      std::make_shared<SupportFile>(foo_file_spec), lldb::DebuggerSP());35  cache.AddSourceFile(foo_file_spec, foo_file_sp);36 37  // Query: foo, expect found.38  FileSpec another_foo_file_spec("foo");39  ASSERT_EQ(cache.FindSourceFile(another_foo_file_spec), foo_file_sp);40}41 42TEST_F(SourceFileCache, FindSourceFileNotFound) {43  SourceManager::SourceFileCache cache;44 45  // Insert: foo46  FileSpec foo_file_spec("foo");47  auto foo_file_sp = std::make_shared<SourceManager::File>(48      std::make_shared<SupportFile>(foo_file_spec), lldb::DebuggerSP());49  cache.AddSourceFile(foo_file_spec, foo_file_sp);50 51  // Query: bar, expect not found.52  FileSpec bar_file_spec("bar");53  ASSERT_EQ(cache.FindSourceFile(bar_file_spec), nullptr);54}55 56TEST_F(SourceFileCache, FindSourceFileByUnresolvedPath) {57  SourceManager::SourceFileCache cache;58 59  FileSpec foo_file_spec("~/foo");60 61  // Mimic the resolution in SourceManager::GetFile.62  FileSpec resolved_foo_file_spec = foo_file_spec;63  FileSystem::Instance().Resolve(resolved_foo_file_spec);64 65  // Create the file with the resolved file spec.66  auto foo_file_sp = std::make_shared<SourceManager::File>(67      std::make_shared<SupportFile>(resolved_foo_file_spec),68      lldb::DebuggerSP());69 70  // Cache the result with the unresolved file spec.71  cache.AddSourceFile(foo_file_spec, foo_file_sp);72 73  // Query the unresolved path.74  EXPECT_EQ(cache.FindSourceFile(FileSpec("~/foo")), foo_file_sp);75 76  // Query the resolved path.77  EXPECT_EQ(cache.FindSourceFile(FileSpec("/jonas/foo")), foo_file_sp);78}79