1//===-- ZipFileResolverTest.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-exception
6//
7//===----------------------------------------------------------------------===//
8
9#include "lldb/Host/common/ZipFileResolver.h"
10#include "TestingSupport/SubsystemRAII.h"
11#include "TestingSupport/TestUtilities.h"
12#include "gtest/gtest.h"
13
14using namespace lldb_private;
15using namespace llvm;
16
17namespace {
18class ZipFileResolverTest : public ::testing::Test {
19 SubsystemRAII<FileSystem> subsystems;
20};
21
22std::string TestZipPath() {
23 FileSpec zip_spec(GetInputFilePath(name: "zip-test.zip"));
24 FileSystem::Instance().Resolve(file_spec&: zip_spec);
25 return zip_spec.GetPath();
26}
27} // namespace
28
29TEST_F(ZipFileResolverTest, ResolveSharedLibraryPathWithNormalFile) {
30 const FileSpec file_spec("/system/lib64/libtest.so");
31
32 ZipFileResolver::FileKind file_kind;
33 std::string file_path;
34 lldb::offset_t file_offset;
35 lldb::offset_t file_size;
36 ASSERT_TRUE(ZipFileResolver::ResolveSharedLibraryPath(
37 file_spec, file_kind, file_path, file_offset, file_size));
38
39 EXPECT_EQ(file_kind, ZipFileResolver::FileKind::eFileKindNormal);
40 EXPECT_EQ(file_path, file_spec.GetPath());
41 EXPECT_EQ(file_offset, 0UL);
42 EXPECT_EQ(file_size, 0UL);
43}
44
45TEST_F(ZipFileResolverTest, ResolveSharedLibraryPathWithZipMissing) {
46 const std::string zip_path = TestZipPath();
47 const FileSpec file_spec(zip_path + "!/lib/arm64-v8a/libmissing.so");
48
49 ZipFileResolver::FileKind file_kind;
50 std::string file_path;
51 lldb::offset_t file_offset;
52 lldb::offset_t file_size;
53 ASSERT_FALSE(ZipFileResolver::ResolveSharedLibraryPath(
54 file_spec, file_kind, file_path, file_offset, file_size));
55}
56
57TEST_F(ZipFileResolverTest, ResolveSharedLibraryPathWithZipExisting) {
58 const std::string zip_path = TestZipPath();
59 const FileSpec file_spec(zip_path + "!/lib/arm64-v8a/libzip-test.so");
60
61 ZipFileResolver::FileKind file_kind;
62 std::string file_path;
63 lldb::offset_t file_offset;
64 lldb::offset_t file_size;
65 ASSERT_TRUE(ZipFileResolver::ResolveSharedLibraryPath(
66 file_spec, file_kind, file_path, file_offset, file_size));
67
68 EXPECT_EQ(file_kind, ZipFileResolver::FileKind::eFileKindZip);
69 EXPECT_EQ(file_path, zip_path);
70 EXPECT_EQ(file_offset, 4096UL);
71 EXPECT_EQ(file_size, 3600UL);
72}
73

source code of lldb/unittests/Host/common/ZipFileResolverTest.cpp