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


The following commit(s) were added to refs/heads/OPENNLP-1688 by this push:
     new b314f06e x
b314f06e is described below

commit b314f06eecb1125d77c949a7953b82233dc6fea0
Author: Richard Zowalla <r...@apache.org>
AuthorDate: Fri Jan 17 12:56:53 2025 +0100

    x
---
 .../{unix-shell-tests.yml => shell-tests.yml}      | 64 ++++++++++++++++++++++
 opennlp-distr/src/test/ps/test_opennlp.Tests.ps1   | 38 +++++++++++++
 2 files changed, 102 insertions(+)

diff --git a/.github/workflows/unix-shell-tests.yml 
b/.github/workflows/shell-tests.yml
similarity index 63%
rename from .github/workflows/unix-shell-tests.yml
rename to .github/workflows/shell-tests.yml
index 1758e330..10899e9e 100644
--- a/.github/workflows/unix-shell-tests.yml
+++ b/.github/workflows/shell-tests.yml
@@ -119,6 +119,70 @@ jobs:
       - name: Run Bats Tests
         run: |
           bats ./opennlp-distr/src/test/sh
+        env:
+          JAVA_HOME: ${{ env.JAVA_HOME }}
+          OPENNLP_HOME: ${{ env.OPENNLP_HOME }}
+
+  test-windows-shell:
+    name: Test opennlp.bat on Windows
+    runs-on: windows-latest
+
+    steps:
+      - name: Checkout code
+        uses: actions/checkout@v4
+
+      # Install Pester for PowerShell testing
+      - name: Install Pester
+        run: |
+          Install-Module -Name Pester -Force -Scope CurrentUser
+          Import-Module Pester
+        shell: pwsh
+
+      # Set up JDK 17 for Windows (using Temurin distribution)
+      - name: Set up JDK 17
+        uses: actions/setup-java@v4
+        with:
+          distribution: temurin
+          java-version: 17
+
+      # Build with Maven (same as the Linux setup)
+      - name: Build with Maven
+        run: mvn -V clean install --no-transfer-progress -Pci -DskipTests=true
+
+      # Find and Extract OpenNLP Distribution
+      - name: Find and Extract OpenNLP Distribution
+        run: |
+          # Find the first non-src .tar.gz file in the target directory
+          $TAR_FILE = Get-ChildItem -Path opennlp-distr/target -Filter 
"*.tar.gz" | Where-Object { $_.Name -notlike "*-src*" } | Select-Object -First 1
+          
+          # Ensure we found a file
+          if (-not $TAR_FILE) {
+            Write-Error "Error: No matching tar.gz file found in 
opennlp-distr/target"
+            exit 1
+          }
+
+          # Extract the tar.gz file
+          $Destination = "$env:USERPROFILE"
+          tar -xzf $TAR_FILE.FullName -C $Destination
+
+          # Get the directory name of the extracted content
+          $EXTRACTED_DIR = (tar -tf $TAR_FILE.FullName | Select-Object -First 
1).Split('/')[0]
+          
+          # Set OPENNLP_HOME dynamically
+          echo "OPENNLP_HOME=$env:USERPROFILE\$EXTRACTED_DIR" >> $GITHUB_ENV
+          echo "$env:USERPROFILE\$EXTRACTED_DIR\bin" >> $GITHUB_PATH
+
+      # Verify Extraction
+      - name: Verify Extraction
+        run: |
+          echo "OPENNLP_HOME: $env:OPENNLP_HOME"
+          dir $env:OPENNLP_HOME\bin
+
+      # Run Pester Tests for opennlp.bat
+      - name: Run Pester Tests
+        run: |
+          Invoke-Pester -Script 
"./opennlp-distr/test/ps/test_opennlp.Tests.ps1" -Output Detailed
+        shell: pwsh
         env:
           JAVA_HOME: ${{ env.JAVA_HOME }}
           OPENNLP_HOME: ${{ env.OPENNLP_HOME }}
\ No newline at end of file
diff --git a/opennlp-distr/src/test/ps/test_opennlp.Tests.ps1 
b/opennlp-distr/src/test/ps/test_opennlp.Tests.ps1
new file mode 100644
index 00000000..44fcc30f
--- /dev/null
+++ b/opennlp-distr/src/test/ps/test_opennlp.Tests.ps1
@@ -0,0 +1,38 @@
+Describe "opennlp.bat Tests" {
+
+    # Setup before all tests
+    BeforeAll {
+        $env:PATH = "$env:OPENNLP_HOME\bin;$env:PATH"
+    }
+
+    # Test if opennlp.bat is accessible and executable
+    It "opennlp.bat exists and is executable" {
+        $batFile = Join-Path $env:OPENNLP_HOME "bin\opennlp.bat"
+        $batFile | Should -Exist
+
+        # Check if the bat file is executable (on Windows, this means it's a 
valid executable script)
+        $result = & $batFile -h
+        $result | Should -Not -BeNullOrEmpty
+    }
+
+    # Test the output of SimpleTokenizer
+    It "SimpleTokenizer produces correct output" {
+        $input = "Hello, friends"
+        $expected_output = "Hello , friends"
+
+        # Run the opennlp.bat with SimpleTokenizer
+        $output = & "$env:OPENNLP_HOME\bin\opennlp.bat" SimpleTokenizer <<< 
$input
+
+        # Debugging: Log the output
+        Write-Host "Output: $output"
+
+        # Validate the command executed successfully
+        $output | Should -Not -BeNullOrEmpty
+        $output | Should -Contain $expected_output
+    }
+
+    # Cleanup after tests
+    AfterAll {
+        Remove-Item Env:\PATH -ErrorAction SilentlyContinue
+    }
+}

Reply via email to