diff --git a/meta-google/recipes-google/test/test-sh.bb b/meta-google/recipes-google/test/test-sh.bb
new file mode 100644
index 0000000..7edbb91
--- /dev/null
+++ b/meta-google/recipes-google/test/test-sh.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Shell functions for testing shell scripts"
+PR = "r1"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+SRC_URI += "file://lib.sh"
+SRC_URI += "file://test.sh"
+S = "${WORKDIR}"
+
+DATA = "${datadir}/test"
+FILES_${PN} += "${DATA}"
+
+do_compile() {
+  SYSROOT="$PKG_CONFIG_SYSROOT_DIR" bash test.sh || exit
+}
+
+do_install_append() {
+  install -d -m0755 ${D}${DATA}
+  install -m0644 lib.sh ${D}${DATA}/
+}
diff --git a/meta-google/recipes-google/test/test-sh/lib.sh b/meta-google/recipes-google/test/test-sh/lib.sh
new file mode 100755
index 0000000..cc04c5d
--- /dev/null
+++ b/meta-google/recipes-google/test/test-sh/lib.sh
@@ -0,0 +1,57 @@
+#!/bin/bash
+# Copyright 2021 Google LLC
+#
+# 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.
+
+expect_streq() {
+  local r="${2-$(cat)}"
+  [ "$1" = "$r" ] && return
+  echo "  Line ${BASH_LINENO[0]} '$1' != '$r'" >&2
+  test_err=1
+}
+
+expect_numeq() {
+  (( "$1" == "$2" )) && return
+  echo "  Line ${BASH_LINENO[0]} '$1' != '$2'" >&2
+  test_err=1
+}
+
+expect_err() {
+  local expected=$1
+  shift
+  local rc=0
+  "$@" || rc="$?"
+  (( rc == expected )) && return
+  echo "  Line ${BASH_LINENO[0]} Status '$rc' != '$expected'" >&2
+  test_err=1
+}
+
+fail() {
+  echo "  Line ${BASH_LINENO[0]} Fail" >&2
+  test_err=1
+}
+
+main() {
+  local agg_err=0
+  for f in $(declare -F | grep 'declare -f test[A-Z_]' | awk '{print $3}'); do
+    echo "[$f] Running..." >&2
+    local test_err=0
+    if "$f" && (( test_err == 0 )); then
+      echo "[$f] Success" >&2
+    else
+      echo "[$f] Failed ($?)" >&2
+      agg_err=1
+    fi
+  done
+  return $agg_err
+}
diff --git a/meta-google/recipes-google/test/test-sh/test.sh b/meta-google/recipes-google/test/test-sh/test.sh
new file mode 100755
index 0000000..c74029d
--- /dev/null
+++ b/meta-google/recipes-google/test/test-sh/test.sh
@@ -0,0 +1,145 @@
+#!/bin/bash
+# Copyright 2021 Google LLC
+#
+# 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.
+
+source "$(dirname "$0")/lib.sh" || exit
+
+(
+  echo '## Test Pass' >&2
+  test_pass() {
+    return 0
+  }
+  main || exit
+) || exit
+
+(
+  echo '## Test Fail' >&2
+  i=0
+  test_pass1() {
+    (( i++ ))
+    return 0
+  }
+  test_fail() {
+    return 1
+    (( i++ ))
+    return 0
+  }
+  test_pass2() {
+    (( i++ ))
+    return 0
+  }
+  ! main || exit
+  (( i == 2 )) || exit
+) || exit
+
+(
+  echo '## Test Deferred Fail' >&2
+  i=0
+  test_expect_fail() {
+    test_err=1 || return
+    (( i++ ))
+    return 0
+  }
+  test_pass() {
+    (( i++ ))
+    return 0
+  }
+  ! main || exit
+  (( i == 2 )) || exit
+) || exit
+
+(
+  echo '## Test Fail' >&2
+  i=0
+  test_fail() {
+    fail 'Failed' || return
+    (( i++ ))
+    return 0
+  }
+  ! main || exit
+  (( i == 1 )) || exit
+) || exit
+
+(
+  echo '## Test Expect Err' >&2
+  i=0
+  test_expect_err() {
+    expect_err 1 false || return
+    (( i++ ))
+    return 0
+  }
+  main || exit
+  (( i == 1 )) || exit
+) || exit
+
+(
+  echo '## Test Expect Err Error' >&2
+  i=0
+  test_expect_err() {
+    expect_err 0 false || return
+    (( i++ ))
+    return 0
+  }
+  ! main || exit
+  (( i == 1 )) || exit
+) || exit
+
+(
+  echo '## Test Num EQ' >&2
+  i=0
+  test_num_eq() {
+    expect_numeq 15 0xf || return
+    expect_numeq 1 1 || return
+    (( i++ ))
+    return 0
+  }
+  main || exit
+  (( i == 1 )) || exit
+) || exit
+
+(
+  echo '## Test Num EQ Error' >&2
+  i=0
+  test_num_eq() {
+    expect_numeq 15 10 || return
+    (( i++ ))
+    return 0
+  }
+  ! main || exit
+  (( i == 1 )) || exit
+) || exit
+
+(
+  echo '## Test Str EQ' >&2
+  i=0
+  test_str_eq() {
+    expect_streq abz abz || return
+    (( i++ ))
+    return 0
+  }
+  main || exit
+  (( i == 1 )) || exit
+) || exit
+
+(
+  echo '## Test Str EQ Error' >&2
+  i=0
+  test_str_eq() {
+    expect_streq 15 0xf || return
+    (( i++ ))
+    return 0
+  }
+  ! main || exit
+  (( i == 1 )) || exit
+) || exit
