aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar lberki <lberki@google.com>2018-01-30 09:00:57 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-01-30 09:02:41 -0800
commitbb9f19d4d819a751fbfbe11b2a7827c05680944d (patch)
tree122f9c461fd7ae816f83dea2b461dc600ceb2e5f
parent9e344ec089f3f46ac6d4cdf2638b671242f87631 (diff)
Add a simple Python integration test written in Python.
RELNOTES: None. PiperOrigin-RevId: 183839976
-rw-r--r--src/test/py/bazel/BUILD7
-rw-r--r--src/test/py/bazel/py_test.py69
2 files changed, 76 insertions, 0 deletions
diff --git a/src/test/py/bazel/BUILD b/src/test/py/bazel/BUILD
index ad1d726f79..c7715f7c1f 100644
--- a/src/test/py/bazel/BUILD
+++ b/src/test/py/bazel/BUILD
@@ -39,6 +39,13 @@ py_test(
)
py_test(
+ name = "py_test",
+ size = "medium",
+ srcs = ["py_test.py"],
+ deps = [":test_base"],
+)
+
+py_test(
name = "bazel_server_mode_test",
size = "medium",
srcs = ["bazel_server_mode_test.py"],
diff --git a/src/test/py/bazel/py_test.py b/src/test/py/bazel/py_test.py
new file mode 100644
index 0000000000..40025be7d6
--- /dev/null
+++ b/src/test/py/bazel/py_test.py
@@ -0,0 +1,69 @@
+# Copyright 2018 The Bazel Authors. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import os
+import unittest
+from src.test.py.bazel import test_base
+
+
+class PyTest(test_base.TestBase):
+ """Integration tests for the Python rules of Bazel."""
+
+ def createSimpleFiles(self):
+ self.ScratchFile('WORKSPACE')
+
+ self.ScratchFile(
+ 'a/BUILD',
+ [
+ 'py_binary(name="a", srcs=["a.py"], deps=[":b"])',
+ 'py_library(name="b", srcs=["b.py"])',
+ ])
+
+ self.ScratchFile(
+ 'a/a.py',
+ [
+ 'import b',
+ 'b.Hello()',
+ ])
+
+ self.ScratchFile(
+ 'a/b.py',
+ [
+ 'def Hello():',
+ ' print "Hello, World"',
+ ])
+
+ def testSmoke(self):
+ self.createSimpleFiles()
+ exit_code, stdout, stderr = self.RunBazel(['run', '//a:a'])
+ self.AssertExitCode(exit_code, 0, stderr)
+ self.assertTrue('Hello, World' in stdout)
+
+ def testRunfilesSymlinks(self):
+ if test_base.TestBase.IsWindows():
+ # No runfiles symlinks on Windows
+ return
+
+ self.createSimpleFiles()
+ exit_code, _, stderr = self.RunBazel(['build', '//a:a'])
+ self.AssertExitCode(exit_code, 0, stderr)
+ self.assertTrue(os.path.isdir('bazel-bin/a/a.runfiles'))
+ self.assertTrue(os.readlink('bazel-bin/a/a.runfiles/__main__/a/a.py')
+ .endswith('/a/a.py'))
+ self.assertTrue(os.readlink('bazel-bin/a/a.runfiles/__main__/a/b.py')
+ .endswith('/a/b.py'))
+
+
+if __name__ == '__main__':
+ unittest.main()