gapic-generator 0.4.2 → 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +33 -0
  3. data/gem_templates/dockerfile.erb +1 -1
  4. data/gem_templates/entrypoint.erb +1 -0
  5. data/lib/gapic/file_formatter.rb +0 -1
  6. data/lib/gapic/generator/version.rb +1 -1
  7. data/lib/gapic/generators/default_generator.rb +16 -14
  8. data/lib/gapic/{path_template.rb → path_pattern.rb} +9 -8
  9. data/lib/gapic/path_pattern/parser.rb +146 -0
  10. data/lib/gapic/path_pattern/pattern.rb +80 -0
  11. data/lib/gapic/path_pattern/segment.rb +276 -0
  12. data/lib/gapic/presenters/field_presenter.rb +12 -0
  13. data/lib/gapic/presenters/gem_presenter.rb +39 -3
  14. data/lib/gapic/presenters/method_presenter.rb +10 -5
  15. data/lib/gapic/presenters/package_presenter.rb +4 -3
  16. data/lib/gapic/presenters/resource_presenter.rb +48 -36
  17. data/lib/gapic/presenters/service_presenter.rb +18 -12
  18. data/lib/gapic/runner.rb +3 -1
  19. data/lib/gapic/schema/api.rb +7 -0
  20. data/lib/gapic/schema/wrappers.rb +24 -20
  21. data/lib/gapic/uri_template.rb +36 -0
  22. data/lib/gapic/uri_template/parser.rb +50 -0
  23. data/lib/google/protobuf/compiler/plugin.pb.rb +5 -1
  24. data/lib/google/protobuf/descriptor.pb.rb +1 -0
  25. data/templates/default/gem/gemspec.erb +7 -6
  26. data/templates/default/gem/rakefile.erb +1 -0
  27. data/templates/default/gem/test_helper.erb +8 -0
  28. data/templates/default/lib/_service.erb +2 -0
  29. data/templates/default/service/client/_client.erb +4 -1
  30. data/templates/default/service/client/_config.erb +15 -11
  31. data/templates/default/service/client/_operations.erb +2 -0
  32. data/templates/default/service/client/resource/_doc.erb +1 -1
  33. data/templates/default/service/client/resource/_multi.erb +2 -5
  34. data/templates/default/service/client/resource/_single.erb +1 -2
  35. data/templates/default/service/test/_resource.erb +16 -0
  36. data/templates/default/service/test/client.erb +2 -5
  37. data/templates/default/service/test/client_operations.erb +2 -5
  38. data/templates/default/service/test/client_paths.erb +15 -0
  39. data/templates/default/service/test/method/_bidi.erb +6 -0
  40. data/templates/default/service/test/method/_client.erb +6 -0
  41. data/templates/default/service/test/method/_normal.erb +6 -0
  42. data/templates/default/service/test/method/_server.erb +6 -0
  43. metadata +13 -7
  44. data/lib/gapic/path_template/parser.rb +0 -83
  45. data/lib/gapic/path_template/segment.rb +0 -67
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2020 Google LLC
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # https://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ require "gapic/uri_template/parser"
18
+
19
+ module Gapic
20
+ # TODO: Enter docs
21
+ # Dooooooooocs!!!
22
+ module UriTemplate
23
+ # Parse arguments from a URI template.
24
+ # @see https://tools.ietf.org/html/rfc6570 URI Template
25
+ #
26
+ # used to satisfy AIP-4222 Routing headers
27
+ # @see https://google.aip.dev/client-libraries/4222
28
+ #
29
+ # @param uri_template [String] The URI template to be parsed.
30
+ #
31
+ # @return [Array<String>] The arguments of the URI template.
32
+ def self.parse_arguments uri_template
33
+ Parser.parse_arguments uri_template
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2020 Google LLC
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # https://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ module Gapic
18
+ module UriTemplate
19
+ # A URI template parser.
20
+ # see https://tools.ietf.org/html/rfc6570 URI Template
21
+ #
22
+ # @!attribute [r] path_pattern
23
+ # @return [String] The path pattern to be parsed.
24
+ # @!attribute [r] segments
25
+ # @return [Array<Segment|String>] The segments of the parsed path pattern.
26
+ module Parser
27
+ # @private
28
+ # /((?<positional>\*\*?)|{(?<name>[^\/]+?)(?:=(?<template>.+?))?})/
29
+ URI_TEMPLATE = %r{
30
+ (
31
+ (?<positional>\*\*?)
32
+ |
33
+ {(?<name>[^\/]+?)(?:=(?<template>.+?))?}
34
+ )
35
+ }x.freeze
36
+
37
+ def self.parse_arguments uri_template
38
+ arguments = []
39
+
40
+ while (match = URI_TEMPLATE.match uri_template)
41
+ # The String before the match needs to be added to the segments
42
+ arguments << match[:name] if match[:name]
43
+ uri_template = match.post_match
44
+ end
45
+
46
+ arguments
47
+ end
48
+ end
49
+ end
50
+ end
@@ -1,7 +1,8 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  ##
4
- # This file is auto-generated. DO NOT EDIT!
4
+ # This file was auto-generated initially but now is hand-edited to add support
5
+ # for response features and proto3_optional
5
6
  #
6
7
  require 'protobuf'
7
8
 
@@ -54,6 +55,8 @@ module Google
54
55
  end
55
56
 
56
57
  class CodeGeneratorResponse
58
+ FEATURE_PROTO3_OPTIONAL = 1
59
+
57
60
  class File
58
61
  optional :string, :name, 1
59
62
  optional :string, :insertion_point, 2
@@ -61,6 +64,7 @@ module Google
61
64
  end
62
65
 
63
66
  optional :string, :error, 1
67
+ optional :int32, :supported_features, 2
64
68
  repeated ::Google::Protobuf::Compiler::CodeGeneratorResponse::File, :file, 15
65
69
  end
66
70
 
@@ -190,6 +190,7 @@ module Google
190
190
  optional :int32, :oneof_index, 9
191
191
  optional :string, :json_name, 10
192
192
  optional ::Google::Protobuf::FieldOptions, :options, 8
193
+ optional :bool, :proto3_optional, 17
193
194
  end
194
195
 
195
196
  class OneofDescriptorProto
@@ -12,24 +12,25 @@ Gem::Specification.new do |gem|
12
12
  gem.description = <%= gem.description.inspect %>
13
13
  gem.summary = <%= gem.summary.inspect %>
14
14
  gem.homepage = <%= gem.homepage.inspect %>
15
- gem.license = "MIT"
15
+ gem.license = <%= gem.license_name.inspect %>
16
16
 
17
17
  gem.platform = Gem::Platform::RUBY
18
18
 
19
19
  gem.files = `git ls-files -- lib/*`.split("\n") +
20
20
  `git ls-files -- proto_docs/*`.split("\n") +
21
- ["README.md", "LICENSE.md", ".yardopts"]
21
+ <%= gem.extra_files.inspect %>
22
22
  gem.require_paths = ["lib"]
23
23
 
24
24
  gem.required_ruby_version = ">= 2.4"
25
25
 
26
- gem.add_dependency "gapic-common", "~> 0.2"
27
- <%- if gem.iam_dependency? -%>
28
- gem.add_dependency "grpc-google-iam-v1", ">= 0.6.10", "< 2.0"
26
+ <%- gem.dependency_list.each do |name, requirements| -%>
27
+ gem.add_dependency <%= name.inspect %>, <%= requirements.map { |v| v.inspect }.join ", " %>
29
28
  <%- end -%>
30
29
 
31
30
  gem.add_development_dependency "google-style", "~> 1.24.0"
32
- gem.add_development_dependency "minitest", "~> 5.10"
31
+ gem.add_development_dependency "minitest", "~> 5.14"
32
+ gem.add_development_dependency "minitest-focus", "~> 1.1"
33
+ gem.add_development_dependency "minitest-rg", "~> 5.2"
33
34
  gem.add_development_dependency "rake", ">= 12.0"
34
35
  gem.add_development_dependency "redcarpet", "~> 3.0"
35
36
  gem.add_development_dependency "simplecov", "~> 0.18"
@@ -10,6 +10,7 @@ RuboCop::RakeTask.new
10
10
  require "rake/testtask"
11
11
  desc "Run tests."
12
12
  Rake::TestTask.new do |t|
13
+ t.libs << "test"
13
14
  t.test_files = FileList["test/**/*_test.rb"]
14
15
  t.warning = false
15
16
  end
@@ -0,0 +1,8 @@
1
+ <%- assert_locals gem -%>
2
+ <%= render partial: "shared/header" -%>
3
+
4
+ require "simplecov"
5
+
6
+ require "minitest/autorun"
7
+ require "minitest/focus"
8
+ require "minitest/rg"
@@ -6,7 +6,9 @@ require "gapic/config/method"
6
6
 
7
7
  require "<%= service.gem.version_require %>"
8
8
 
9
+ <%- unless service.generic_endpoint? -%>
9
10
  require "<%= service.credentials_require %>"
11
+ <%- end -%>
10
12
  <%- if service.paths? -%>
11
13
  require "<%= service.paths_require %>"
12
14
  <%- end -%>
@@ -96,11 +96,14 @@ class <%= service.client_name %>
96
96
 
97
97
  # Create credentials
98
98
  credentials = @config.credentials
99
+ <%- unless service.generic_endpoint? -%>
99
100
  credentials ||= Credentials.default scope: @config.scope
100
101
  if credentials.is_a?(String) || credentials.is_a?(Hash)
101
102
  credentials = Credentials.new credentials, scope: @config.scope
102
103
  end
103
- @quota_project_id = credentials.respond_to?(:quota_project_id) ? credentials.quota_project_id : nil
104
+ <%- end -%>
105
+ @quota_project_id = @config.quota_project
106
+ @quota_project_id ||= credentials.quota_project_id if credentials.respond_to? :quota_project_id
104
107
 
105
108
  <%- if service.lro? -%>
106
109
  <%= service.lro_client_ivar %> = <%= service.operations_name %>.new do |config|
@@ -78,24 +78,28 @@
78
78
  # * `:retry_codes` (*type:* `Array<String>`) - The error codes that should
79
79
  # trigger a retry.
80
80
  # @return [::Hash]
81
+ # @!attribute [rw] quota_project
82
+ # A separate project against which to charge quota.
83
+ # @return [::String]
81
84
  #
82
85
  class Configuration
83
86
  extend ::Gapic::Config
84
87
 
85
- config_attr :endpoint, <%= service.client_endpoint.inspect %>, String
86
- config_attr :credentials, nil do |value|
88
+ config_attr :endpoint, <%= service.client_endpoint.inspect %>, ::String
89
+ config_attr :credentials, nil do |value|
87
90
  allowed = [::String, ::Hash, ::Proc, ::Google::Auth::Credentials, ::Signet::OAuth2::Client, nil]
88
91
  allowed += [::GRPC::Core::Channel, ::GRPC::Core::ChannelCredentials] if defined? ::GRPC
89
92
  allowed.any? { |klass| klass === value }
90
93
  end
91
- config_attr :scope, nil, ::String, ::Array, nil
92
- config_attr :lib_name, nil, ::String, nil
93
- config_attr :lib_version, nil, ::String, nil
94
- config_attr(:channel_args, <%= service.config_channel_args.inspect %>, ::Hash, nil)
95
- config_attr :interceptors, nil, ::Array, nil
96
- config_attr :timeout, nil, ::Numeric, nil
97
- config_attr :metadata, nil, ::Hash, nil
98
- config_attr :retry_policy, nil, ::Hash, Proc, nil
94
+ config_attr :scope, nil, ::String, ::Array, nil
95
+ config_attr :lib_name, nil, ::String, nil
96
+ config_attr :lib_version, nil, ::String, nil
97
+ config_attr(:channel_args, <%= service.config_channel_args.inspect %>, ::Hash, nil)
98
+ config_attr :interceptors, nil, ::Array, nil
99
+ config_attr :timeout, nil, ::Numeric, nil
100
+ config_attr :metadata, nil, ::Hash, nil
101
+ config_attr :retry_policy, nil, ::Hash, ::Proc, nil
102
+ config_attr :quota_project, nil, ::String, nil
99
103
 
100
104
  # @private
101
105
  def initialize parent_config = nil
@@ -111,7 +115,7 @@ class Configuration
111
115
  def rpcs
112
116
  @rpcs ||= begin
113
117
  parent_rpcs = nil
114
- parent_rpcs = @parent_config.rpcs if @parent_config&.respond_to? :rpcs
118
+ parent_rpcs = @parent_config.rpcs if defined?(@parent_config) && @parent_config&.respond_to?(:rpcs)
115
119
  Rpcs.new parent_rpcs
116
120
  end
117
121
  end
@@ -64,6 +64,8 @@ class <%= service.operations_name %>
64
64
  if credentials.is_a?(String) || credentials.is_a?(Hash)
65
65
  credentials = Credentials.new credentials, scope: @config.scope
66
66
  end
67
+ @quota_project_id = @config.quota_project
68
+ @quota_project_id ||= credentials.quota_project_id if credentials.respond_to? :quota_project_id
67
69
 
68
70
  @<%= service.lro_service.stub_name %> = ::Gapic::ServiceStub.new(
69
71
  <%= service.lro_service.proto_service_stub_name_full %>,
@@ -1,7 +1,7 @@
1
1
  <%- assert_locals pattern -%>
2
2
  The resource will be in the following format:
3
3
 
4
- `<%= pattern.template %>`
4
+ `<%= pattern.pattern %>`
5
5
 
6
6
  <%- pattern.arguments.each do |arg| -%>
7
7
  @param <%= arg %> [String]
@@ -3,8 +3,7 @@
3
3
  # Create a fully-qualified <%= resource.name %> resource string.
4
4
  #
5
5
  <%- resource.patterns.each do |pattern| -%>
6
- <%- args_doc_sig = pattern.arguments.map { |arg| "#{arg}:" }.join ", " -%>
7
- # @overload <%= resource.path_helper %>(<%= args_doc_sig %>)
6
+ # @overload <%= resource.path_helper %>(<%= pattern.formal_arguments %>)
8
7
  <%= indent render(partial: "service/client/resource/doc", locals: { pattern: pattern }), "# " %>
9
8
  #
10
9
  <%- end -%>
@@ -14,9 +13,7 @@ def <%= resource.path_helper %> **args
14
13
  <%- last_pattern_index = resource.patterns.count - 1 -%>
15
14
  <%- resource.patterns.each_with_index do |pattern, index| -%>
16
15
  <%- comma = last_pattern_index == index ? "" : "," -%>
17
- <%- args_key = pattern.arguments.sort.join(":").inspect -%>
18
- <%- args_sig = pattern.arguments.map { |arg| "#{arg}:" }.join ", " -%>
19
- <%= args_key %> => (proc do |<%= args_sig %>|
16
+ <%= pattern.arguments_key.inspect %> => (proc do |<%= pattern.formal_arguments %>|
20
17
  <%= indent render(partial: "service/client/resource/def", locals: { pattern: pattern }), 6 %>
21
18
  end)<%= comma %>
22
19
  <%- end -%>
@@ -5,7 +5,6 @@
5
5
  <%= indent render(partial: "service/client/resource/doc", locals: { pattern: resource.patterns.first }), "# " %>
6
6
  #
7
7
  # @return [::String]
8
- <%- args = resource.patterns.first.arguments.map { |arg| "#{arg}:" }.join ", " -%>
9
- def <%= resource.path_helper %> <%= args %>
8
+ def <%= resource.path_helper %> <%= resource.patterns.first.formal_arguments %>
10
9
  <%= indent render(partial: "service/client/resource/def", locals: { pattern: resource.patterns.first }), 2 %>
11
10
  end
@@ -0,0 +1,16 @@
1
+ <%- assert_locals resource -%>
2
+ <%- assert_locals service -%>
3
+ <%- full_client_name = defined?(client_name_full) ? client_name_full : service.client_name_full -%>
4
+ def test_<%= resource.path_helper%>
5
+ grpc_channel = ::GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure
6
+ ::Gapic::ServiceStub.stub :new, nil do
7
+ client = <%= full_client_name %>.new do |config|
8
+ config.credentials = grpc_channel
9
+ end
10
+ <%- resource.patterns.each do |pattern| -%>
11
+
12
+ path = client.<%= resource.path_helper%> <%= pattern.arguments_with_dummy_values %>
13
+ assert_equal <%= pattern.expected_path_for_dummy_values.inspect %>, path
14
+ <%- end -%>
15
+ end
16
+ end
@@ -1,9 +1,6 @@
1
1
  <%- assert_locals service -%>
2
- # frozen_string_literal: true
3
-
4
- <%= render partial: "shared/license" %>
5
- require "simplecov"
6
- require "minitest/autorun"
2
+ <%= render partial: "shared/header" %>
3
+ require "helper"
7
4
 
8
5
  require "gapic/grpc/service_stub"
9
6
 
@@ -1,9 +1,6 @@
1
1
  <%- assert_locals service -%>
2
- # frozen_string_literal: true
3
-
4
- <%= render partial: "shared/license" %>
5
- require "simplecov"
6
- require "minitest/autorun"
2
+ <%= render partial: "shared/header" %>
3
+ require "helper"
7
4
 
8
5
  require "gapic/grpc/service_stub"
9
6
 
@@ -0,0 +1,15 @@
1
+ <%- assert_locals service -%>
2
+ <%= render partial: "shared/header" %>
3
+ require "helper"
4
+
5
+ require "gapic/grpc/service_stub"
6
+
7
+ require "<%= service.service_require %>"
8
+
9
+ class <%= service.client_name_full %>PathsTest < Minitest::Test
10
+ <%- service.references.each do |resource| -%>
11
+ <%= indent render(partial: "service/test/resource",
12
+ locals: { resource: resource, service: service }), 2 %>
13
+
14
+ <%- end %>
15
+ end
@@ -93,6 +93,12 @@ def test_<%= method.name %>
93
93
  <%- else -%>
94
94
  assert_equal <%= field.default_value %>, r.<%= field.name %>
95
95
  <%- end -%>
96
+ <%- if field.oneof? && !field.proto3_optional? -%>
97
+ assert_equal :<%= field.name %>, r.<%= field.oneof_name %>
98
+ <%- end -%>
99
+ <%- if field.proto3_optional? -%>
100
+ assert r.has_<%= field.name %>?
101
+ <%- end -%>
96
102
  <%- end -%>
97
103
  end
98
104
  end
@@ -77,6 +77,12 @@ def test_<%= method.name %>
77
77
  <%- else -%>
78
78
  assert_equal <%= field.default_value %>, r.<%= field.name %>
79
79
  <%- end -%>
80
+ <%- if field.oneof? && !field.proto3_optional? -%>
81
+ assert_equal :<%= field.name %>, r.<%= field.oneof_name %>
82
+ <%- end -%>
83
+ <%- if field.proto3_optional? -%>
84
+ assert r.has_<%= field.name %>?
85
+ <%- end -%>
80
86
  <%- end -%>
81
87
  end
82
88
  end
@@ -26,6 +26,12 @@ def test_<%= method.name %>
26
26
  <%- else -%>
27
27
  assert_equal <%= field.default_value %>, request.<%= field.name %>
28
28
  <%- end -%>
29
+ <%- if field.oneof? && !field.proto3_optional? -%>
30
+ assert_equal :<%= field.name %>, request.<%= field.oneof_name %>
31
+ <%- end -%>
32
+ <%- if field.proto3_optional? -%>
33
+ assert request.has_<%= field.name %>?
34
+ <%- end -%>
29
35
  <%- end -%>
30
36
  refute_nil options
31
37
  end
@@ -24,6 +24,12 @@ def test_<%= method.name %>
24
24
  <%- else -%>
25
25
  assert_equal <%= field.default_value %>, request.<%= field.name %>
26
26
  <%- end -%>
27
+ <%- if field.oneof? && !field.proto3_optional? -%>
28
+ assert_equal :<%= field.name %>, request.<%= field.oneof_name %>
29
+ <%- end -%>
30
+ <%- if field.proto3_optional? -%>
31
+ assert request.has_<%= field.name %>?
32
+ <%- end -%>
27
33
  <%- end -%>
28
34
  refute_nil options
29
35
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gapic-generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ernest Landrito
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2020-04-29 00:00:00.000000000 Z
13
+ date: 2020-06-19 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: actionpack
@@ -74,14 +74,14 @@ dependencies:
74
74
  requirements:
75
75
  - - "~>"
76
76
  - !ruby/object:Gem::Version
77
- version: '1.19'
77
+ version: 1.30.0.pre1
78
78
  type: :development
79
79
  prerelease: false
80
80
  version_requirements: !ruby/object:Gem::Requirement
81
81
  requirements:
82
82
  - - "~>"
83
83
  - !ruby/object:Gem::Version
84
- version: '1.19'
84
+ version: 1.30.0.pre1
85
85
  - !ruby/object:Gem::Dependency
86
86
  name: minitest
87
87
  requirement: !ruby/object:Gem::Requirement
@@ -217,9 +217,10 @@ files:
217
217
  - lib/gapic/grpc_service_config/service_config.rb
218
218
  - lib/gapic/helpers/filepath_helper.rb
219
219
  - lib/gapic/helpers/namespace_helper.rb
220
- - lib/gapic/path_template.rb
221
- - lib/gapic/path_template/parser.rb
222
- - lib/gapic/path_template/segment.rb
220
+ - lib/gapic/path_pattern.rb
221
+ - lib/gapic/path_pattern/parser.rb
222
+ - lib/gapic/path_pattern/pattern.rb
223
+ - lib/gapic/path_pattern/segment.rb
223
224
  - lib/gapic/presenters.rb
224
225
  - lib/gapic/presenters/enum_presenter.rb
225
226
  - lib/gapic/presenters/enum_value_presenter.rb
@@ -239,6 +240,8 @@ files:
239
240
  - lib/gapic/schema/api.rb
240
241
  - lib/gapic/schema/loader.rb
241
242
  - lib/gapic/schema/wrappers.rb
243
+ - lib/gapic/uri_template.rb
244
+ - lib/gapic/uri_template/parser.rb
242
245
  - lib/google/api/annotations.pb.rb
243
246
  - lib/google/api/client.pb.rb
244
247
  - lib/google/api/field_behavior.pb.rb
@@ -260,6 +263,7 @@ files:
260
263
  - templates/default/gem/rakefile.erb
261
264
  - templates/default/gem/readme.erb
262
265
  - templates/default/gem/rubocop.erb
266
+ - templates/default/gem/test_helper.erb
263
267
  - templates/default/gem/version.erb
264
268
  - templates/default/gem/yardopts.erb
265
269
  - templates/default/helpers/default_helper.rb
@@ -319,8 +323,10 @@ files:
319
323
  - templates/default/service/credentials.erb
320
324
  - templates/default/service/operations.erb
321
325
  - templates/default/service/paths.erb
326
+ - templates/default/service/test/_resource.erb
322
327
  - templates/default/service/test/client.erb
323
328
  - templates/default/service/test/client_operations.erb
329
+ - templates/default/service/test/client_paths.erb
324
330
  - templates/default/service/test/method/_assert_response.erb
325
331
  - templates/default/service/test/method/_bidi.erb
326
332
  - templates/default/service/test/method/_client.erb