From 4800626eee5245a062e910b648adb2f291e212c5 Mon Sep 17 00:00:00 2001 From: Dave MacLachlan Date: Wed, 3 Feb 2016 23:31:39 +0000 Subject: Add shell example to bazel. Includes sh_binary, sh_library and sh_test. -- MOS_MIGRATED_REVID=113789897 --- examples/BUILD | 1 + examples/shell/BUILD | 28 ++++++++++++++++++++++++++++ examples/shell/README.md | 10 ++++++++++ examples/shell/bin.sh | 26 ++++++++++++++++++++++++++ examples/shell/data/file.txt | 1 + examples/shell/data/test_file.txt | 1 + examples/shell/lib.sh | 26 ++++++++++++++++++++++++++ examples/shell/test.sh | 35 +++++++++++++++++++++++++++++++++++ 8 files changed, 128 insertions(+) create mode 100644 examples/shell/BUILD create mode 100644 examples/shell/README.md create mode 100755 examples/shell/bin.sh create mode 100644 examples/shell/data/file.txt create mode 100644 examples/shell/data/test_file.txt create mode 100755 examples/shell/lib.sh create mode 100755 examples/shell/test.sh (limited to 'examples') diff --git a/examples/BUILD b/examples/BUILD index 3ce954ea6a..9d25b8fc73 100644 --- a/examples/BUILD +++ b/examples/BUILD @@ -11,5 +11,6 @@ filegroup( "//examples/proto:srcs", "//examples/py:srcs", "//examples/py_native:srcs", + "//examples/shell:srcs", ], ) diff --git a/examples/shell/BUILD b/examples/shell/BUILD new file mode 100644 index 0000000000..9aba320bc2 --- /dev/null +++ b/examples/shell/BUILD @@ -0,0 +1,28 @@ +package(default_visibility = ["//visibility:public"]) + +sh_binary( + name = "bin", + srcs = ["bin.sh"], + deps = [":lib"], +) + +sh_library( + name = "lib", + data = [ + "data/file.txt", + "lib.sh", + ], +) + +sh_test( + name = "test", + size = "small", + srcs = ["test.sh"], + data = ["data/test_file.txt"], + deps = [":lib"], +) + +filegroup( + name = "srcs", + srcs = ["BUILD"] + glob(["**/*.sh"]) + glob(["**/*.txt"]), +) diff --git a/examples/shell/README.md b/examples/shell/README.md new file mode 100644 index 0000000000..da0c726621 --- /dev/null +++ b/examples/shell/README.md @@ -0,0 +1,10 @@ +# Shell Examples + +These examples demonstrate building shell binaries, libraries, and tests. +They also show methods to access runfiles from different shell targets. + +``` +bazel build examples/shell:bin +bazel build examples/shell:lib +bazel test examples/shell:test +``` diff --git a/examples/shell/bin.sh b/examples/shell/bin.sh new file mode 100755 index 0000000000..02345b0157 --- /dev/null +++ b/examples/shell/bin.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +# Copyright 2016 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. + +set -eu + +# This allows the script to be both a binary and a library script. If our binary has defined +# RUNFILES then we use it, otherwise we look for our own runfiles. +RUNFILES=${RUNFILES:-$0.runfiles} + +source "${RUNFILES}/examples/shell/lib.sh" + +showfile + diff --git a/examples/shell/data/file.txt b/examples/shell/data/file.txt new file mode 100644 index 0000000000..2741ec4dd0 --- /dev/null +++ b/examples/shell/data/file.txt @@ -0,0 +1 @@ +Hello Bazel! diff --git a/examples/shell/data/test_file.txt b/examples/shell/data/test_file.txt new file mode 100644 index 0000000000..2741ec4dd0 --- /dev/null +++ b/examples/shell/data/test_file.txt @@ -0,0 +1 @@ +Hello Bazel! diff --git a/examples/shell/lib.sh b/examples/shell/lib.sh new file mode 100755 index 0000000000..979a2c6b67 --- /dev/null +++ b/examples/shell/lib.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +# Copyright 2016 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. + +set -eu + +# This allows the script to be both a binary and a library script. If our binary has defined +# RUNFILES then we use it, otherwise we look for our own runfiles. +RUNFILES=${RUNFILES:-$0.runfiles} + +function showfile { + cat "${RUNFILES}/examples/shell/data/file.txt" +} + diff --git a/examples/shell/test.sh b/examples/shell/test.sh new file mode 100755 index 0000000000..6b7ba90e37 --- /dev/null +++ b/examples/shell/test.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +# Copyright 2016 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. + +set -eu + +# This allows RUNFILES to be declared outside the script it you want. +# RUNFILES for test is the directory of the script. +RUNFILES=${RUNFILES:-$($(cd $(dirname ${BASH_SOURCE[0]})); pwd)} + +source "${RUNFILES}/examples/shell/lib.sh" + +function test_output { + OUTPUT=$(showfile) + EXPECTED_OUTPUT=$(cat "${RUNFILES}/examples/shell/data/test_file.txt") + + if [ "${OUTPUT}" != "${EXPECTED_OUTPUT}" ]; then + # This would be a failure case. + exit 1 + fi +} + +test_output -- cgit v1.2.3