diff options
Diffstat (limited to 'tests/unit/unittest/builddependenciesstorage-test.cpp')
-rw-r--r-- | tests/unit/unittest/builddependenciesstorage-test.cpp | 102 |
1 files changed, 71 insertions, 31 deletions
diff --git a/tests/unit/unittest/builddependenciesstorage-test.cpp b/tests/unit/unittest/builddependenciesstorage-test.cpp index d69f8b868a2..30db7ea408a 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); } |