From 3252ca0fdc07a358a8e1a35ab8459aad4ad00361 Mon Sep 17 00:00:00 2001 From: Brian Camacho Date: Sun, 17 Nov 2024 02:40:15 -0500 Subject: [PATCH] unit tests --- src/libfetchers-tests/git-utils.cc | 45 ++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/src/libfetchers-tests/git-utils.cc b/src/libfetchers-tests/git-utils.cc index 44d1c665a..a52c2b7f8 100644 --- a/src/libfetchers-tests/git-utils.cc +++ b/src/libfetchers-tests/git-utils.cc @@ -234,6 +234,51 @@ TEST_F(GitUtilsTest, gitUrlToSsh) { } } +class FetchAttributeTest : public ::testing::Test { +protected: + void SetUp() override { + // test literal (non-wildcard) matches too + std::string content1 = "litfile filter=lfs diff=lfs merge=lfs -text"; + auto rules1 = parseGitAttrFile(content1); + fetch1.rules = std::move(rules1); + + std::string content2 = "*.wildcard filter=lfs diff=lfs merge=lfs -text"; + auto rules2 = parseGitAttrFile(content2); + fetch2.rules = std::move(rules2); + } + + Fetch fetch1; + Fetch fetch2; +}; + +// Test exact match pattern +TEST_F(FetchAttributeTest, ExactMatch) { + EXPECT_TRUE(fetch1.hasAttribute("litfile", "filter", "lfs")); + EXPECT_TRUE(fetch1.hasAttribute("./litfile", "filter", "lfs")); + EXPECT_TRUE(fetch1.hasAttribute("/litfile", "filter", "lfs")); + EXPECT_FALSE(fetch1.hasAttribute("other", "filter", "lfs")); +} + +// Test wildcard pattern +TEST_F(FetchAttributeTest, WildcardMatch) { + EXPECT_TRUE(fetch2.hasAttribute("match.wildcard", "filter", "lfs")); + EXPECT_FALSE(fetch2.hasAttribute("nomatch.otherext", "filter", "lfs")); + EXPECT_FALSE(fetch2.hasAttribute("nomatch.wildcard.extra", "filter", "lfs")); +} + +// Test empty path +TEST_F(FetchAttributeTest, EmptyPath) { + EXPECT_FALSE(fetch1.hasAttribute("", "filter", "lfs")); + EXPECT_FALSE(fetch2.hasAttribute("", "filter", "lfs")); +} + +// Test case sensitivity +TEST_F(FetchAttributeTest, CaseSensitivity) { + EXPECT_FALSE(fetch1.hasAttribute("LITFILE", "filter", "lfs")); + EXPECT_FALSE(fetch2.hasAttribute("file.CHUNG", "filter", "lfs")); +} + + } // namespace lfs } // namespace nix