This is an automated email from the ASF dual-hosted git repository.

rzo1 pushed a commit to branch OPENNLP-1688
in repository https://gitbox.apache.org/repos/asf/opennlp.git

commit 8b5d7ec5a96b4f7084e13405bb3a99d6c98372c4
Author: Richard Zowalla <r...@apache.org>
AuthorDate: Fri Jan 17 12:41:05 2025 +0100

    x
---
 .github/workflows/shell-tests.yml           | 62 +++++++++++++++++++++++++++++
 opennlp-distr/src/test/sh/test_opennlp.bats | 31 +++++++++++++++
 2 files changed, 93 insertions(+)

diff --git a/.github/workflows/shell-tests.yml 
b/.github/workflows/shell-tests.yml
new file mode 100644
index 00000000..28662b31
--- /dev/null
+++ b/.github/workflows/shell-tests.yml
@@ -0,0 +1,62 @@
+name: Test Shell Script with Bats
+
+on:
+  push:
+#    branches:
+#      - main
+  pull_request:
+
+jobs:
+  test-unix-shell:
+    runs-on: ubuntu-latest
+
+    steps:
+      - name: Checkout code
+        uses: actions/checkout@v4
+
+      - name: Install Bats (Testing Framework)
+        run: |
+          sudo apt-get update
+          sudo apt-get install -y bats
+
+      - name: Set up JDK 17
+        uses: actions/setup-java@v4
+        with:
+          distribution: temurin
+          java-version: 17
+
+      - name: Build with Maven
+        run: mvn -V clean install --no-transfer-progress -Pci -DskipTests=true
+
+      - name: Find and Extract OpenNLP Distribution
+        run: |
+          # Find the first non-src .tar.gz file in the target directory
+          TAR_FILE=$(find opennlp-distr/target -maxdepth 1 -type f -name 
"*.tar.gz" ! -name "*-src*.tar.gz" | head -n 1)
+          
+          # Ensure we found a file
+          if [ -z "$TAR_FILE" ]; then
+            echo "Error: No matching tar.gz file found in opennlp-distr/target"
+            exit 1
+          fi
+
+          # Extract the tar.gz file
+          tar -xzvf "$TAR_FILE" -C $HOME
+
+          # Get the directory name of the extracted content
+          EXTRACTED_DIR=$(tar -tf "$TAR_FILE" | head -n 1 | cut -f1 -d"/")
+
+          # Set OPENNLP_HOME dynamically
+          echo "OPENNLP_HOME=$HOME/$EXTRACTED_DIR" >> $GITHUB_ENV
+          echo "$HOME/$EXTRACTED_DIR/bin" >> $GITHUB_PATH
+
+      - name: Verify Extraction
+        run: |
+          echo "OPENNLP_HOME: $OPENNLP_HOME"
+          ls -l $OPENNLP_HOME/bin
+
+      - name: Run Bats Tests
+        run: |
+          bats ./opennlp-distr/src/test/sh
+        env:
+          JAVA_HOME: ${{ env.JAVA_HOME }}
+          OPENNLP_HOME: ${{ env.OPENNLP_HOME }}
diff --git a/opennlp-distr/src/test/sh/test_opennlp.bats 
b/opennlp-distr/src/test/sh/test_opennlp.bats
new file mode 100644
index 00000000..b181858d
--- /dev/null
+++ b/opennlp-distr/src/test/sh/test_opennlp.bats
@@ -0,0 +1,31 @@
+#!/usr/bin/env bats
+
+# Setup the environment before running the tests
+setup() {
+  PATH="$OPENNLP_HOME/bin:$PATH"
+}
+
+# Test to check if the binary is accessible
+@test "Binary 'opennlp' exists and is executable" {
+  run command -v opennlp
+  [ "$status" -eq 0 ]
+  [ -x "$output" ]
+}
+
+# Test to validate the output of the SimpleTokenizer
+@test "SimpleTokenizer produces correct output" {
+  input="Hello, friends"
+  expected_output="Hello , friends"
+
+  # Run the command and capture output
+  run echo "$input" | opennlp SimpleTokenizer
+
+  # Validate the output
+  [ "$status" -eq 0 ]
+  [ "${output}" = "$expected_output" ]
+}
+
+# Teardown the environment after running the tests
+teardown() {
+  unset OPENNLP_HOME
+}

Reply via email to