diff --git a/google-cloud-storage/lib/google/cloud/storage/bucket.rb b/google-cloud-storage/lib/google/cloud/storage/bucket.rb index 34761e0635a9..46f8bbc29e90 100644 --- a/google-cloud-storage/lib/google/cloud/storage/bucket.rb +++ b/google-cloud-storage/lib/google/cloud/storage/bucket.rb @@ -1319,6 +1319,9 @@ def delete if_metageneration_match: nil, if_metageneration_not_match: nil # as distinct results. The default is `false`. For more information, # see [Object Versioning # ](https://cloud.google.com/storage/docs/object-versioning). + # @param [Boolean] include_folders_as_prefixes If `true`, will also include + # folders and managed folders, besides objects, in the returned prefixes. + # Only applicable if delimiter is set to '/'. # # @return [Array] (See # {Google::Cloud::Storage::File::List}) @@ -1346,17 +1349,19 @@ def delete if_metageneration_match: nil, if_metageneration_not_match: nil # end # def files prefix: nil, delimiter: nil, token: nil, max: nil, - versions: nil, match_glob: nil + versions: nil, match_glob: nil, include_folders_as_prefixes: nil ensure_service! gapi = service.list_files name, prefix: prefix, delimiter: delimiter, token: token, max: max, versions: versions, user_project: user_project, - match_glob: match_glob + match_glob: match_glob, + include_folders_as_prefixes: include_folders_as_prefixes File::List.from_gapi gapi, service, name, prefix, delimiter, max, versions, user_project: user_project, - match_glob: match_glob + match_glob: match_glob, + include_folders_as_prefixes: include_folders_as_prefixes end alias find_files files diff --git a/google-cloud-storage/lib/google/cloud/storage/file/list.rb b/google-cloud-storage/lib/google/cloud/storage/file/list.rb index 1d1f0ce30a16..d286a5b359dc 100644 --- a/google-cloud-storage/lib/google/cloud/storage/file/list.rb +++ b/google-cloud-storage/lib/google/cloud/storage/file/list.rb @@ -165,8 +165,8 @@ def all request_limit: nil, &block # Google::Apis::StorageV1::Objects object. def self.from_gapi gapi_list, service, bucket = nil, prefix = nil, delimiter = nil, max = nil, versions = nil, - user_project: nil, - match_glob: nil + user_project: nil, match_glob: nil, + include_folders_as_prefixes: nil files = new(Array(gapi_list.items).map do |gapi_object| File.from_gapi gapi_object, service, user_project: user_project end) @@ -180,6 +180,7 @@ def self.from_gapi gapi_list, service, bucket = nil, prefix = nil, files.instance_variable_set :@versions, versions files.instance_variable_set :@user_project, user_project files.instance_variable_set :@match_glob, match_glob + files.instance_variable_set :@include_folders_as_prefixes, include_folders_as_prefixes files end diff --git a/google-cloud-storage/lib/google/cloud/storage/service.rb b/google-cloud-storage/lib/google/cloud/storage/service.rb index 60a6d20777af..281230009248 100644 --- a/google-cloud-storage/lib/google/cloud/storage/service.rb +++ b/google-cloud-storage/lib/google/cloud/storage/service.rb @@ -363,7 +363,7 @@ def delete_notification bucket_name, notification_id, user_project: nil, options # Retrieves a list of files matching the criteria. def list_files bucket_name, delimiter: nil, max: nil, token: nil, prefix: nil, versions: nil, user_project: nil, - match_glob: nil, + match_glob: nil, include_folders_as_prefixes: nil, options: {} execute do service.list_objects \ @@ -372,6 +372,7 @@ def list_files bucket_name, delimiter: nil, max: nil, token: nil, versions: versions, user_project: user_project(user_project), match_glob: match_glob, + include_folders_as_prefixes: include_folders_as_prefixes, options: options end end diff --git a/google-cloud-storage/test/google/cloud/storage/bucket_test.rb b/google-cloud-storage/test/google/cloud/storage/bucket_test.rb index c27e66757461..bc46a46d2bd1 100644 --- a/google-cloud-storage/test/google/cloud/storage/bucket_test.rb +++ b/google-cloud-storage/test/google/cloud/storage/bucket_test.rb @@ -639,7 +639,7 @@ mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(num_files), - [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket.service.mocked_service = mock @@ -659,7 +659,7 @@ mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(num_files), - [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket.service.mocked_service = mock @@ -677,7 +677,7 @@ it "lists files with prefix set" do mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(3, nil, ["/prefix/path1/", "/prefix/path2/"]), - [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: "/prefix/", versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: "/prefix/", versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket.service.mocked_service = mock @@ -698,7 +698,7 @@ it "lists files with delimiter set" do mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(3, nil, ["/prefix/path1/", "/prefix/path2/"]), - [bucket.name], delimiter: "/", max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: "/", max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket.service.mocked_service = mock @@ -716,13 +716,35 @@ end end + it "lists files with folders as prefix set" do + mock = Minitest::Mock.new + mock.expect :list_objects, list_files_gapi(3, nil, ["/prefix/path1/", "/prefix/path2/"], include_folders_as_prefixes: true), + [bucket.name], delimiter: "/", max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} + + bucket.service.mocked_service = mock + + files = bucket.files delimiter: "/" + + mock.verify + + _(files.count).must_equal 3 + _(files.prefixes).must_be_kind_of Array + _(files.prefixes).wont_be :empty? + _(files.prefixes).must_include "/prefix/path1/" + _(files.prefixes).must_include "/prefix/path2/" + files.each do |file| + _(file).must_be_kind_of Google::Cloud::Storage::File + _(file.user_project).must_be :nil? + end + end + it "lists files with match_glob set" do mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(2), - [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: "/foo/**/bar/", options: {} - + [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: "/foo/**/bar/", include_folders_as_prefixes: nil, options: {} + bucket.service.mocked_service = mock - + files = bucket.files match_glob: "/foo/**/bar/" mock.verify @@ -738,7 +760,7 @@ it "lists files with max set" do mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(3, "next_page_token"), - [bucket.name], delimiter: nil, max_results: 3, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: 3, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket.service.mocked_service = mock @@ -758,7 +780,7 @@ it "lists files with versions set" do mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(3), - [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: true, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: true, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket.service.mocked_service = mock @@ -778,7 +800,7 @@ mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(num_files), - [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: "test", match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: "test", match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket_user_project.service.mocked_service = mock @@ -796,9 +818,9 @@ it "paginates files" do mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(3, "next_page_token"), - [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} mock.expect :list_objects, list_files_gapi(2), - [bucket.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket.service.mocked_service = mock @@ -826,9 +848,9 @@ it "paginates files with next? and next" do mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(3, "next_page_token"), - [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} mock.expect :list_objects, list_files_gapi(2), - [bucket.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket.service.mocked_service = mock @@ -855,9 +877,9 @@ it "paginates files with next? and next and prefix set" do mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(3, "next_page_token"), - [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: "/prefix/", versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: "/prefix/", versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} mock.expect :list_objects, list_files_gapi(2), - [bucket.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: "/prefix/", versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: "/prefix/", versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket.service.mocked_service = mock @@ -884,9 +906,9 @@ it "paginates files with next? and next and delimiter set" do mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(3, "next_page_token"), - [bucket.name], delimiter: "/", max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: "/", max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} mock.expect :list_objects, list_files_gapi(2), - [bucket.name], delimiter: "/", max_results: nil, page_token: "next_page_token", prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: "/", max_results: nil, page_token: "next_page_token", prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket.service.mocked_service = mock @@ -913,9 +935,9 @@ it "paginates files with next? and next and max set" do mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(3, "next_page_token"), - [bucket.name], delimiter: nil, max_results: 3, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: 3, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} mock.expect :list_objects, list_files_gapi(2), - [bucket.name], delimiter: nil, max_results: 3, page_token: "next_page_token", prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: 3, page_token: "next_page_token", prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket.service.mocked_service = mock @@ -942,9 +964,9 @@ it "paginates files with next? and next and versions set" do mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(3, "next_page_token"), - [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: true, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: true, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} mock.expect :list_objects, list_files_gapi(2), - [bucket.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: nil, versions: true, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: nil, versions: true, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket.service.mocked_service = mock @@ -971,9 +993,9 @@ it "paginates files with user_project set to true" do mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(3, "next_page_token"), - [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: "test", match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: "test", match_glob: nil, include_folders_as_prefixes: nil, options: {} mock.expect :list_objects, list_files_gapi(2), - [bucket.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: nil, versions: nil, user_project: "test", match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: nil, versions: nil, user_project: "test", match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket_user_project.service.mocked_service = mock @@ -1001,9 +1023,9 @@ it "paginates files with all" do mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(3, "next_page_token"), - [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} mock.expect :list_objects, list_files_gapi(2), - [bucket.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket.service.mocked_service = mock @@ -1021,9 +1043,9 @@ it "paginates files with all and prefix set" do mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(3, "next_page_token"), - [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: "/prefix/", versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: "/prefix/", versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} mock.expect :list_objects, list_files_gapi(2), - [bucket.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: "/prefix/", versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: "/prefix/", versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket.service.mocked_service = mock @@ -1041,9 +1063,9 @@ it "paginates files with all and delimiter set" do mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(3, "next_page_token"), - [bucket.name], delimiter: "/", max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: "/", max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} mock.expect :list_objects, list_files_gapi(2), - [bucket.name], delimiter: "/", max_results: nil, page_token: "next_page_token", prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: "/", max_results: nil, page_token: "next_page_token", prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket.service.mocked_service = mock @@ -1061,9 +1083,9 @@ it "paginates files with all and max set" do mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(3, "next_page_token"), - [bucket.name], delimiter: nil, max_results: 3, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: 3, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} mock.expect :list_objects, list_files_gapi(2), - [bucket.name], delimiter: nil, max_results: 3, page_token: "next_page_token", prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: 3, page_token: "next_page_token", prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket.service.mocked_service = mock @@ -1081,9 +1103,9 @@ it "paginates files with all and versions set" do mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(3, "next_page_token"), - [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: true, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: true, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} mock.expect :list_objects, list_files_gapi(2), - [bucket.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: nil, versions: true, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: nil, versions: true, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket.service.mocked_service = mock @@ -1101,9 +1123,9 @@ it "paginates files with all using Enumerator" do mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(3, "next_page_token"), - [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} mock.expect :list_objects, list_files_gapi(3, "second_page_token"), - [bucket.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket.service.mocked_service = mock @@ -1121,9 +1143,9 @@ it "paginates files with all and request_limit set" do mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(3, "next_page_token"), - [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} mock.expect :list_objects, list_files_gapi(3, "second_page_token"), - [bucket.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket.service.mocked_service = mock @@ -1141,9 +1163,9 @@ it "paginates files with all and user_project set to true" do mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(3, "next_page_token"), - [bucket_user_project.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: "test", match_glob: nil, options: {} + [bucket_user_project.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: "test", match_glob: nil, include_folders_as_prefixes: nil, options: {} mock.expect :list_objects, list_files_gapi(3, "second_page_token"), - [bucket_user_project.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: nil, versions: nil, user_project: "test", match_glob: nil, options: {} + [bucket_user_project.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: nil, versions: nil, user_project: "test", match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket_user_project.service.mocked_service = mock @@ -1383,8 +1405,8 @@ def find_file_gapi bucket=nil, name = nil Google::Apis::StorageV1::Object.from_json random_file_hash(bucket, name).to_json end - def list_files_gapi count = 2, token = nil, prefixes = nil + def list_files_gapi count = 2, token = nil, prefixes = nil, include_folders_as_prefixes: nil files = count.times.map { Google::Apis::StorageV1::Object.from_json random_file_hash.to_json } - Google::Apis::StorageV1::Objects.new kind: "storage#objects", items: files, next_page_token: token, prefixes: prefixes + Google::Apis::StorageV1::Objects.new kind: "storage#objects", items: files, next_page_token: token, prefixes: prefixes, include_folders_as_prefixes: include_folders_as_prefixes end end diff --git a/google-cloud-storage/test/google/cloud/storage/file_test.rb b/google-cloud-storage/test/google/cloud/storage/file_test.rb index 27b05ea945ee..669cfef6f994 100644 --- a/google-cloud-storage/test/google/cloud/storage/file_test.rb +++ b/google-cloud-storage/test/google/cloud/storage/file_test.rb @@ -1489,7 +1489,7 @@ def file_user_project.sleep *args mock.expect :get_object, Google::Apis::StorageV1::Object.from_json(random_file_hash(bucket.name, file_name, generations[0]).to_json), [bucket.name, file_name], **get_object_args mock.expect :list_objects, Google::Apis::StorageV1::Objects.new(kind: "storage#objects", items: file_gapis), - [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: file_name, versions: true, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: file_name, versions: true, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket.service.mocked_service = mock file.service.mocked_service = mock @@ -1515,7 +1515,7 @@ def file_user_project.sleep *args mock.expect :get_object, Google::Apis::StorageV1::Object.from_json(random_file_hash(bucket_user_project.name, file_name, generations[0]).to_json), [bucket_user_project.name, file_name], **get_object_args(user_project: "test") mock.expect :list_objects, Google::Apis::StorageV1::Objects.new(kind: "storage#objects", items: file_gapis), - [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: file_name, versions: true, user_project: "test", match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: file_name, versions: true, user_project: "test", match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket_user_project.service.mocked_service = mock file.service.mocked_service = mock diff --git a/google-cloud-storage/test/google/cloud/storage/lazy/bucket_test.rb b/google-cloud-storage/test/google/cloud/storage/lazy/bucket_test.rb index 2ed94d34c9ae..746400339608 100644 --- a/google-cloud-storage/test/google/cloud/storage/lazy/bucket_test.rb +++ b/google-cloud-storage/test/google/cloud/storage/lazy/bucket_test.rb @@ -369,7 +369,7 @@ mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(num_files), - [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket.service.mocked_service = mock @@ -389,7 +389,7 @@ mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(num_files), - [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket.service.mocked_service = mock files = bucket.find_files @@ -406,7 +406,7 @@ it "lists files with prefix set" do mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(3, nil, ["/prefix/path1/", "/prefix/path2/"]), - [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: "/prefix/", versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: "/prefix/", versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket.service.mocked_service = mock @@ -427,7 +427,7 @@ it "lists files with delimiter set" do mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(3, nil, ["/prefix/path1/", "/prefix/path2/"]), - [bucket.name], delimiter: "/", max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: "/", max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket.service.mocked_service = mock files = bucket.files delimiter: "/" @@ -447,10 +447,10 @@ it "lists files with match_glob set" do mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(2), - [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: "/foo/**/bar/", options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: "/foo/**/bar/", include_folders_as_prefixes: nil, options: {} bucket.service.mocked_service = mock - + files = bucket.files match_glob: "/foo/**/bar/" mock.verify @@ -466,7 +466,7 @@ it "lists files with max set" do mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(3, "next_page_token"), - [bucket.name], delimiter: nil, max_results: 3, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: 3, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket.service.mocked_service = mock @@ -486,7 +486,7 @@ it "lists files with versions set" do mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(3), - [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: true, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: true, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket.service.mocked_service = mock @@ -506,7 +506,7 @@ mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(num_files), - [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: "test", match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: "test", match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket_user_project.service.mocked_service = mock @@ -524,9 +524,9 @@ it "paginates files" do mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(3, "next_page_token"), - [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} mock.expect :list_objects, list_files_gapi(2), - [bucket.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket.service.mocked_service = mock @@ -554,9 +554,9 @@ it "paginates files with next? and next" do mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(3, "next_page_token"), - [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} mock.expect :list_objects, list_files_gapi(2), - [bucket.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket.service.mocked_service = mock first_files = bucket.files @@ -582,9 +582,9 @@ it "paginates files with next? and next and prefix set" do mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(3, "next_page_token"), - [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: "/prefix/", versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: "/prefix/", versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} mock.expect :list_objects, list_files_gapi(2), - [bucket.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: "/prefix/", versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: "/prefix/", versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket.service.mocked_service = mock @@ -611,9 +611,9 @@ it "paginates files with next? and next and delimiter set" do mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(3, "next_page_token"), - [bucket.name], delimiter: "/", max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: "/", max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} mock.expect :list_objects, list_files_gapi(2), - [bucket.name], delimiter: "/", max_results: nil, page_token: "next_page_token", prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: "/", max_results: nil, page_token: "next_page_token", prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket.service.mocked_service = mock @@ -640,9 +640,9 @@ it "paginates files with next? and next and max set" do mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(3, "next_page_token"), - [bucket.name], delimiter: nil, max_results: 3, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: 3, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} mock.expect :list_objects, list_files_gapi(2), - [bucket.name], delimiter: nil, max_results: 3, page_token: "next_page_token", prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: 3, page_token: "next_page_token", prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket.service.mocked_service = mock first_files = bucket.files max: 3 @@ -668,9 +668,9 @@ it "paginates files with next? and next and versions set" do mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(3, "next_page_token"), - [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: true, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: true, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} mock.expect :list_objects, list_files_gapi(2), - [bucket.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: nil, versions: true, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: nil, versions: true, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket.service.mocked_service = mock @@ -697,9 +697,9 @@ it "paginates files with user_project set to true" do mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(3, "next_page_token"), - [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: "test", match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: "test", match_glob: nil, include_folders_as_prefixes: nil, options: {} mock.expect :list_objects, list_files_gapi(2), - [bucket.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: nil, versions: nil, user_project: "test", match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: nil, versions: nil, user_project: "test", match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket_user_project.service.mocked_service = mock @@ -727,9 +727,9 @@ it "paginates files with all" do mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(3, "next_page_token"), - [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} mock.expect :list_objects, list_files_gapi(2), - [bucket.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket.service.mocked_service = mock files = bucket.files.all.to_a @@ -746,9 +746,9 @@ it "paginates files with all and prefix set" do mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(3, "next_page_token"), - [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: "/prefix/", versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: "/prefix/", versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} mock.expect :list_objects, list_files_gapi(2), - [bucket.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: "/prefix/", versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: "/prefix/", versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket.service.mocked_service = mock @@ -766,9 +766,9 @@ it "paginates files with all and delimiter set" do mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(3, "next_page_token"), - [bucket.name], delimiter: "/", max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: "/", max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} mock.expect :list_objects, list_files_gapi(2), - [bucket.name], delimiter: "/", max_results: nil, page_token: "next_page_token", prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: "/", max_results: nil, page_token: "next_page_token", prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket.service.mocked_service = mock @@ -786,9 +786,9 @@ it "paginates files with all and max set" do mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(3, "next_page_token"), - [bucket.name], delimiter: nil, max_results: 3, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: 3, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} mock.expect :list_objects, list_files_gapi(2), - [bucket.name], delimiter: nil, max_results: 3, page_token: "next_page_token", prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: 3, page_token: "next_page_token", prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket.service.mocked_service = mock @@ -806,9 +806,9 @@ it "paginates files with all and versions set" do mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(3, "next_page_token"), - [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: true, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: true, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} mock.expect :list_objects, list_files_gapi(2), - [bucket.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: nil, versions: true, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: nil, versions: true, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket.service.mocked_service = mock @@ -826,9 +826,9 @@ it "paginates files with all using Enumerator" do mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(3, "next_page_token"), - [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} mock.expect :list_objects, list_files_gapi(3, "second_page_token"), - [bucket.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket.service.mocked_service = mock @@ -846,9 +846,9 @@ it "paginates files with all and request_limit set" do mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(3, "next_page_token"), - [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} mock.expect :list_objects, list_files_gapi(3, "second_page_token"), - [bucket.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket.service.mocked_service = mock @@ -866,9 +866,9 @@ it "paginates files with all and user_project set to true" do mock = Minitest::Mock.new mock.expect :list_objects, list_files_gapi(3, "next_page_token"), - [bucket_user_project.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: "test", match_glob: nil, options: {} + [bucket_user_project.name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: "test", match_glob: nil, include_folders_as_prefixes: nil, options: {} mock.expect :list_objects, list_files_gapi(3, "second_page_token"), - [bucket_user_project.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: nil, versions: nil, user_project: "test", match_glob: nil, options: {} + [bucket_user_project.name], delimiter: nil, max_results: nil, page_token: "next_page_token", prefix: nil, versions: nil, user_project: "test", match_glob: nil, include_folders_as_prefixes: nil, options: {} bucket_user_project.service.mocked_service = mock diff --git a/google-cloud-storage/test/google/cloud/storage/project_anonymous_test.rb b/google-cloud-storage/test/google/cloud/storage/project_anonymous_test.rb index cd0ac5410abe..34d4714c46b4 100644 --- a/google-cloud-storage/test/google/cloud/storage/project_anonymous_test.rb +++ b/google-cloud-storage/test/google/cloud/storage/project_anonymous_test.rb @@ -63,7 +63,7 @@ def stub.list_buckets *args mock = Minitest::Mock.new mock.expect :get_bucket, find_bucket_gapi(bucket_name), [bucket_name], **get_bucket_args mock.expect :list_objects, list_files_gapi(num_files), - [bucket_name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, options: {} + [bucket_name], delimiter: nil, max_results: nil, page_token: nil, prefix: nil, versions: nil, user_project: nil, match_glob: nil, include_folders_as_prefixes: nil, options: {} anonymous_storage.service.mocked_service = mock bucket = anonymous_storage.bucket bucket_name