Remove all autotools usage (#10132)
* Bazelfying conformance tests
Adding infrastructure to "Bazelify" languages other than Java and C++
* Delete benchmarks for languages supported by other repositories
* Bazelfying benchmark tests
* Bazelfying python
Use upb's system python rule instead of branching tensorflow
* Bazelfying Ruby
* Bazelfying C#
* Bazelfying Objective-c
* Bazelfying Kokoro mac builds
* Bazelfying Kokoro linux builds
* Deleting all deprecated files from autotools cleanup
This boils down to Makefile.am and tests.sh and all of their remaining references
* Cleanup after PR reorganizing
- Enable 32 bit tests
- Move conformance tests back
- Use select statements to select alternate runtimes
- Add internal prefixes to proto library macros
* Updating READMEs to use bazel instead of autotools.
* Bazelfying Kokoro release builds
* First round of review fixes
* Second round of review fixes
* Third round of review fixes
* Filtering out conformance tests from Bazel on Windows (b/241484899)
* Add version metadata that was previously scraped from configure.ac
* fixing typo from previous fix
* Adding ruby version tests
* Bumping pinned upb version, and adding tests to python CI
diff --git a/conformance/BUILD.bazel b/conformance/BUILD.bazel
index fef0366..0e7ad59 100644
--- a/conformance/BUILD.bazel
+++ b/conformance/BUILD.bazel
@@ -1,6 +1,9 @@
# Conformance testing for Protobuf.
-load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_proto_library")
+load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_proto_library", "objc_library")
+load("@rules_python//python:defs.bzl", "py_library")
+load("//:protobuf.bzl", "internal_py_proto_library", "internal_php_proto_library", "internal_csharp_proto_library", "internal_ruby_proto_library", "internal_objc_proto_library")
+load("//build_defs:internal_shell.bzl", "inline_sh_binary")
load(
"@rules_pkg//:mappings.bzl",
"pkg_attributes",
@@ -11,20 +14,37 @@
exports_files([
"conformance_test_runner.sh",
+ "failure_list_cpp.txt",
+ "failure_list_csharp.txt",
"failure_list_java.txt",
"failure_list_java_lite.txt",
+ "failure_list_objc.txt",
+ "failure_list_php.txt",
+ "failure_list_php_c.txt",
+ "failure_list_python.txt",
+ "failure_list_python_cpp.txt",
+ "failure_list_ruby.txt",
+ "failure_list_jruby.txt",
+ "text_format_failure_list_cpp.txt",
+ "text_format_failure_list_csharp.txt",
"text_format_failure_list_java.txt",
"text_format_failure_list_java_lite.txt",
+ "text_format_failure_list_php.txt",
+ "text_format_failure_list_php_c.txt",
+ "text_format_failure_list_python.txt",
+ "text_format_failure_list_python_cpp.txt",
+ "text_format_failure_list_ruby.txt",
+ "text_format_failure_list_jruby.txt",
])
cc_proto_library(
name = "test_messages_proto2_proto_cc",
- deps = ["//:test_messages_proto2_proto"],
+ deps = ["//src/google/protobuf:test_messages_proto2_proto"],
)
cc_proto_library(
name = "test_messages_proto3_proto_cc",
- deps = ["//:test_messages_proto3_proto"],
+ deps = ["//src/google/protobuf:test_messages_proto3_proto"],
)
proto_library(
@@ -34,10 +54,18 @@
)
cc_proto_library(
- name = "conformance_proto_cc",
+ name = "conformance_cc_proto",
deps = [":conformance_proto"],
)
+internal_csharp_proto_library(
+ name = "conformance_csharp_proto",
+ srcs = ["conformance.proto"],
+ visibility = [
+ "//csharp:__subpackages__",
+ ],
+)
+
java_proto_library(
name = "conformance_java_proto",
visibility = [
@@ -54,6 +82,51 @@
deps = [":conformance_proto"],
)
+internal_objc_proto_library(
+ name = "conformance_objc_proto",
+ srcs = ["conformance.proto"],
+ visibility = [
+ "//conformance:__pkg__",
+ "//objc:__pkg__",
+ ],
+)
+
+internal_py_proto_library(
+ name = "conformance_py_proto",
+ srcs = ["conformance.proto"],
+ visibility = [
+ "//python:__subpackages__",
+ ],
+ srcs_version = "PY2AND3",
+)
+
+internal_php_proto_library(
+ name = "conformance_php_proto",
+ srcs = ["conformance.proto"],
+ outs = [
+ "Conformance/ConformanceRequest.php",
+ "Conformance/ConformanceResponse.php",
+ "Conformance/FailureSet.php",
+ "Conformance/JspbEncodingConfig.php",
+ "Conformance/TestCategory.php",
+ "Conformance/WireFormat.php",
+ "GPBMetadata/Conformance.php",
+ ],
+ visibility = [
+ "//conformance:__pkg__",
+ "//php:__pkg__",
+ ],
+)
+
+internal_ruby_proto_library(
+ name = "conformance_ruby_proto",
+ srcs = ["conformance.proto"],
+ visibility = [
+ "//conformance:__pkg__",
+ "//ruby:__pkg__",
+ ],
+)
+
cc_library(
name = "jsoncpp",
srcs = ["third_party/jsoncpp/jsoncpp.cpp"],
@@ -71,7 +144,7 @@
"conformance_test.h",
],
includes = ["."],
- deps = [":conformance_proto_cc"],
+ deps = [":conformance_cc_proto"],
)
cc_library(
@@ -108,13 +181,23 @@
],
)
+cc_binary(
+ name = "conformance_cpp",
+ srcs = ["conformance_cpp.cc"],
+ deps = [
+ ":conformance_cc_proto",
+ "//:protobuf",
+ "//:test_messages_proto2_cc_proto",
+ "//:test_messages_proto3_cc_proto",
+ ],
+ testonly = 1,
+ visibility = ["//src:__subpackages__"],
+)
+
java_binary(
name = "conformance_java",
srcs = ["ConformanceJava.java"],
main_class = "ConformanceJava",
- visibility = [
- "//java:__subpackages__",
- ],
deps = [
":conformance_java_proto",
"//:protobuf_java",
@@ -122,11 +205,14 @@
"//:test_messages_proto2_java_proto",
"//:test_messages_proto3_java_proto",
],
+ testonly = 1,
+ visibility = [
+ "//java:__subpackages__",
+ ],
)
java_binary(
name = "conformance_java_lite",
- srcs = ["ConformanceJavaLite.java"],
main_class = "ConformanceJavaLite",
visibility = [
"//java:__subpackages__",
@@ -138,8 +224,116 @@
"//:test_messages_proto2_java_proto_lite",
"//:test_messages_proto3_java_proto_lite",
],
+ testonly = 1,
+ srcs = ["ConformanceJavaLite.java"],
)
+py_binary(
+ name = "conformance_python",
+ srcs = ["conformance_python.py"],
+ deps = [
+ ":conformance_py_proto",
+ "//:protobuf_python",
+ "//python:test_messages_proto2_py_proto",
+ "//python:test_messages_proto3_py_proto",
+ ],
+ imports = [".", "../python"],
+ srcs_version = "PY2AND3",
+ testonly = 1,
+ visibility = ["//python:__subpackages__"],
+)
+
+inline_sh_binary(
+ name = "conformance_php",
+ srcs = [
+ "conformance_php.php",
+ "autoload.php",
+ ],
+ deps = [
+ ":conformance_php_proto",
+ "//php:source_files",
+ "//:test_messages_proto3_php_proto",
+ ],
+ cmd = """
+ php -d include_path=conformance:src/google/protobuf \\
+ -d auto_prepend_file=$(rootpath autoload.php) \\
+ $(rootpath conformance_php.php)
+ """,
+ testonly = 1,
+ visibility = ["//php:__subpackages__"],
+)
+
+inline_sh_binary(
+ name = "conformance_php_c",
+ srcs = [
+ "conformance_php.php",
+ "//php:extension",
+ ],
+ deps = [
+ ":conformance_php_proto",
+ "//:test_messages_proto3_php_proto",
+ ],
+ cmd = """
+ php -dextension=$(rootpath //php:extension) \\
+ -d include_path=conformance:src/google/protobuf \\
+ $(rootpath conformance_php.php)
+ """,
+ testonly = 1,
+ visibility = ["//php:__subpackages__"],
+)
+
+inline_sh_binary(
+ name = "conformance_csharp",
+ srcs = ["//csharp/src/Google.Protobuf.Conformance:conformance_dll"],
+ deps = [
+ "//csharp/src/Google.Protobuf.Conformance:conformance_runfiles",
+ ],
+ cmd = "dotnet $(rootpath //csharp/src/Google.Protobuf.Conformance:conformance_dll)",
+ testonly = 1,
+ visibility = ["//csharp:__subpackages__"],
+)
+
+objc_library(
+ name = "conformance_objc_lib",
+ non_arc_srcs = ["conformance_objc.m"],
+ deps = [
+ ":conformance_objc_proto",
+ "//:test_messages_proto2_objc_proto",
+ "//:test_messages_proto3_objc_proto",
+ ],
+ testonly = 1,
+ # See https://github.com/bazelbuild/bazel/issues/12897.
+ tags = ["manual"],
+)
+
+cc_binary(
+ name = "conformance_objc",
+ deps = [":conformance_objc_lib"],
+ testonly = 1,
+ # See https://github.com/bazelbuild/bazel/issues/12897.
+ tags = ["manual"],
+ visibility = ["//objectivec:__subpackages__"],
+)
+
+inline_sh_binary(
+ name = "conformance_ruby",
+ srcs = ["conformance_ruby.rb"],
+ deps = [
+ ":conformance_ruby_proto",
+ "//:well_known_ruby_protos",
+ "//:test_messages_proto2_ruby_proto",
+ "//:test_messages_proto3_ruby_proto",
+ "//ruby:protobuf",
+ ],
+ cmd = "RUBYLIB=ruby/lib:conformance:src $(rootpath conformance_ruby.rb)",
+ testonly = 1,
+ visibility = ["//ruby:__subpackages__"],
+)
+
+################################################################################
+# Distribution files
+################################################################################
+
filegroup(
name = "all_files",
srcs = glob(["**/*"]),
@@ -156,7 +350,6 @@
# The following are not in autotools dist:
"autoload.php",
- "conformance_nodejs.js",
"failure_list_jruby.txt",
"update_failure_list.py",
],
diff --git a/conformance/Makefile.am b/conformance/Makefile.am
deleted file mode 100644
index 415412b..0000000
--- a/conformance/Makefile.am
+++ /dev/null
@@ -1,372 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-conformance_protoc_inputs = \
- conformance.proto \
- $(top_srcdir)/src/google/protobuf/test_messages_proto3.proto
-
-# proto2 input files, should be separated with proto3, as we
-# can't generate proto2 files for php.
-conformance_proto2_protoc_inputs = \
- $(top_srcdir)/src/google/protobuf/test_messages_proto2.proto
-
-well_known_type_protoc_inputs = \
- $(top_srcdir)/src/google/protobuf/any.proto \
- $(top_srcdir)/src/google/protobuf/duration.proto \
- $(top_srcdir)/src/google/protobuf/field_mask.proto \
- $(top_srcdir)/src/google/protobuf/struct.proto \
- $(top_srcdir)/src/google/protobuf/timestamp.proto \
- $(top_srcdir)/src/google/protobuf/wrappers.proto
-
-
-protoc_outputs = \
- conformance.pb.cc \
- conformance.pb.h
-
-other_language_protoc_outputs = \
- conformance_pb2.py \
- Conformance.pbobjc.h \
- Conformance.pbobjc.m \
- conformance_pb.js \
- conformance_pb.rb \
- com/google/protobuf/Any.java \
- com/google/protobuf/AnyOrBuilder.java \
- com/google/protobuf/AnyProto.java \
- com/google/protobuf/BoolValue.java \
- com/google/protobuf/BoolValueOrBuilder.java \
- com/google/protobuf/BytesValue.java \
- com/google/protobuf/BytesValueOrBuilder.java \
- com/google/protobuf/conformance/Conformance.java \
- com/google/protobuf/DoubleValue.java \
- com/google/protobuf/DoubleValueOrBuilder.java \
- com/google/protobuf/Duration.java \
- com/google/protobuf/DurationOrBuilder.java \
- com/google/protobuf/DurationProto.java \
- com/google/protobuf/FieldMask.java \
- com/google/protobuf/FieldMaskOrBuilder.java \
- com/google/protobuf/FieldMaskProto.java \
- com/google/protobuf/FloatValue.java \
- com/google/protobuf/FloatValueOrBuilder.java \
- com/google/protobuf/Int32Value.java \
- com/google/protobuf/Int32ValueOrBuilder.java \
- com/google/protobuf/Int64Value.java \
- com/google/protobuf/Int64ValueOrBuilder.java \
- com/google/protobuf/ListValue.java \
- com/google/protobuf/ListValueOrBuilder.java \
- com/google/protobuf/NullValue.java \
- com/google/protobuf/StringValue.java \
- com/google/protobuf/StringValueOrBuilder.java \
- com/google/protobuf/Struct.java \
- com/google/protobuf/StructOrBuilder.java \
- com/google/protobuf/StructProto.java \
- com/google/protobuf/Timestamp.java \
- com/google/protobuf/TimestampOrBuilder.java \
- com/google/protobuf/TimestampProto.java \
- com/google/protobuf/UInt32Value.java \
- com/google/protobuf/UInt32ValueOrBuilder.java \
- com/google/protobuf/UInt64Value.java \
- com/google/protobuf/UInt64ValueOrBuilder.java \
- com/google/protobuf/Value.java \
- com/google/protobuf/ValueOrBuilder.java \
- com/google/protobuf/WrappersProto.java \
- com/google/protobuf_test_messages/proto3/TestMessagesProto3.java \
- com/google/protobuf_test_messages/proto2/TestMessagesProto2.java \
- google/protobuf/any.pb.cc \
- google/protobuf/any.pb.h \
- google/protobuf/any.rb \
- google/protobuf/any_pb2.py \
- google/protobuf/duration.pb.cc \
- google/protobuf/duration.pb.h \
- google/protobuf/duration.rb \
- google/protobuf/duration_pb2.py \
- google/protobuf/field_mask.pb.cc \
- google/protobuf/field_mask.pb.h \
- google/protobuf/field_mask.rb \
- google/protobuf/field_mask_pb2.py \
- google/protobuf/struct.pb.cc \
- google/protobuf/struct.pb.h \
- google/protobuf/struct.rb \
- google/protobuf/struct_pb2.py \
- google/protobuf/TestMessagesProto2.pbobjc.h \
- google/protobuf/TestMessagesProto2.pbobjc.m \
- google/protobuf/TestMessagesProto3.pbobjc.h \
- google/protobuf/TestMessagesProto3.pbobjc.m \
- google/protobuf/test_messages_proto3.pb.cc \
- google/protobuf/test_messages_proto3.pb.h \
- google/protobuf/test_messages_proto2.pb.cc \
- google/protobuf/test_messages_proto2.pb.h \
- google/protobuf/test_messages_proto3_pb.rb \
- google/protobuf/test_messages_proto3_pb2.py \
- google/protobuf/test_messages_proto2_pb2.py \
- google/protobuf/timestamp.pb.cc \
- google/protobuf/timestamp.pb.h \
- google/protobuf/timestamp.rb \
- google/protobuf/timestamp_pb2.py \
- google/protobuf/wrappers.pb.cc \
- google/protobuf/wrappers.pb.h \
- google/protobuf/wrappers.rb \
- google/protobuf/wrappers_pb2.py \
- Conformance/ConformanceRequest.php \
- Conformance/ConformanceResponse.php \
- Conformance/FailureSet.php \
- Conformance/WireFormat.php \
- GPBMetadata/Conformance.php \
- GPBMetadata/Google/Protobuf/Any.php \
- GPBMetadata/Google/Protobuf/Duration.php \
- GPBMetadata/Google/Protobuf/FieldMask.php \
- GPBMetadata/Google/Protobuf/Struct.php \
- GPBMetadata/Google/Protobuf/TestMessagesProto3.php \
- GPBMetadata/Google/Protobuf/Timestamp.php \
- GPBMetadata/Google/Protobuf/Wrappers.php \
- Google/Protobuf/Any.php \
- Google/Protobuf/BoolValue.php \
- Google/Protobuf/BytesValue.php \
- Google/Protobuf/DoubleValue.php \
- Google/Protobuf/Duration.php \
- Google/Protobuf/FieldMask.php \
- Google/Protobuf/FloatValue.php \
- Google/Protobuf/Int32Value.php \
- Google/Protobuf/Int64Value.php \
- Google/Protobuf/ListValue.php \
- Google/Protobuf/NullValue.php \
- Google/Protobuf/StringValue.php \
- Google/Protobuf/Struct.php \
- Google/Protobuf/Timestamp.php \
- Google/Protobuf/UInt32Value.php \
- Google/Protobuf/UInt64Value.php \
- Google/Protobuf/Value.php \
- Protobuf_test_messages/Proto3/ForeignEnum.php \
- Protobuf_test_messages/Proto3/ForeignMessage.php \
- Protobuf_test_messages/Proto3/TestAllTypes_NestedEnum.php \
- Protobuf_test_messages/Proto3/TestAllTypes_NestedMessage.php \
- Protobuf_test_messages/Proto3/TestAllTypes.php
- # lite/com/google/protobuf/Any.java \
- # lite/com/google/protobuf/AnyOrBuilder.java \
- # lite/com/google/protobuf/AnyProto.java \
- # lite/com/google/protobuf/BoolValue.java \
- # lite/com/google/protobuf/BoolValueOrBuilder.java \
- # lite/com/google/protobuf/BytesValue.java \
- # lite/com/google/protobuf/BytesValueOrBuilder.java \
- # lite/com/google/protobuf/conformance/Conformance.java \
- # lite/com/google/protobuf/DoubleValue.java \
- # lite/com/google/protobuf/DoubleValueOrBuilder.java \
- # lite/com/google/protobuf/Duration.java \
- # lite/com/google/protobuf/DurationOrBuilder.java \
- # lite/com/google/protobuf/DurationProto.java \
- # lite/com/google/protobuf/FieldMask.java \
- # lite/com/google/protobuf/FieldMaskOrBuilder.java \
- # lite/com/google/protobuf/FieldMaskProto.java \
- # lite/com/google/protobuf/FloatValue.java \
- # lite/com/google/protobuf/FloatValueOrBuilder.java \
- # lite/com/google/protobuf/Int32Value.java \
- # lite/com/google/protobuf/Int32ValueOrBuilder.java \
- # lite/com/google/protobuf/Int64Value.java \
- # lite/com/google/protobuf/Int64ValueOrBuilder.java \
- # lite/com/google/protobuf/ListValue.java \
- # lite/com/google/protobuf/ListValueOrBuilder.java \
- # lite/com/google/protobuf/NullValue.java \
- # lite/com/google/protobuf/StringValue.java \
- # lite/com/google/protobuf/StringValueOrBuilder.java \
- # lite/com/google/protobuf/Struct.java \
- # lite/com/google/protobuf/StructOrBuilder.java \
- # lite/com/google/protobuf/StructProto.java \
- # lite/com/google/protobuf/Timestamp.java \
- # lite/com/google/protobuf/TimestampOrBuilder.java \
- # lite/com/google/protobuf/TimestampProto.java \
- # lite/com/google/protobuf/UInt32Value.java \
- # lite/com/google/protobuf/UInt32ValueOrBuilder.java \
- # lite/com/google/protobuf/UInt64Value.java \
- # lite/com/google/protobuf/UInt64ValueOrBuilder.java \
- # lite/com/google/protobuf/Value.java \
- # lite/com/google/protobuf/ValueOrBuilder.java \
- # lite/com/google/protobuf/WrappersProto.java
-
-bin_PROGRAMS = conformance-test-runner conformance-cpp
-
-# All source files excepet C++/Objective-C ones should be explicitly listed
-# here because the autoconf tools don't include files of other languages
-# automatically.
-EXTRA_DIST = \
- ConformanceJava.java \
- ConformanceJavaLite.java \
- README.md \
- conformance.proto \
- conformance_python.py \
- conformance_ruby.rb \
- conformance_php.php \
- failure_list_cpp.txt \
- failure_list_csharp.txt \
- failure_list_java.txt \
- failure_list_js.txt \
- failure_list_objc.txt \
- failure_list_python.txt \
- failure_list_python_cpp.txt \
- failure_list_python-post26.txt \
- failure_list_ruby.txt \
- failure_list_php.txt \
- failure_list_php_c.txt
-
-conformance_test_runner_LDADD = $(top_srcdir)/src/libprotobuf.la
-conformance_test_runner_SOURCES = conformance_test.h conformance_test.cc \
- conformance_test_main.cc \
- binary_json_conformance_suite.h \
- binary_json_conformance_suite.cc \
- text_format_conformance_suite.h \
- text_format_conformance_suite.cc \
- conformance_test_runner.cc \
- third_party/jsoncpp/json.h \
- third_party/jsoncpp/jsoncpp.cpp
-nodist_conformance_test_runner_SOURCES = conformance.pb.cc google/protobuf/test_messages_proto3.pb.cc google/protobuf/test_messages_proto2.pb.cc
-conformance_test_runner_CPPFLAGS = -I$(top_srcdir)/src -I$(srcdir)
-conformance_test_runner_CXXFLAGS = -std=c++11
-# Explicit deps because BUILT_SOURCES are only done before a "make all/check"
-# so a direct "make test_cpp" could fail if parallel enough.
-conformance_test_runner-conformance_test.$(OBJEXT): conformance.pb.h
-conformance_test_runner-conformance_test_runner.$(OBJEXT): conformance.pb.h
-
-conformance_cpp_LDADD = $(top_srcdir)/src/libprotobuf.la
-conformance_cpp_SOURCES = conformance_cpp.cc
-nodist_conformance_cpp_SOURCES = conformance.pb.cc google/protobuf/test_messages_proto3.pb.cc google/protobuf/test_messages_proto2.pb.cc
-conformance_cpp_CPPFLAGS = -I$(top_srcdir)/src
-# Explicit dep because BUILT_SOURCES are only done before a "make all/check"
-# so a direct "make test_cpp" could fail if parallel enough.
-conformance_cpp-conformance_cpp.$(OBJEXT): conformance.pb.h
-
-if OBJC_CONFORMANCE_TEST
-
-bin_PROGRAMS += conformance-objc
-
-conformance_objc_SOURCES = conformance_objc.m ../objectivec/GPBProtocolBuffers.m
-nodist_conformance_objc_SOURCES = Conformance.pbobjc.m google/protobuf/TestMessagesProto2.pbobjc.m google/protobuf/TestMessagesProto3.pbobjc.m
-# On travis, the build fails without the isysroot because whatever system
-# headers are being found don't include generics support for
-# NSArray/NSDictionary, the only guess is their image at one time had an odd
-# setup for Xcode and old frameworks are being found.
-conformance_objc_CPPFLAGS = -I$(top_srcdir)/objectivec -isysroot `xcrun --sdk macosx --show-sdk-path`
-conformance_objc_LDFLAGS = -framework Foundation
-# Explicit dep because BUILT_SOURCES are only done before a "make all/check"
-# so a direct "make test_objc" could fail if parallel enough.
-conformance_objc-conformance_objc.$(OBJEXT): Conformance.pbobjc.h google/protobuf/TestMessagesProto2.pbobjc.h google/protobuf/TestMessagesProto3.pbobjc.h
-
-endif
-
-# JavaScript well-known types are expected to be in a directory called
-# google-protobuf, because they are usually in the google-protobuf npm
-# package. But we want to use the sources from our tree, so we recreate
-# that directory structure here.
-google-protobuf:
- mkdir google-protobuf
-
-if USE_EXTERNAL_PROTOC
-
-# Some implementations include pre-generated versions of well-known types.
-protoc_middleman: $(conformance_protoc_inputs) $(conformance_proto2_protoc_inputs) $(well_known_type_protoc_inputs) google-protobuf
- $(PROTOC) -I$(srcdir) -I$(top_srcdir) --cpp_out=. --java_out=. --ruby_out=. --objc_out=. --python_out=. --php_out=. $(conformance_protoc_inputs)
- $(PROTOC) -I$(srcdir) -I$(top_srcdir) --cpp_out=. --java_out=. --ruby_out=. --objc_out=. --python_out=. $(conformance_proto2_protoc_inputs)
- $(PROTOC) -I$(srcdir) -I$(top_srcdir) --cpp_out=. --java_out=. --ruby_out=. --python_out=. $(well_known_type_protoc_inputs)
- ## $(PROTOC) -I$(srcdir) -I$(top_srcdir) --java_out=lite:lite $(conformance_protoc_inputs) $(well_known_type_protoc_inputs)
- touch protoc_middleman
-
-else
-
-# We have to cd to $(srcdir) before executing protoc because $(protoc_inputs) is
-# relative to srcdir, which may not be the same as the current directory when
-# building out-of-tree.
-protoc_middleman: $(top_srcdir)/src/protoc$(EXEEXT) $(conformance_protoc_inputs) $(conformance_proto2_protoc_inputs) $(well_known_type_protoc_inputs) google-protobuf
- oldpwd=`pwd` && ( cd $(srcdir) && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$(top_srcdir)/src --cpp_out=$$oldpwd --java_out=$$oldpwd --ruby_out=$$oldpwd --objc_out=$$oldpwd --python_out=$$oldpwd --php_out=$$oldpwd $(conformance_protoc_inputs) )
- oldpwd=`pwd` && ( cd $(srcdir) && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$(top_srcdir)/src --cpp_out=$$oldpwd --java_out=$$oldpwd --ruby_out=$$oldpwd --objc_out=$$oldpwd --python_out=$$oldpwd $(conformance_proto2_protoc_inputs) )
- oldpwd=`pwd` && ( cd $(srcdir) && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$(top_srcdir)/src --cpp_out=$$oldpwd --java_out=$$oldpwd --ruby_out=$$oldpwd --python_out=$$oldpwd $(well_known_type_protoc_inputs) )
- ## @mkdir -p lite
- ## oldpwd=`pwd` && ( cd $(srcdir) && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$(top_srcdir)/src --java_out=lite:$$oldpwd/lite $(conformance_protoc_inputs) $(well_known_type_protoc_inputs) )
- touch protoc_middleman
-
-endif
-
-$(protoc_outputs): protoc_middleman
-
-$(other_language_protoc_outputs): protoc_middleman
-
-CLEANFILES = $(protoc_outputs) protoc_middleman javac_middleman conformance-java javac_middleman_lite conformance-java-lite conformance-csharp conformance-php conformance-php-c $(other_language_protoc_outputs)
-
-MAINTAINERCLEANFILES = \
- Makefile.in
-
-javac_middleman: ConformanceJava.java protoc_middleman $(other_language_protoc_outputs)
- jar=`ls ../java/util/target/*jar-with-dependencies.jar` && javac -classpath ../java/target/classes:$$jar ConformanceJava.java com/google/protobuf/conformance/Conformance.java com/google/protobuf_test_messages/proto3/TestMessagesProto3.java com/google/protobuf_test_messages/proto2/TestMessagesProto2.java
- @touch javac_middleman
-
-conformance-java: javac_middleman
- @echo "Writing shortcut script conformance-java..."
- @echo '#! /bin/sh' > conformance-java
- @jar=`ls ../java/util/target/*jar-with-dependencies.jar` && echo java -classpath .:../java/target/classes:$$jar ConformanceJava '$$@' >> conformance-java
- @chmod +x conformance-java
-
-javac_middleman_lite: ConformanceJavaLite.java protoc_middleman $(other_language_protoc_outputs)
- javac -classpath ../java/lite/target/classes:lite ConformanceJavaLite.java lite/com/google/protobuf/conformance/Conformance.java
- @touch javac_middleman_lite
-
-conformance-java-lite: javac_middleman_lite
- @echo "Writing shortcut script conformance-java-lite..."
- @echo '#! /bin/sh' > conformance-java-lite
- @echo java -classpath .:../java/lite/target/classes:lite ConformanceJavaLite '$$@' >> conformance-java-lite
- @chmod +x conformance-java-lite
-
-# Currently the conformance code is alongside the rest of the C#
-# source, as it's easier to maintain there. We assume we've already
-# built that, so we just need a script to run it.
-conformance-csharp: $(other_language_protoc_outputs)
- @echo "Writing shortcut script conformance-csharp..."
- @echo '#! /bin/sh' > conformance-csharp
- @echo 'dotnet ../csharp/src/Google.Protobuf.Conformance/bin/Release/netcoreapp3.1/Google.Protobuf.Conformance.dll "$$@"' >> conformance-csharp
- @chmod +x conformance-csharp
-
-conformance-php:
- @echo "Writing shortcut script conformance-php..."
- @echo '#! /bin/sh' > conformance-php
- @echo 'php -d auto_prepend_file=autoload.php ./conformance_php.php' >> conformance-php
- @chmod +x conformance-php
-
-conformance-php-c:
- @echo "Writing shortcut script conformance-php-c..."
- @echo '#! /bin/sh' > conformance-php-c
- @echo 'php -dextension=../php/ext/google/protobuf/modules/protobuf.so ./conformance_php.php' >> conformance-php-c
- @chmod +x conformance-php-c
-
-# Targets for actually running tests.
-test_cpp: protoc_middleman conformance-test-runner conformance-cpp
- ./conformance-test-runner --enforce_recommended --failure_list failure_list_cpp.txt --text_format_failure_list text_format_failure_list_cpp.txt ./conformance-cpp
-
-test_java: protoc_middleman conformance-test-runner conformance-java
- ./conformance-test-runner --enforce_recommended --failure_list failure_list_java.txt --text_format_failure_list text_format_failure_list_java.txt ./conformance-java
-
-test_java_lite: protoc_middleman conformance-test-runner conformance-java-lite
- ./conformance-test-runner --enforce_recommended ./conformance-java-lite
-
-test_csharp: protoc_middleman conformance-test-runner conformance-csharp
- ./conformance-test-runner --enforce_recommended --failure_list failure_list_csharp.txt --text_format_failure_list text_format_failure_list_csharp.txt ./conformance-csharp
-
-test_ruby: protoc_middleman conformance-test-runner $(other_language_protoc_outputs)
- RUBYLIB=../ruby/lib:. ./conformance-test-runner --enforce_recommended --failure_list failure_list_ruby.txt --text_format_failure_list text_format_failure_list_ruby.txt ./conformance_ruby.rb
-
-test_jruby: protoc_middleman conformance-test-runner $(other_language_protoc_outputs)
- RUBYLIB=../ruby/lib:. ./conformance-test-runner --enforce_recommended --failure_list failure_list_jruby.txt --text_format_failure_list text_format_failure_list_jruby.txt ./conformance_ruby.rb
-
-test_php: protoc_middleman conformance-test-runner conformance-php $(other_language_protoc_outputs)
- ./conformance-test-runner --enforce_recommended --failure_list failure_list_php.txt --text_format_failure_list text_format_failure_list_php.txt ./conformance-php
-
-test_php_c: protoc_middleman conformance-test-runner conformance-php-c $(other_language_protoc_outputs)
- ./conformance-test-runner --enforce_recommended --failure_list failure_list_php_c.txt --text_format_failure_list text_format_failure_list_php.txt ./conformance-php-c
-
-# These depend on library paths being properly set up. The easiest way to
-# run them is to just use "tox" from the python dir.
-test_python: protoc_middleman conformance-test-runner
- ./conformance-test-runner --enforce_recommended --failure_list failure_list_python.txt --text_format_failure_list text_format_failure_list_python.txt ./conformance_python.py
-
-test_python_cpp: protoc_middleman conformance-test-runner
- ./conformance-test-runner --enforce_recommended --failure_list failure_list_python_cpp.txt --text_format_failure_list text_format_failure_list_python_cpp.txt ./conformance_python.py
-
-if OBJC_CONFORMANCE_TEST
-
-test_objc: protoc_middleman conformance-test-runner conformance-objc
- ./conformance-test-runner --enforce_recommended --failure_list failure_list_objc.txt ./conformance-objc
-
-endif
diff --git a/conformance/autoload.php b/conformance/autoload.php
index 0f49aec..7f04cc0 100644
--- a/conformance/autoload.php
+++ b/conformance/autoload.php
@@ -7,7 +7,7 @@
function protobuf_autoloader_impl($class, $prefix) {
$length = strlen($prefix);
if ((substr($class, 0, $length) === $prefix)) {
- $path = '../php/src/' . implode('/', array_map('ucwords', explode('\\', $class))) . '.php';
+ $path = 'php/src/' . implode('/', array_map('ucwords', explode('\\', $class))) . '.php';
include_once $path;
}
}
diff --git a/conformance/conformance_cpp.cc b/conformance/conformance_cpp.cc
index dd753ca..cbfd8b5 100644
--- a/conformance/conformance_cpp.cc
+++ b/conformance/conformance_cpp.cc
@@ -44,8 +44,7 @@
#include <google/protobuf/util/type_resolver_util.h>
#include <google/protobuf/stubs/status.h>
#include <google/protobuf/stubs/statusor.h>
-#include "conformance.pb.h"
-#include "conformance.pb.h"
+#include "conformance/conformance.pb.h"
#include <google/protobuf/test_messages_proto2.pb.h>
#include <google/protobuf/test_messages_proto3.pb.h>
#include <google/protobuf/test_messages_proto3.pb.h>
diff --git a/conformance/conformance_nodejs.js b/conformance/conformance_nodejs.js
deleted file mode 100755
index 275fac4..0000000
--- a/conformance/conformance_nodejs.js
+++ /dev/null
@@ -1,189 +0,0 @@
-#!/usr/bin/env node
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-var conformance = require('conformance_pb');
-var test_messages_proto3 = require('google/protobuf/test_messages_proto3_pb');
-var test_messages_proto2 = require('google/protobuf/test_messages_proto2_pb');
-var fs = require('fs');
-
-var testCount = 0;
-
-function doTest(request) {
- var testMessage;
- var response = new conformance.ConformanceResponse();
-
- try {
- if (request.getRequestedOutputFormat() == conformance.WireFormat.JSON) {
- response.setSkipped("JSON not supported.");
- return response;
- }
-
- if (request.getRequestedOutputFormat() ==
- conformance.WireFormat.TEXT_FORMAT) {
- response.setSkipped('Text format is not supported as output format.');
- return response;
- }
-
- switch (request.getPayloadCase()) {
- case conformance.ConformanceRequest.PayloadCase.PROTOBUF_PAYLOAD: {
- if (request.getMessageType() == "protobuf_test_messages.proto3.TestAllTypesProto3") {
- try {
- testMessage = test_messages_proto3.TestAllTypesProto3.deserializeBinary(
- request.getProtobufPayload());
- } catch (err) {
- response.setParseError(err.toString());
- return response;
- }
- } else if (request.getMessageType() == "protobuf_test_messages.proto2.TestAllTypesProto2"){
- try {
- testMessage = test_messages_proto2.TestAllTypesProto2.deserializeBinary(
- request.getProtobufPayload());
- } catch (err) {
- response.setParseError(err.toString());
- return response;
- }
- } else {
- throw "Protobuf request doesn\'t have specific payload type";
- }
- } break;
-
- case conformance.ConformanceRequest.PayloadCase.JSON_PAYLOAD:
- response.setSkipped("JSON not supported.");
- return response;
-
- case conformance.ConformanceRequest.PayloadCase.TEXT_PAYLOAD:
- response.setSkipped("Text format not supported.");
- return response;
-
- case conformance.ConformanceRequest.PayloadCase.PAYLOAD_NOT_SET:
- response.setRuntimeError("Request didn't have payload");
- return response;
- }
-
- switch (request.getRequestedOutputFormat()) {
- case conformance.WireFormat.UNSPECIFIED:
- response.setRuntimeError("Unspecified output format");
- return response;
-
- case conformance.WireFormat.PROTOBUF:
- response.setProtobufPayload(testMessage.serializeBinary());
-
- case conformance.WireFormat.JSON:
- response.setSkipped("JSON not supported.");
- return response;
-
- default:
- throw "Request didn't have requested output format";
- }
- } catch (err) {
- response.setRuntimeError(err.toString());
- }
-
- return response;
-}
-
-function onEof(totalRead) {
- if (totalRead == 0) {
- return undefined;
- } else {
- throw "conformance_nodejs: premature EOF on stdin.";
- }
-}
-
-// Utility function to read a buffer of N bytes.
-function readBuffer(bytes) {
- var buf = new Buffer(bytes);
- var totalRead = 0;
- while (totalRead < bytes) {
- var read = 0;
- try {
- read = fs.readSync(process.stdin.fd, buf, totalRead, bytes - totalRead);
- } catch (e) {
- if (e.code == 'EOF') {
- return onEof(totalRead)
- } else if (e.code == 'EAGAIN') {
- } else {
- throw "conformance_nodejs: Error reading from stdin." + e;
- }
- }
-
- totalRead += read;
- }
-
- return buf;
-}
-
-function writeBuffer(buffer) {
- var totalWritten = 0;
- while (totalWritten < buffer.length) {
- totalWritten += fs.writeSync(
- process.stdout.fd, buffer, totalWritten, buffer.length - totalWritten);
- }
-}
-
-// Returns true if the test ran successfully, false on legitimate EOF.
-// If EOF is encountered in an unexpected place, raises IOError.
-function doTestIo() {
- var lengthBuf = readBuffer(4);
- if (!lengthBuf) {
- return false;
- }
-
- var length = lengthBuf.readInt32LE(0);
- var serializedRequest = readBuffer(length);
- if (!serializedRequest) {
- throw "conformance_nodejs: Failed to read request.";
- }
-
- serializedRequest = new Uint8Array(serializedRequest);
- var request =
- conformance.ConformanceRequest.deserializeBinary(serializedRequest);
- var response = doTest(request);
-
- var serializedResponse = response.serializeBinary();
-
- lengthBuf = new Buffer(4);
- lengthBuf.writeInt32LE(serializedResponse.length, 0);
- writeBuffer(lengthBuf);
- writeBuffer(new Buffer(serializedResponse));
-
- testCount += 1
-
- return true;
-}
-
-while (true) {
- if (!doTestIo()) {
- console.error('conformance_nodejs: received EOF from test runner ' +
- "after " + testCount + " tests, exiting")
- break;
- }
-}
diff --git a/conformance/conformance_php.php b/conformance/conformance_php.php
index 9eef0c5..f250ebf 100644
--- a/conformance/conformance_php.php
+++ b/conformance/conformance_php.php
@@ -14,7 +14,7 @@
require_once("Protobuf_test_messages/Proto3/TestAllTypesProto3/NestedEnum.php");
require_once("GPBMetadata/Conformance.php");
-require_once("GPBMetadata/Google/Protobuf/TestMessagesProto3.php");
+require_once("GPBMetadata/TestMessagesProto3.php");
use \Conformance\TestCategory;
use \Conformance\WireFormat;
@@ -113,7 +113,7 @@
while(true){
if (!doTestIO()) {
fprintf(STDERR,
- "conformance_php: received EOF from test runner " +
+ "conformance_php: received EOF from test runner " .
"after %d tests, exiting\n", $test_count);
exit;
}
diff --git a/conformance/conformance_test_runner.sh b/conformance/conformance_test_runner.sh
index 3149f82..0492d9d 100755
--- a/conformance/conformance_test_runner.sh
+++ b/conformance/conformance_test_runner.sh
@@ -44,13 +44,13 @@
conformance_testee=$(rlocation $TESTEE)
args=(--enforce_recommended)
-failure_list=$(rlocation $FAILURE_LIST)
-if [ "$failure_list" != "1" ] ; then
+failure_list=$(rlocation $FAILURE_LIST) || unset
+if [ -n "$failure_list" ] ; then
args+=(--failure_list $failure_list)
fi
-text_format_failure_list=$(rlocation $TEXT_FORMAT_FAILURE_LIST)
-if [ "$text_format_failure_list" != "1" ]; then
+text_format_failure_list=$(rlocation $TEXT_FORMAT_FAILURE_LIST) || unset
+if [ -n "$text_format_failure_list" ]; then
args+=(--text_format_failure_list $text_format_failure_list)
fi
diff --git a/conformance/defs.bzl b/conformance/defs.bzl
index cd36ab4..e6eceb8 100644
--- a/conformance/defs.bzl
+++ b/conformance/defs.bzl
@@ -7,7 +7,8 @@
name,
testee,
failure_list = None,
- text_format_failure_list = None):
+ text_format_failure_list = None,
+ **kwargs):
"""Conformance test runner.
Args:
@@ -16,6 +17,7 @@
failure_list: a text file with known failures, one per line.
text_format_failure_list: a text file with known failures (one per line)
for the text format conformance suite.
+ **kwargs: common arguments to pass to sh_test.
"""
args = ["--testee %s" % _strip_bazel(testee)]
failure_lists = []
@@ -36,6 +38,8 @@
deps = [
"@bazel_tools//tools/bash/runfiles",
],
+ tags = ["conformance"],
+ **kwargs,
)
def _strip_bazel(testee):
diff --git a/conformance/failure_list_js.txt b/conformance/failure_list_js.txt
deleted file mode 100644
index b7d36b6..0000000
--- a/conformance/failure_list_js.txt
+++ /dev/null
@@ -1,162 +0,0 @@
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.ENUM.UnpackedInput.DefaultOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.ENUM.UnpackedInput.PackedOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.ENUM.UnpackedInput.UnpackedOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.FIXED64.PackedInput.DefaultOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.FIXED64.PackedInput.PackedOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.FIXED64.PackedInput.UnpackedOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.FIXED64.UnpackedInput.DefaultOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.FIXED64.UnpackedInput.PackedOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.FIXED64.UnpackedInput.UnpackedOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.INT32.PackedInput.DefaultOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.INT32.PackedInput.PackedOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.INT32.PackedInput.UnpackedOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.INT32.UnpackedInput.DefaultOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.INT32.UnpackedInput.PackedOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.INT32.UnpackedInput.UnpackedOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.INT64.PackedInput.DefaultOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.INT64.PackedInput.PackedOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.INT64.PackedInput.UnpackedOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.INT64.UnpackedInput.DefaultOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.INT64.UnpackedInput.PackedOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.INT64.UnpackedInput.UnpackedOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.SFIXED64.PackedInput.DefaultOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.SFIXED64.PackedInput.PackedOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.SFIXED64.PackedInput.UnpackedOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.SFIXED64.UnpackedInput.DefaultOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.SFIXED64.UnpackedInput.PackedOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.SFIXED64.UnpackedInput.UnpackedOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.SINT64.PackedInput.DefaultOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.SINT64.PackedInput.PackedOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.SINT64.PackedInput.UnpackedOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.SINT64.UnpackedInput.DefaultOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.SINT64.UnpackedInput.PackedOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.SINT64.UnpackedInput.UnpackedOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.UINT32.PackedInput.DefaultOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.UINT32.PackedInput.PackedOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.UINT32.PackedInput.UnpackedOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.UINT32.UnpackedInput.DefaultOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.UINT32.UnpackedInput.PackedOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.UINT32.UnpackedInput.UnpackedOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.UINT64.PackedInput.DefaultOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.UINT64.PackedInput.PackedOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.UINT64.PackedInput.UnpackedOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.UINT64.UnpackedInput.DefaultOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.UINT64.UnpackedInput.PackedOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataRepeated.UINT64.UnpackedInput.UnpackedOutput.ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataScalarBinary.ENUM[4].ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataScalarBinary.ENUM[5].ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataScalarBinary.FIXED64[2].ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataScalarBinary.INT32[7].ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataScalarBinary.INT64[2].ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataScalarBinary.SFIXED64[2].ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataScalarBinary.SINT64[2].ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataScalarBinary.UINT32[8].ProtobufOutput
-Recommended.Proto2.ProtobufInput.ValidDataScalarBinary.UINT64[2].ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.ENUM.UnpackedInput.DefaultOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.ENUM.UnpackedInput.PackedOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.ENUM.UnpackedInput.UnpackedOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.FIXED64.PackedInput.DefaultOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.FIXED64.PackedInput.PackedOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.FIXED64.PackedInput.UnpackedOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.FIXED64.UnpackedInput.DefaultOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.FIXED64.UnpackedInput.PackedOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.FIXED64.UnpackedInput.UnpackedOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.INT32.PackedInput.DefaultOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.INT32.PackedInput.PackedOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.INT32.PackedInput.UnpackedOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.INT32.UnpackedInput.DefaultOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.INT32.UnpackedInput.PackedOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.INT32.UnpackedInput.UnpackedOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.INT64.PackedInput.DefaultOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.INT64.PackedInput.PackedOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.INT64.PackedInput.UnpackedOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.INT64.UnpackedInput.DefaultOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.INT64.UnpackedInput.PackedOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.INT64.UnpackedInput.UnpackedOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.SFIXED64.PackedInput.DefaultOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.SFIXED64.PackedInput.PackedOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.SFIXED64.PackedInput.UnpackedOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.SFIXED64.UnpackedInput.DefaultOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.SFIXED64.UnpackedInput.PackedOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.SFIXED64.UnpackedInput.UnpackedOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.SINT64.PackedInput.DefaultOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.SINT64.PackedInput.PackedOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.SINT64.PackedInput.UnpackedOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.SINT64.UnpackedInput.DefaultOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.SINT64.UnpackedInput.PackedOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.SINT64.UnpackedInput.UnpackedOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.UINT32.PackedInput.DefaultOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.UINT32.PackedInput.PackedOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.UINT32.PackedInput.UnpackedOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.UINT32.UnpackedInput.DefaultOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.UINT32.UnpackedInput.PackedOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.UINT32.UnpackedInput.UnpackedOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.UINT64.PackedInput.DefaultOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.UINT64.PackedInput.PackedOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.UINT64.PackedInput.UnpackedOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.UINT64.UnpackedInput.DefaultOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.UINT64.UnpackedInput.PackedOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataRepeated.UINT64.UnpackedInput.UnpackedOutput.ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataScalarBinary.ENUM[4].ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataScalarBinary.ENUM[5].ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataScalarBinary.FIXED64[2].ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataScalarBinary.INT32[7].ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataScalarBinary.INT64[2].ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataScalarBinary.SFIXED64[2].ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataScalarBinary.SINT64[2].ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataScalarBinary.UINT32[8].ProtobufOutput
-Recommended.Proto3.ProtobufInput.ValidDataScalarBinary.UINT64[2].ProtobufOutput
-Required.Proto2.ProtobufInput.RepeatedScalarSelectsLast.ENUM.ProtobufOutput
-Required.Proto2.ProtobufInput.RepeatedScalarSelectsLast.FIXED64.ProtobufOutput
-Required.Proto2.ProtobufInput.RepeatedScalarSelectsLast.UINT64.ProtobufOutput
-Required.Proto2.ProtobufInput.ValidDataRepeated.ENUM.UnpackedInput.ProtobufOutput
-Required.Proto2.ProtobufInput.ValidDataRepeated.FIXED64.PackedInput.ProtobufOutput
-Required.Proto2.ProtobufInput.ValidDataRepeated.FIXED64.UnpackedInput.ProtobufOutput
-Required.Proto2.ProtobufInput.ValidDataRepeated.INT32.PackedInput.ProtobufOutput
-Required.Proto2.ProtobufInput.ValidDataRepeated.INT32.UnpackedInput.ProtobufOutput
-Required.Proto2.ProtobufInput.ValidDataRepeated.INT64.PackedInput.ProtobufOutput
-Required.Proto2.ProtobufInput.ValidDataRepeated.INT64.UnpackedInput.ProtobufOutput
-Required.Proto2.ProtobufInput.ValidDataRepeated.SFIXED64.PackedInput.ProtobufOutput
-Required.Proto2.ProtobufInput.ValidDataRepeated.SFIXED64.UnpackedInput.ProtobufOutput
-Required.Proto2.ProtobufInput.ValidDataRepeated.SINT64.PackedInput.ProtobufOutput
-Required.Proto2.ProtobufInput.ValidDataRepeated.SINT64.UnpackedInput.ProtobufOutput
-Required.Proto2.ProtobufInput.ValidDataRepeated.UINT32.PackedInput.ProtobufOutput
-Required.Proto2.ProtobufInput.ValidDataRepeated.UINT32.UnpackedInput.ProtobufOutput
-Required.Proto2.ProtobufInput.ValidDataRepeated.UINT64.PackedInput.ProtobufOutput
-Required.Proto2.ProtobufInput.ValidDataRepeated.UINT64.UnpackedInput.ProtobufOutput
-Required.Proto2.ProtobufInput.ValidDataScalar.ENUM[4].ProtobufOutput
-Required.Proto2.ProtobufInput.ValidDataScalar.ENUM[5].ProtobufOutput
-Required.Proto2.ProtobufInput.ValidDataScalar.FIXED64[2].ProtobufOutput
-Required.Proto2.ProtobufInput.ValidDataScalar.INT32[7].ProtobufOutput
-Required.Proto2.ProtobufInput.ValidDataScalar.INT64[2].ProtobufOutput
-Required.Proto2.ProtobufInput.ValidDataScalar.SFIXED64[2].ProtobufOutput
-Required.Proto2.ProtobufInput.ValidDataScalar.SINT64[2].ProtobufOutput
-Required.Proto2.ProtobufInput.ValidDataScalar.UINT32[8].ProtobufOutput
-Required.Proto2.ProtobufInput.ValidDataScalar.UINT64[2].ProtobufOutput
-Required.Proto3.ProtobufInput.RepeatedScalarSelectsLast.ENUM.ProtobufOutput
-Required.Proto3.ProtobufInput.RepeatedScalarSelectsLast.FIXED64.ProtobufOutput
-Required.Proto3.ProtobufInput.RepeatedScalarSelectsLast.UINT64.ProtobufOutput
-Required.Proto3.ProtobufInput.ValidDataRepeated.ENUM.UnpackedInput.ProtobufOutput
-Required.Proto3.ProtobufInput.ValidDataRepeated.FIXED64.PackedInput.ProtobufOutput
-Required.Proto3.ProtobufInput.ValidDataRepeated.FIXED64.UnpackedInput.ProtobufOutput
-Required.Proto3.ProtobufInput.ValidDataRepeated.INT32.PackedInput.ProtobufOutput
-Required.Proto3.ProtobufInput.ValidDataRepeated.INT32.UnpackedInput.ProtobufOutput
-Required.Proto3.ProtobufInput.ValidDataRepeated.INT64.PackedInput.ProtobufOutput
-Required.Proto3.ProtobufInput.ValidDataRepeated.INT64.UnpackedInput.ProtobufOutput
-Required.Proto3.ProtobufInput.ValidDataRepeated.SFIXED64.PackedInput.ProtobufOutput
-Required.Proto3.ProtobufInput.ValidDataRepeated.SFIXED64.UnpackedInput.ProtobufOutput
-Required.Proto3.ProtobufInput.ValidDataRepeated.SINT64.PackedInput.ProtobufOutput
-Required.Proto3.ProtobufInput.ValidDataRepeated.SINT64.UnpackedInput.ProtobufOutput
-Required.Proto3.ProtobufInput.ValidDataRepeated.UINT32.PackedInput.ProtobufOutput
-Required.Proto3.ProtobufInput.ValidDataRepeated.UINT32.UnpackedInput.ProtobufOutput
-Required.Proto3.ProtobufInput.ValidDataRepeated.UINT64.PackedInput.ProtobufOutput
-Required.Proto3.ProtobufInput.ValidDataRepeated.UINT64.UnpackedInput.ProtobufOutput
-Required.Proto3.ProtobufInput.ValidDataScalar.ENUM[4].ProtobufOutput
-Required.Proto3.ProtobufInput.ValidDataScalar.ENUM[5].ProtobufOutput
-Required.Proto3.ProtobufInput.ValidDataScalar.FIXED64[2].ProtobufOutput
-Required.Proto3.ProtobufInput.ValidDataScalar.INT32[7].ProtobufOutput
-Required.Proto3.ProtobufInput.ValidDataScalar.INT64[2].ProtobufOutput
-Required.Proto3.ProtobufInput.ValidDataScalar.SFIXED64[2].ProtobufOutput
-Required.Proto3.ProtobufInput.ValidDataScalar.SINT64[2].ProtobufOutput
-Required.Proto3.ProtobufInput.ValidDataScalar.UINT32[8].ProtobufOutput
-Required.Proto3.ProtobufInput.ValidDataScalar.UINT64[2].ProtobufOutput