Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -85,11 +85,20 @@ preprocessed_libraries_binding="${owlbot_cli_source_folder}"

pushd "${postprocessing_target}"

# Backs up all files matching `stub/Version.java`
# This is a workaround to prevent owl-bot-copy from omitting
# Version.java files when transferring the generated code
backup_dir=$(mktemp -d)
backup_version_java "${PWD}" "${backup_dir}"

owl-bot copy-code \
--source-repo-commit-hash=none \
--source-repo="${owlbot_cli_source_folder}" \
--config-file="${owlbot_yaml_relative_path}"

restore_version_java "${PWD}" "${backup_dir}"
rm -rf "${backup_dir}"


# clean the custom owlbot yaml
if [[ "${is_monorepo}" == "true" ]]; then
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ deep-remove-regex:

deep-preserve-regex:
- "/{{ module_name }}/google-.*/src/test/java/com/google/cloud/.*/v.*/it/IT.*Test.java"
- "/.*google-.*/src/main/java/.*/stub/Version.java"

deep-copy-regex:
- source: "/{{ proto_path }}/(v.*)/.*-java/proto-google-.*/src"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,27 @@ get_proto_path_from_preprocessed_sources_multiple_proto_dirs_fails() {
assertEquals 1 ${res}
}

backup_and_restore_version_java_succeeds() {
local target_dir=$(mktemp -d)
local backup_dir=$(mktemp -d)

mkdir -p "${target_dir}/google-cloud-test/src/main/java/com/google/cloud/test/v1/stub"
echo "version1" > "${target_dir}/google-cloud-test/src/main/java/com/google/cloud/test/v1/stub/Version.java"

backup_version_java "${target_dir}" "${backup_dir}"

# Simulate owl-bot overwriting the file
echo "version2" > "${target_dir}/google-cloud-test/src/main/java/com/google/cloud/test/v1/stub/Version.java"

restore_version_java "${target_dir}" "${backup_dir}"

# The original "version1" should have been restored
local restored_content=$(cat "${target_dir}/google-cloud-test/src/main/java/com/google/cloud/test/v1/stub/Version.java")
assertEquals "version1" "${restored_content}"

rm -rf "${target_dir}" "${backup_dir}"
}

normalize_owlbot_yaml_test() {
local temp_dir=$(mktemp -d)
local input_file="${temp_dir}/input.yaml"
Expand Down Expand Up @@ -266,6 +287,7 @@ test_list=(
get_proto_path_from_preprocessed_sources_valid_library_succeeds
get_proto_path_from_preprocessed_sources_empty_library_fails
get_proto_path_from_preprocessed_sources_multiple_proto_dirs_fails
backup_and_restore_version_java_succeeds
normalize_owlbot_yaml_test
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ deep-remove-regex:

deep-preserve-regex:
- "/java-bare-metal-solution/google-.*/src/test/java/com/google/cloud/.*/v.*/it/IT.*Test.java"
- "/.*google-.*/src/main/java/.*/stub/Version.java"

deep-copy-regex:
- source: "/google/cloud/baremetalsolution/(v.*)/.*-java/proto-google-.*/src"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -334,6 +334,45 @@ error_if_not_exists() {
fi
}

# Backups existing Version.java files in the specified target directory
# Arguments:
# 1 - target_directory: The directory where to search for Version.java
# 2 - backup_directory: The directory where the backups will be stored
backup_version_java() {
Comment thread
blakeli0 marked this conversation as resolved.
local target_directory=$1
local backup_directory=$2

pushd "${target_directory}" > /dev/null
find . -type f -path "*/src/*/stub/Version.java" -print0 | while IFS= read -r -d '' file; do
local backup_path="${backup_directory}/${file#./}"
mkdir -p "$(dirname "${backup_path}")"
cp "$file" "${backup_path}"
done
popd > /dev/null
}

# Restores Version.java files from the backup directory to the target directory
# Arguments:
# 1 - target_directory: The directory where to restore Version.java
# 2 - backup_directory: The directory where the backups are stored
restore_version_java() {
local target_directory=$1
local backup_directory=$2

if [[ ! -d "${backup_directory}" ]]; then
return 0
fi

pushd "${backup_directory}" > /dev/null
find . -type f -print0 | while IFS= read -r -d '' file; do
local relative_path="${file#./}"
local target_path="${target_directory}/${relative_path}"
mkdir -p "$(dirname "${target_path}")"
mv "$file" "${target_path}"
done
popd > /dev/null
}

normalize_owlbot_yaml() {
local input_file="$1"
local output_file="$2"
Expand Down
Loading