Ver código fonte

Merge pull request #903 from pherl/bazel_test

Enable python bazel tests and explicit list python dependencies.
Jisi Liu 10 anos atrás
pai
commit
1abf297fb9
3 arquivos alterados com 39 adições e 7 exclusões
  1. 15 7
      BUILD
  2. 12 0
      WORKSPACE
  3. 12 0
      six.BUILD

+ 15 - 7
BUILD

@@ -472,8 +472,6 @@ java_library(
 # Python support
 ################################################################################
 
-# Requires: six for python 2/3 compatibility.  `pip install six`
-
 # Hack:
 # protoc generated files contain imports like:
 #   "from google.protobuf.xxx import yyy"
@@ -485,10 +483,13 @@ java_library(
 # that depend on the target.
 #
 # If you use python protobuf as a third_party library in your bazel managed
-# project, please import the whole package to //google/protobuf in your
+# project:
+# 1) Please import the whole package to //google/protobuf in your
 # project. Otherwise, bazel disallows generated files out of the current
 # package, thus we won't be able to copy protobuf runtime files into
 # //google/protobuf/.
+# 2) The runtime also requires "six" for Python2/3 compatibility, please see the
+# WORKSPACE file and bind "six" to your workspace as well.
 internal_copied_filegroup(
     name = "python_srcs",
     srcs = glob(
@@ -510,6 +511,7 @@ py_proto_library(
     include = "src",
     protoc = ":protoc",
     py_extra_srcs = [":python_srcs"],
+    py_libs = ["//external:six"],
     visibility = ["//visibility:public"],
 )
 
@@ -534,7 +536,10 @@ py_proto_library(
 
 py_proto_library(
     name = "python_specific_test_protos",
-    srcs = glob(["python/google/protobuf/internal/*.proto"]),
+    srcs = glob([
+        "python/google/protobuf/internal/*.proto",
+        "python/google/protobuf/internal/import_test_package/*.proto",
+    ]),
     include = "python",
     protoc = ":protoc",
     deps = [":python_common_test_protos"],
@@ -552,6 +557,9 @@ py_library(
 
 internal_protobuf_py_tests(
     name = "python_tests_batch",
+    data = glob([
+        "src/google/protobuf/**/*",
+    ]),
     modules = [
         "descriptor_database_test",
         "descriptor_pool_test",
@@ -559,13 +567,13 @@ internal_protobuf_py_tests(
         "generator_test",
         "json_format_test",
         "message_factory_test",
-        # "message_test",      # failed due to testdata path
+        "message_test",
         "proto_builder_test",
-        # "reflection_test",   # failed due to testdata path
+        "reflection_test",
         "service_reflection_test",
         "symbol_database_test",
         "text_encoding_test",
-        # "text_format_test",  # failed due to testdata path
+        "text_format_test",
         "unknown_fields_test",
         "wire_format_test",
     ],

+ 12 - 0
WORKSPACE

@@ -5,6 +5,13 @@ new_http_archive(
   build_file = "gmock.BUILD",
 )
 
+new_http_archive(
+  name = "six_archive",
+  url = "https://pypi.python.org/packages/source/s/six/six-1.10.0.tar.gz#md5=34eed507548117b2ab523ab14b2f8b55",
+  sha256 = "105f8d68616f8248e24bf0e9372ef04d3cc10104f1980f54d57b2ce73a5ad56a",
+  build_file = "six.BUILD",
+)
+
 bind(
   name = "gtest",
   actual = "@gmock_archive//:gtest",
@@ -14,3 +21,8 @@ bind(
   name = "gtest_main",
   actual = "@gmock_archive//:gtest_main",
 )
+
+bind(
+  name = "six",
+  actual = "@six_archive//:six",
+)

+ 12 - 0
six.BUILD

@@ -0,0 +1,12 @@
+genrule(
+  name = "copy_six",
+  srcs = ["six-1.10.0/six.py"],
+  outs = ["six.py"],
+  cmd = "cp $< $(@)",
+)
+
+py_library(
+  name = "six",
+  srcs = ["six.py"],
+  visibility = ["//visibility:public"],
+)