Skip to content

Commit 48644a7

Browse files
authored
feat: install mocks for spanner, sql, pubsublite (#13548)
1 parent 73698cf commit 48644a7

10 files changed

Lines changed: 54 additions & 36 deletions

File tree

ci/etc/expected_install_directories

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1354,6 +1354,7 @@
13541354
./lib64/cmake/google_cloud_cpp_pubsub
13551355
./lib64/cmake/google_cloud_cpp_pubsub_mocks
13561356
./lib64/cmake/google_cloud_cpp_pubsublite
1357+
./lib64/cmake/google_cloud_cpp_pubsublite_mocks
13571358
./lib64/cmake/google_cloud_cpp_rapidmigrationassessment
13581359
./lib64/cmake/google_cloud_cpp_rapidmigrationassessment_mocks
13591360
./lib64/cmake/google_cloud_cpp_recaptchaenterprise
@@ -1391,9 +1392,11 @@
13911392
./lib64/cmake/google_cloud_cpp_shell
13921393
./lib64/cmake/google_cloud_cpp_shell_mocks
13931394
./lib64/cmake/google_cloud_cpp_spanner
1395+
./lib64/cmake/google_cloud_cpp_spanner_mocks
13941396
./lib64/cmake/google_cloud_cpp_speech
13951397
./lib64/cmake/google_cloud_cpp_speech_mocks
13961398
./lib64/cmake/google_cloud_cpp_sql
1399+
./lib64/cmake/google_cloud_cpp_sql_mocks
13971400
./lib64/cmake/google_cloud_cpp_storage
13981401
./lib64/cmake/google_cloud_cpp_storagecontrol
13991402
./lib64/cmake/google_cloud_cpp_storagecontrol_mocks

ci/verify_current_targets/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ set(ga_libraries
3333
pubsub
3434
pubsub_mocks
3535
spanner
36+
spanner_mocks
3637
storage)
3738

3839
# Define experimental libraries. The only difference is the name of the CMake

generator/standalone_main.cc

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -168,8 +168,11 @@ int WriteInstallDirectories(
168168
auto const lib = LibraryName(product_path);
169169
install_directories.push_back("./lib64/cmake/google_cloud_cpp_" + lib);
170170
// TODO(#5782) - install mocks in libs with handwritten CMakeLists.txt
171-
auto const handwritten_cmake = std::set<std::string>{
172-
{"bigtable", "compute", "pubsublite", "spanner", "sql", "storage"}};
171+
auto const handwritten_cmake = std::set<std::string>{{
172+
"bigtable",
173+
"compute",
174+
"storage",
175+
}};
173176
if (!google::cloud::internal::Contains(handwritten_cmake, lib)) {
174177
install_directories.push_back("./lib64/cmake/google_cloud_cpp_" + lib +
175178
"_mocks");

google/cloud/pubsublite/BUILD.bazel

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ package(default_visibility = ["//visibility:private"])
1717
licenses(["notice"]) # Apache 2.0
1818

1919
load(":google_cloud_cpp_pubsublite.bzl", "google_cloud_cpp_pubsublite_hdrs", "google_cloud_cpp_pubsublite_srcs")
20-
load(":google_cloud_cpp_pubsublite_mocks.bzl", "google_cloud_cpp_pubsublite_mocks_hdrs", "google_cloud_cpp_pubsublite_mocks_srcs")
20+
load(":google_cloud_cpp_pubsublite_mocks.bzl", "google_cloud_cpp_pubsublite_mocks_hdrs")
2121
load(":pubsublite_testing.bzl", "pubsublite_testing_hdrs", "pubsublite_testing_srcs")
2222
load(":pubsublite_unit_tests.bzl", "pubsublite_unit_tests")
2323

@@ -49,7 +49,7 @@ filegroup(
4949
cc_library(
5050
name = "google_cloud_cpp_pubsublite_mocks",
5151
testonly = True,
52-
srcs = google_cloud_cpp_pubsublite_mocks_srcs,
52+
srcs = [],
5353
hdrs = google_cloud_cpp_pubsublite_mocks_hdrs,
5454
visibility = ["//:__pkg__"],
5555
deps = [

google/cloud/pubsublite/CMakeLists.txt

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -203,18 +203,25 @@ create_bazel_config(google_cloud_cpp_pubsublite YEAR "2021")
203203
# at least one .o file). Unfortunately INTERFACE libraries are a bit weird in
204204
# that they need absolute paths for their sources.
205205
add_library(google_cloud_cpp_pubsublite_mocks INTERFACE)
206-
target_sources(
207-
google_cloud_cpp_pubsublite_mocks
208-
INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/mocks/mock_admin_connection.h
209-
${CMAKE_CURRENT_SOURCE_DIR}/mocks/mock_topic_stats_connection.h)
206+
set(google_cloud_cpp_pubsublite_mocks_hdrs
207+
# cmake-format: sort
208+
mocks/mock_admin_connection.h mocks/mock_topic_stats_connection.h)
209+
export_list_to_bazel("google_cloud_cpp_pubsublite_mocks.bzl"
210+
google_cloud_cpp_pubsublite_mocks_hdrs YEAR "2021")
211+
foreach (file IN LISTS google_cloud_cpp_pubsublite_mocks_hdrs)
212+
# We use a generator expression per the recommendation in:
213+
# https://stackoverflow.com/a/62465051
214+
list(APPEND mock_files
215+
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/${file}>")
216+
endforeach ()
217+
target_sources(google_cloud_cpp_pubsublite_mocks INTERFACE ${mock_files})
210218
target_link_libraries(
211219
google_cloud_cpp_pubsublite_mocks
212220
INTERFACE google-cloud-cpp::experimental-pubsublite GTest::gmock_main
213221
GTest::gmock GTest::gtest)
214222
set_target_properties(
215223
google_cloud_cpp_pubsublite_mocks
216224
PROPERTIES EXPORT_NAME google-cloud-cpp::experimental-pubsublite_mocks)
217-
create_bazel_config(google_cloud_cpp_pubsublite_mocks YEAR "2021")
218225
target_include_directories(
219226
google_cloud_cpp_pubsublite_mocks
220227
INTERFACE $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>
@@ -340,8 +347,6 @@ install(
340347

341348
google_cloud_cpp_install_headers("google_cloud_cpp_pubsublite"
342349
"include/google/cloud/pubsublite")
343-
google_cloud_cpp_install_headers("google_cloud_cpp_pubsublite_mocks"
344-
"include/google/cloud/pubsublite")
345350

346351
google_cloud_cpp_add_pkgconfig(
347352
pubsublite
@@ -366,3 +371,5 @@ install(
366371
"${CMAKE_CURRENT_BINARY_DIR}/google_cloud_cpp_pubsublite-config-version.cmake"
367372
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/google_cloud_cpp_pubsublite"
368373
COMPONENT google_cloud_cpp_development)
374+
375+
google_cloud_cpp_install_mocks(pubsublite "Pub/Sub Lite API")

google/cloud/pubsublite/google_cloud_cpp_pubsublite_mocks.bzl

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,9 @@
1414
#
1515
# DO NOT EDIT -- GENERATED BY CMake -- Change the CMakeLists.txt file if needed
1616

17-
"""Automatically generated source lists for google_cloud_cpp_pubsublite_mocks - DO NOT EDIT."""
17+
"""Automatically generated unit tests list - DO NOT EDIT."""
1818

1919
google_cloud_cpp_pubsublite_mocks_hdrs = [
2020
"mocks/mock_admin_connection.h",
2121
"mocks/mock_topic_stats_connection.h",
2222
]
23-
24-
google_cloud_cpp_pubsublite_mocks_srcs = [
25-
]

google/cloud/spanner/BUILD.bazel

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ licenses(["notice"]) # Apache 2.0
1818

1919
load(":google_cloud_cpp_spanner.bzl", "google_cloud_cpp_spanner_hdrs", "google_cloud_cpp_spanner_srcs")
2020
load(":google_cloud_cpp_spanner_rest.bzl", "google_cloud_cpp_spanner_rest_hdrs", "google_cloud_cpp_spanner_rest_srcs")
21-
load(":google_cloud_cpp_spanner_mocks.bzl", "google_cloud_cpp_spanner_mocks_hdrs", "google_cloud_cpp_spanner_mocks_srcs")
21+
load(":google_cloud_cpp_spanner_mocks.bzl", "google_cloud_cpp_spanner_mocks_hdrs")
2222
load(":spanner_client_unit_tests.bzl", "spanner_client_unit_tests")
2323
load(":spanner_client_benchmarks.bzl", "spanner_client_benchmarks")
2424

@@ -76,7 +76,7 @@ filegroup(
7676
cc_library(
7777
name = "google_cloud_cpp_spanner_mocks",
7878
testonly = True,
79-
srcs = google_cloud_cpp_spanner_mocks_srcs,
79+
srcs = [],
8080
hdrs = google_cloud_cpp_spanner_mocks_hdrs,
8181
visibility = [
8282
":__subpackages__",

google/cloud/spanner/CMakeLists.txt

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -299,22 +299,29 @@ endif ()
299299
# at least one .o file). Unfortunately INTERFACE libraries are a bit weird in
300300
# that they need absolute paths for their sources.
301301
add_library(google_cloud_cpp_spanner_mocks INTERFACE)
302-
target_sources(
303-
google_cloud_cpp_spanner_mocks
304-
INTERFACE
305-
${CMAKE_CURRENT_SOURCE_DIR}/admin/mocks/mock_database_admin_connection.h
306-
${CMAKE_CURRENT_SOURCE_DIR}/admin/mocks/mock_instance_admin_connection.h
307-
${CMAKE_CURRENT_SOURCE_DIR}/mocks/mock_database_admin_connection.h
308-
${CMAKE_CURRENT_SOURCE_DIR}/mocks/mock_instance_admin_connection.h
309-
${CMAKE_CURRENT_SOURCE_DIR}/mocks/mock_spanner_connection.h
310-
${CMAKE_CURRENT_SOURCE_DIR}/mocks/row.h)
302+
set(google_cloud_cpp_spanner_mocks_hdrs
303+
# cmake-format: sort
304+
admin/mocks/mock_database_admin_connection.h
305+
admin/mocks/mock_instance_admin_connection.h
306+
mocks/mock_database_admin_connection.h
307+
mocks/mock_instance_admin_connection.h
308+
mocks/mock_spanner_connection.h
309+
mocks/row.h)
310+
export_list_to_bazel("google_cloud_cpp_spanner_mocks.bzl"
311+
google_cloud_cpp_spanner_mocks_hdrs YEAR "2019")
312+
foreach (file IN LISTS google_cloud_cpp_spanner_mocks_hdrs)
313+
# We use a generator expression per the recommendation in:
314+
# https://stackoverflow.com/a/62465051
315+
list(APPEND mock_files
316+
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/${file}>")
317+
endforeach ()
318+
target_sources(google_cloud_cpp_spanner_mocks INTERFACE ${mock_files})
311319
target_link_libraries(
312320
google_cloud_cpp_spanner_mocks
313321
INTERFACE google-cloud-cpp::spanner GTest::gmock_main GTest::gmock
314322
GTest::gtest)
315323
set_target_properties(google_cloud_cpp_spanner_mocks
316324
PROPERTIES EXPORT_NAME google-cloud-cpp::spanner_mocks)
317-
create_bazel_config(google_cloud_cpp_spanner_mocks YEAR "2019")
318325
target_include_directories(
319326
google_cloud_cpp_spanner_mocks
320327
INTERFACE $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>
@@ -540,8 +547,6 @@ install(
540547

541548
google_cloud_cpp_install_headers("google_cloud_cpp_spanner"
542549
"include/google/cloud/spanner")
543-
google_cloud_cpp_install_headers("google_cloud_cpp_spanner_mocks"
544-
"include/google/cloud/spanner")
545550

546551
google_cloud_cpp_add_pkgconfig(
547552
spanner
@@ -570,3 +575,5 @@ install(
570575
"${CMAKE_CURRENT_BINARY_DIR}/google_cloud_cpp_spanner-config-version.cmake"
571576
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/google_cloud_cpp_spanner"
572577
COMPONENT google_cloud_cpp_development)
578+
579+
google_cloud_cpp_install_mocks(spanner "Google Cloud Spanner")

google/cloud/spanner/google_cloud_cpp_spanner_mocks.bzl

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
#
1515
# DO NOT EDIT -- GENERATED BY CMake -- Change the CMakeLists.txt file if needed
1616

17-
"""Automatically generated source lists for google_cloud_cpp_spanner_mocks - DO NOT EDIT."""
17+
"""Automatically generated unit tests list - DO NOT EDIT."""
1818

1919
google_cloud_cpp_spanner_mocks_hdrs = [
2020
"admin/mocks/mock_database_admin_connection.h",
@@ -24,6 +24,3 @@ google_cloud_cpp_spanner_mocks_hdrs = [
2424
"mocks/mock_spanner_connection.h",
2525
"mocks/row.h",
2626
]
27-
28-
google_cloud_cpp_spanner_mocks_srcs = [
29-
]

google/cloud/sql/CMakeLists.txt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,10 @@ file(
9292
list(SORT relative_mock_files)
9393
set(mock_files)
9494
foreach (file IN LISTS relative_mock_files)
95-
list(APPEND mock_files "${CMAKE_CURRENT_SOURCE_DIR}/${file}")
95+
# We use a generator expression per the recommendation in:
96+
# https://stackoverflow.com/a/62465051
97+
list(APPEND mock_files
98+
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/${file}>")
9699
endforeach ()
97100
add_library(google_cloud_cpp_sql_mocks INTERFACE)
98101
target_sources(google_cloud_cpp_sql_mocks INTERFACE ${mock_files})
@@ -149,8 +152,6 @@ google_cloud_cpp_install_proto_library_protos("google_cloud_cpp_sql_protos"
149152
google_cloud_cpp_install_proto_library_headers("google_cloud_cpp_sql_protos")
150153
google_cloud_cpp_install_headers("google_cloud_cpp_sql"
151154
"include/google/cloud/sql")
152-
google_cloud_cpp_install_headers("google_cloud_cpp_sql_mocks"
153-
"include/google/cloud/sql")
154155

155156
google_cloud_cpp_add_pkgconfig(
156157
sql
@@ -179,6 +180,8 @@ install(
179180

180181
external_googleapis_install_pc("google_cloud_cpp_sql_protos")
181182

183+
google_cloud_cpp_install_mocks(sql "Cloud SQL Admin API")
184+
182185
# google-cloud-cpp::sql must be defined before we can add the samples.
183186
foreach (dir IN LISTS service_dirs)
184187
if (BUILD_TESTING AND GOOGLE_CLOUD_CPP_ENABLE_CXX_EXCEPTIONS)

0 commit comments

Comments
 (0)