[VOL-5285] - JJB Upgrade toward v5

Makefile
--------
  o Added a repository makefile with convenience targets (make test)

chart_version_check.sh
-----------------------------------
  o Copyright notice updated to onf v1.1
  o More temp filename filtering added.
  o Improve reporting for a cryptic error source.
  o Version diffs rely on simple string comparison which can be
    confused by composite charts like voltha-infra/ and voltha-stack/
    when multiple chart versions are modified.
  o Yaml parsing needed for a real fix, in the interim identify the
    problem and display strings that contributed to detection.

chart_version_check/filter_files.sh
-----------------------------------
  o Added helper library filter_files().
  o Given a list of files return the list with garbage removed.

test/bats/chart_version_check.sh
--------------------------------
  o Added a bats unit test for filter_files().

Change-Id: I8d724579976adf62d47786fcad16d21d0759a5ab
diff --git a/test/bats/chart_version_check.bats b/test/bats/chart_version_check.bats
new file mode 100755
index 0000000..3731018
--- /dev/null
+++ b/test/bats/chart_version_check.bats
@@ -0,0 +1,93 @@
+#!/usr/bin/env bats
+# -----------------------------------------------------------------------
+# Copyright 2024 Open Networking Foundation Contributors
+#
+# 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.
+# -----------------------------------------------------------------------
+# SPDX-FileCopyrightText: 2024 Open Networking Foundation Contributors
+# SPDX-License-Identifier: Apache-2.0
+# -----------------------------------------------------------------------
+
+bats_require_minimum_version 1.5.0
+
+# This runs before each of the following tests are executed.
+setup() {
+    source '../../chart_version_check/filter_files.sh'
+}
+
+## -----------------------------------------------------------------------
+## Intent: Validate the filter_files function
+## -----------------------------------------------------------------------
+@test 'Validate filter_files()' {
+
+    local -a good=() # control
+    good+=('bar.c')
+    good+=('tans.c')
+
+    local -a bad=() # garbage
+    bad+=('bar.c~')
+    bad+=('.#bar.c')
+    bad+=('#bar.c#')
+
+    ## Generate a list of files and paths to filter
+    local -a src=()
+    for dir in '' 'foo/';
+    do
+        for fyl in "${good[@]}" "${bad[@]}";
+        do
+            src+=("${dir}${fyl}")
+        done
+    done
+
+    local -a got=("${src[@]}")
+
+    # Run is quarky, test ($?==0) and set -e
+    if false; then
+        run ! filter_files got
+    else
+        filter_files got
+        local status=$?
+        [ $status -eq 0 ]
+    fi
+
+    ## -----------------------------------------
+    ## Compare by size, filtered list is smaller
+    ## -----------------------------------------
+    [ ${#src[@]} -eq 10 ]
+    [ ${#got[@]} -eq 4 ]
+
+    ## -----------------------------------------
+    ## Also sanity check strings since we are
+    ## not (yet) comparing list contents.
+    ## -----------------------------------------
+    [[ ! "${got[*]}" == *'#'* ]]
+    [[ ! "${got[*]}" == *'~'* ]]
+
+    local val
+
+    ## Verify control values were not filtered
+    for val in "${good[@]}";
+    do
+        [[ "${src[*]}" == *"$val"* ]]
+        [[ "${got[*]}" == *"$val"* ]]
+    done
+
+    ## Verify garbage exists and was filtered
+    for val in "${bad[@]}";
+    do
+        [[ "${src[*]}" == *"$val"* ]]
+        [[ ! "${got[*]}" == *"$val"* ]]
+    done
+}
+
+# [EOF]
diff --git a/test/bats/makefile b/test/bats/makefile
new file mode 100644
index 0000000..2951c00
--- /dev/null
+++ b/test/bats/makefile
@@ -0,0 +1,68 @@
+# -*- makefile -*-
+# -----------------------------------------------------------------------
+# Copyright 2024 Open Networking Foundation Contributors
+#
+# 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.
+# -----------------------------------------------------------------------
+# SPDX-FileCopyrightText: 2024 Open Networking Foundation Contributors
+# SPDX-License-Identifier: Apache-2.0
+# -----------------------------------------------------------------------
+# Intent: This test suite will validate repo:helm-repo-tools scripts
+# -----------------------------------------------------------------------
+
+null	:=#
+space	:=$(null) $(null)
+HIDE	?= @
+
+src = $(wildcard *.bats)
+bats := $(subst .bats,$(null),$(src))
+.PHONY: $(bats)
+
+## -----------------------------------------------------------------------
+## -----------------------------------------------------------------------
+all:
+
+## -----------------------------------------------------------------------
+## -----------------------------------------------------------------------
+test : bats
+
+bats : $(bats)
+
+## -----------------------------------------------------------------------
+## -----------------------------------------------------------------------
+$(bats) :
+	$(HIDE)./$@.bats
+
+## -----------------------------------------------------------------------
+## Intent: Display target help
+## -----------------------------------------------------------------------
+help ::
+	@echo 'Usage: $(MAKE) [options] [target] ...'
+	@printf '  %-33.33s %s\n' 'test' 'Launch available test suites'
+	@printf '  %-33.33s %s\n' 'bats' 'Launch available bats test suites'
+
+	@echo
+	@echo '[TEST: by name]'
+	@$(MAKE) --no-print-directory help-bats
+
+	@echo
+	@echo '[HELP]'
+	@printf '  %-33.33s %s\n' 'help'      'Display target usage'
+	@printf '  %-33.33s %s\n' 'help-bats' 'Display a list of test suites'
+
+help-bats := $(addprefix help--,$(bats))
+help-bats : $(help-bats)
+$(help-bats) :
+	@printf '  $(MAKE) %-33.33s %s\n' "$(lastword $(subst -,$(space),$@))" ''
+
+# [EOF]