aboutsummaryrefslogtreecommitdiffstats
path: root/tests/unit/unittest/builddependenciesstorage-test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit/unittest/builddependenciesstorage-test.cpp')
-rw-r--r--tests/unit/unittest/builddependenciesstorage-test.cpp102
1 files changed, 71 insertions, 31 deletions
diff --git a/tests/unit/unittest/builddependenciesstorage-test.cpp b/tests/unit/unittest/builddependenciesstorage-test.cpp
index d69f8b868a..30db7ea408 100644
--- a/tests/unit/unittest/builddependenciesstorage-test.cpp
+++ b/tests/unit/unittest/builddependenciesstorage-test.cpp
@@ -55,17 +55,20 @@ protected:
MockSqliteWriteStatement &syncNewUsedMacrosStatement =storage.syncNewUsedMacrosStatement;
MockSqliteWriteStatement &deleteOutdatedUsedMacrosStatement = storage.deleteOutdatedUsedMacrosStatement;
MockSqliteWriteStatement &deleteNewUsedMacrosTableStatement = storage.deleteNewUsedMacrosTableStatement;
- MockSqliteWriteStatement &insertFileStatuses = storage.insertFileStatusesStatement;
+ MockSqliteWriteStatement &insertOrUpdateFileStatusesStatement = storage.insertOrUpdateFileStatusesStatement;
MockSqliteWriteStatement &insertIntoNewSourceDependenciesStatement = storage.insertIntoNewSourceDependenciesStatement;
MockSqliteWriteStatement &syncNewSourceDependenciesStatement = storage.syncNewSourceDependenciesStatement;
MockSqliteWriteStatement &deleteOutdatedSourceDependenciesStatement = storage.deleteOutdatedSourceDependenciesStatement;
MockSqliteWriteStatement &deleteNewSourceDependenciesStatement = storage.deleteNewSourceDependenciesStatement;
MockSqliteReadStatement &getLowestLastModifiedTimeOfDependencies = storage.getLowestLastModifiedTimeOfDependencies;
- MockSqliteWriteStatement &updateBuildDependencyTimeStampStatement = storage.updateBuildDependencyTimeStampStatement;
- MockSqliteWriteStatement &updateSourceTypeStatement = storage.updateSourceTypeStatement;
+ MockSqliteWriteStatement &insertOrUpdateProjectPartsSourcesStatement = storage.insertOrUpdateProjectPartsSourcesStatement;
MockSqliteReadStatement &fetchSourceDependenciesStatement = storage.fetchSourceDependenciesStatement;
MockSqliteReadStatement &fetchProjectPartIdStatement = storage.fetchProjectPartIdStatement;
MockSqliteReadStatement &fetchUsedMacrosStatement = storage.fetchUsedMacrosStatement;
+ MockSqliteWriteStatement &insertProjectPartNameStatement = storage.insertProjectPartNameStatement;
+ MockSqliteWriteStatement &updatePchCreationTimeStampStatement = storage.updatePchCreationTimeStampStatement;
+ MockSqliteWriteStatement &deleteAllProjectPartsSourcesWithProjectPartNameStatement
+ = storage.deleteAllProjectPartsSourcesWithProjectPartNameStatement;
};
TEST_F(BuildDependenciesStorage, ConvertStringsToJson)
@@ -81,8 +84,10 @@ TEST_F(BuildDependenciesStorage, InsertOrUpdateUsedMacros)
{
InSequence sequence;
- EXPECT_CALL(insertIntoNewUsedMacrosStatement, write(TypedEq<uint>(42u), TypedEq<Utils::SmallStringView>("FOO")));
- EXPECT_CALL(insertIntoNewUsedMacrosStatement, write(TypedEq<uint>(43u), TypedEq<Utils::SmallStringView>("BAR")));
+ EXPECT_CALL(insertIntoNewUsedMacrosStatement,
+ write(TypedEq<int>(42), TypedEq<Utils::SmallStringView>("FOO")));
+ EXPECT_CALL(insertIntoNewUsedMacrosStatement,
+ write(TypedEq<int>(43), TypedEq<Utils::SmallStringView>("BAR")));
EXPECT_CALL(syncNewUsedMacrosStatement, execute());
EXPECT_CALL(deleteOutdatedUsedMacrosStatement, execute());
EXPECT_CALL(deleteNewUsedMacrosTableStatement, execute());
@@ -90,12 +95,14 @@ TEST_F(BuildDependenciesStorage, InsertOrUpdateUsedMacros)
storage.insertOrUpdateUsedMacros({{"FOO", 42}, {"BAR", 43}});
}
-TEST_F(BuildDependenciesStorage, InsertFileStatuses)
+TEST_F(BuildDependenciesStorage, InsertOrUpdateFileStatuses)
{
- EXPECT_CALL(insertFileStatuses, write(TypedEq<int>(42), TypedEq<off_t>(1), TypedEq<time_t>(2), TypedEq<bool>(false)));
- EXPECT_CALL(insertFileStatuses, write(TypedEq<int>(43), TypedEq<off_t>(4), TypedEq<time_t>(5), TypedEq<bool>(true)));
+ EXPECT_CALL(insertOrUpdateFileStatusesStatement,
+ write(TypedEq<int>(42), TypedEq<off_t>(1), TypedEq<time_t>(2)));
+ EXPECT_CALL(insertOrUpdateFileStatusesStatement,
+ write(TypedEq<int>(43), TypedEq<off_t>(4), TypedEq<time_t>(5)));
- storage.insertFileStatuses({{42, 1, 2, false}, {43, 4, 5, true}});
+ storage.insertOrUpdateFileStatuses({{42, 1, 2}, {43, 4, 5}});
}
TEST_F(BuildDependenciesStorage, InsertOrUpdateSourceDependencies)
@@ -125,7 +132,6 @@ TEST_F(BuildDependenciesStorage, AddTablesInConstructor)
Storage storage{mockDatabase};
}
-
TEST_F(BuildDependenciesStorage, FetchLowestLastModifiedTimeIfNoModificationTimeExists)
{
EXPECT_CALL(getLowestLastModifiedTimeOfDependencies, valueReturnInt64(Eq(1)));
@@ -168,48 +174,82 @@ TEST_F(BuildDependenciesStorage, AddNewSourceDependenciesTable)
TEST_F(BuildDependenciesStorage, UpdateSources)
{
InSequence s;
- SourceEntries entries{{1, SourceType::TopProjectInclude, 10}, {2, SourceType::TopSystemInclude, 20}};
+ SourceEntries entries{{1, SourceType::TopProjectInclude, 10, ClangBackEnd::HasMissingIncludes::Yes},
+ {2, SourceType::TopSystemInclude, 20}};
+
+ EXPECT_CALL(deleteAllProjectPartsSourcesWithProjectPartNameStatement, write(TypedEq<int>(22)));
+ EXPECT_CALL(insertOrUpdateProjectPartsSourcesStatement,
+ write(TypedEq<int>(1), TypedEq<int>(22), TypedEq<uchar>(0), TypedEq<uchar>(1)));
+ EXPECT_CALL(insertOrUpdateProjectPartsSourcesStatement,
+ write(TypedEq<int>(2), TypedEq<int>(22), TypedEq<uchar>(1), TypedEq<uchar>(0)));
+
+ storage.insertOrUpdateSources(entries, 22);
+}
+
+TEST_F(BuildDependenciesStorage, UpdatePchCreationTimeStamp)
+{
+ InSequence s;
- EXPECT_CALL(updateBuildDependencyTimeStampStatement, write(TypedEq<long long>(10), TypedEq<int>(1)));
- EXPECT_CALL(updateSourceTypeStatement, write(TypedEq<uchar>(0), TypedEq<int>(1)));
- EXPECT_CALL(updateBuildDependencyTimeStampStatement, write(TypedEq<long long>(20), TypedEq<int>(2)));
- EXPECT_CALL(updateSourceTypeStatement, write(TypedEq<uchar>(1), TypedEq<int>(2)));
+ EXPECT_CALL(mockDatabase, immediateBegin());
+ EXPECT_CALL(updatePchCreationTimeStampStatement,
+ write(TypedEq<long long>(101), TypedEq<Utils::SmallStringView>("project1")));
+ EXPECT_CALL(mockDatabase, commit());
- storage.updateSources(entries);
+ storage.updatePchCreationTimeStamp(101, "project1");
}
-TEST_F(BuildDependenciesStorage, CallsFetchDependSourcesWithNonExistingProjectPartDontFetchesSourceDependencies)
+TEST_F(BuildDependenciesStorage, CallsFetchProjectIdWithNonExistingProjectPartName)
{
- EXPECT_CALL(fetchProjectPartIdStatement, valueReturnInt32(TypedEq<Utils::SmallStringView>("test"))).WillOnce(Return(Utils::optional<int>{}));
- EXPECT_CALL(fetchSourceDependenciesStatement, valuesReturnSourceEntries(_, _, _)).Times(0);
+ EXPECT_CALL(fetchProjectPartIdStatement,
+ valueReturnInt32(TypedEq<Utils::SmallStringView>("test")));
+ EXPECT_CALL(insertProjectPartNameStatement, write(TypedEq<Utils::SmallStringView>("test")));
- storage.fetchDependSources(22, "test");
+ storage.fetchProjectPartId("test");
}
-TEST_F(BuildDependenciesStorage, CallsFetchDependSourcesWithExistingProjectPartFetchesSourceDependencies)
+TEST_F(BuildDependenciesStorage, CallsFetchProjectIdWithExistingProjectPart)
{
- EXPECT_CALL(fetchProjectPartIdStatement, valueReturnInt32(TypedEq<Utils::SmallStringView>("test"))).WillOnce(Return(Utils::optional<int>{20}));
- EXPECT_CALL(fetchSourceDependenciesStatement, valuesReturnSourceEntries(_, 22, 20));
+ EXPECT_CALL(fetchProjectPartIdStatement, valueReturnInt32(TypedEq<Utils::SmallStringView>("test")))
+ .WillOnce(Return(Utils::optional<int>{20}));
+ EXPECT_CALL(insertProjectPartNameStatement, write(TypedEq<Utils::SmallStringView>("test"))).Times(0);
- storage.fetchDependSources(22, "test");
+ storage.fetchProjectPartId("test");
}
-TEST_F(BuildDependenciesStorage, FetchDependSourcesWithNonExistingProjectPartReturnsEmptySourceEntries)
+TEST_F(BuildDependenciesStorage, FetchProjectIdWithNonExistingProjectPartName)
{
- EXPECT_CALL(fetchProjectPartIdStatement, valueReturnInt32(TypedEq<Utils::SmallStringView>("test"))).WillOnce(Return(Utils::optional<int>{}));
+ ON_CALL(fetchProjectPartIdStatement, valueReturnInt32(TypedEq<Utils::SmallStringView>("test")))
+ .WillByDefault(Return(Utils::optional<int>{}));
+ ON_CALL(mockDatabase, lastInsertedRowId()).WillByDefault(Return(21));
- auto entries = storage.fetchDependSources(22, "test");
+ int id = storage.fetchProjectPartId("test");
+
+ ASSERT_THAT(id, 21);
+}
+
+TEST_F(BuildDependenciesStorage, FetchProjectIdWithExistingProjectPartName)
+{
+ ON_CALL(fetchProjectPartIdStatement, valueReturnInt32(TypedEq<Utils::SmallStringView>("test")))
+ .WillByDefault(Return(Utils::optional<int>{20}));
+
+ int id = storage.fetchProjectPartId("test");
+
+ ASSERT_THAT(id, 20);
+}
+
+TEST_F(BuildDependenciesStorage, CallsFetchDependSources)
+{
+ EXPECT_CALL(fetchSourceDependenciesStatement, valuesReturnSourceEntries(_, 22, 20));
- ASSERT_THAT(entries, IsEmpty());
+ storage.fetchDependSources(22, 20);
}
-TEST_F(BuildDependenciesStorage, FetchDependSourcesWithExistingProjectPartReturnsSourceEntries)
+TEST_F(BuildDependenciesStorage, FetchDependSources)
{
SourceEntries sourceEntries{{1, SourceType::TopProjectInclude, 10}, {2, SourceType::TopSystemInclude, 20}};
- EXPECT_CALL(fetchProjectPartIdStatement, valueReturnInt32(TypedEq<Utils::SmallStringView>("test"))).WillOnce(Return(Utils::optional<int>{20}));
EXPECT_CALL(fetchSourceDependenciesStatement, valuesReturnSourceEntries(_, 22, 20)).WillOnce(Return(sourceEntries));
- auto entries = storage.fetchDependSources(22, "test");
+ auto entries = storage.fetchDependSources(22, 20);
ASSERT_THAT(entries, sourceEntries);
}