Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions .github/workflows/BATS.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---

name: BATS

# yamllint disable-line rule:truthy
on: [push, pull_request, workflow_dispatch]

jobs:
testjob:
runs-on: ubuntu-22.04

steps:
- name: apt-get update
run: sudo apt-get update

- name: apt-get install
run: sudo apt-get -y install bats

- uses: actions/checkout@v2

- name: run tests
run: bats tests/tests.bats
24 changes: 14 additions & 10 deletions tarball_one_version.sh
Original file line number Diff line number Diff line change
Expand Up @@ -25,32 +25,36 @@ main()
local archive_name=sof-bin-"$ver"

local gittop; gittop="$(git rev-parse --show-toplevel)"
cd "${gittop}"

if test -e "$archive_name"; then
die "%s already exists\n" "$archive_name"
fi

set -x
# Start with a clean git archive
git archive -o _.tar --prefix="$archive_name"/ HEAD
#
( set -e; local _pwd; _pwd=$(pwd)
cd "${gittop}" # git archive is painful like this
git archive -o "$_pwd"/_.tar --prefix="$archive_name"/ HEAD "${gittop}"
)
tar xf _.tar; rm _.tar

# Save the selected version
rm -rf _selected_version; mkdir _selected_version
mv "$archive_name"/"$path"/*"$ver" _selected_version/

# Delete all other versions
rm -r "${archive_name:?}"/v[0-9].*
# Select ancillary files
( set -e
local _pwd; _pwd=$(pwd)
cd "${archive_name:?}"

# Exclude the copy of ourselves (we depend on git) any obsolete
# scripts or other irrelevant stuff
( cd "${archive_name:?}"
rm tarball*.sh
rm -f README-before-1.7.md go.sh publish.sh
rm -f HOWTO-new-release.md
rm -f README-before-1.7.md
mv install.sh README* LICENCE* Notice* "${_pwd}"/_selected_version/
)

# Delete everything else
rm -r "${archive_name:?}"/* "${archive_name:?}"/.github/

# Restore the selected version
mv _selected_version/* "$archive_name"/
rmdir _selected_version
Expand Down
13 changes: 8 additions & 5 deletions tarball_topologies_only.sh
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,17 @@ main()
local sof_tplg_ver=sof-tplg-"$ver"

local gittop; gittop="$(git rev-parse --show-toplevel)"
cd "${gittop}"/"$path"

test -d "$sof_tplg_ver" ||
( set -e; local _pwd; _pwd=$(pwd)
cd "${gittop}"/"$path"

test -d "$sof_tplg_ver" ||
die "No %s/%s directory\n" "$(pwd)" "$sof_tplg_ver"

tarfile="$gittop"/"$sof_tplg_ver".tar.gz
set -x
git archive -9 -o "$tarfile" HEAD -- "$sof_tplg_ver"
tarfile="${_pwd}"/"$sof_tplg_ver".tar.gz
set -x
git archive -9 -o "$tarfile" HEAD -- "$sof_tplg_ver"
)
}

die()
Expand Down
32 changes: 32 additions & 0 deletions tests/common_helpers.bash
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@

set_constants()
{
TESTS_DIR=$(cd "$(dirname "$BATS_TEST_FILENAME")" && pwd)
# shellcheck disable=SC2034
TOP_DIR=$(cd "${TESTS_DIR}"/.. && pwd)
REFS="$TESTS_DIR"/refs/
EXTR_REFS="$TESTS_DIR"/extracted_refs/

GITHUB_RELEASES='https://github.com/thesofproject/sof-bin/releases/download'
}

# Example: get_release v2.1.1/sof-bin-v2.1.1.tar.gz
get_release()
{
local tgz; tgz=$(basename "$1")
set_constants
local dirname=${tgz%.tar.gz}; dirname=${dirname%.tgz}

# 1. Do not re-download the same thing over and over again
# 2. Let the user override for local testing purposes
if test -d "$EXTR_REFS"/"$dirname"/; then return 0; fi

( cd "$REFS"/ || exit 1
# Same logic as above
test -e "$tgz" || wget "$GITHUB_RELEASES"/"$1"
)

( cd "$EXTR_REFS"/ || exit 1
tar xf "$REFS"/"$tgz"
)
}
47 changes: 47 additions & 0 deletions tests/tests.bats
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@

# https://bats-core.readthedocs.io/en/stable/tutorial.html


setup_file()
{
load 'common_helpers.bash'; set_constants
mkdir -p "$REFS" "$EXTR_REFS"
}

setup()
{
mkdir -p testruns/
RUN_DIR=$(mktemp --directory testruns/run-XXXXXX)
}

teardown()
{
test -d "$RUN_DIR"/ || return 1
rm -rf "${RUN_DIR:?}"/
}

@test "tarball_one_version 2.1.1" {

pushd "$RUN_DIR"/
load 'common_helpers.bash'; set_constants

get_release v2.1.1/sof-bin-v2.1.1.tar.gz

"$TOP_DIR"/tarball_one_version.sh v2.1.x/v2.1.1
tar xf sof-bin-v2.1.1.tar.gz
diff -qr "$EXTR_REFS"/sof-bin-v2.1.1 sof-bin-v2.1.1/
popd
}

@test "tarball_topologies_only 2.2.1" {

pushd "$RUN_DIR"/
load 'common_helpers.bash'; set_constants

get_release v2.2.1/sof-tplg-v2.2.1.tar.gz

"$TOP_DIR"/tarball_topologies_only.sh v2.2.x/v2.2.1
tar xf sof-tplg-v2.2.1.tar.gz
diff -qr "$EXTR_REFS"/sof-tplg-v2.2.1 sof-tplg-v2.2.1/
popd
}