Skip to content

Commit 0ce9249

Browse files
committed
Setup simple java tests
1 parent 63e2ba6 commit 0ce9249

File tree

8 files changed

+400
-9
lines changed

8 files changed

+400
-9
lines changed

β€Ž.github/workflows/java.ymlβ€Ž

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
name: Java
2+
3+
on: [push, pull_request]
4+
5+
permissions:
6+
contents: read
7+
8+
jobs:
9+
build:
10+
name: Build
11+
runs-on: ubuntu-latest
12+
timeout-minutes: 10
13+
14+
steps:
15+
- name: Checkout
16+
uses: actions/checkout@v4
17+
18+
- name: Set up Java
19+
uses: actions/setup-java@v4
20+
with:
21+
distribution: 'temurin'
22+
java-version: '17'
23+
24+
- name: Set up Ruby
25+
uses: ruby/setup-ruby@v1
26+
with:
27+
bundler-cache: true
28+
29+
# - name: bundle install
30+
# run: bundle install
31+
32+
# - name: Render Templates
33+
# run: bundle exec rake templates
34+
35+
- name: Render Templates
36+
run: rake templates
37+
38+
- name: Build JNI library
39+
run: make jni
40+
working-directory: java
41+
42+
- name: Compile Java classes
43+
run: make java
44+
working-directory: java
45+
46+
- name: Run tests
47+
run: ./run_tests.sh
48+
working-directory: java
49+
50+
- name: Test CLI version command
51+
run: ./bin/herb-java version
52+
working-directory: java

β€Žjava/Makefileβ€Ž

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,20 @@ JNI_INCLUDES = -I$(JAVA_HOME)/include
66
os := $(shell uname -s)
77

88
ifeq ($(os),Darwin)
9-
JNI_INCLUDES += -I$(JAVA_HOME)/include/darwin
10-
JNI_LIB_EXT = dylib
11-
JNI_LIB_PREFIX = lib
9+
JNI_INCLUDES += -I$(JAVA_HOME)/include/darwin
10+
JNI_LIB_EXT = dylib
11+
JNI_LIB_PREFIX = lib
12+
LLVM_PATH = $(shell brew --prefix llvm@21)
13+
CC = $(LLVM_PATH)/bin/clang
1214
else ifeq ($(os),Linux)
13-
JNI_INCLUDES += -I$(JAVA_HOME)/include/linux
14-
JNI_LIB_EXT = so
15-
JNI_LIB_PREFIX = lib
15+
JNI_INCLUDES += -I$(JAVA_HOME)/include/linux
16+
JNI_LIB_EXT = so
17+
JNI_LIB_PREFIX = lib
18+
CC = clang
1619
else
17-
JNI_LIB_EXT = dll
18-
JNI_LIB_PREFIX =
20+
JNI_LIB_EXT = dll
21+
JNI_LIB_PREFIX =
22+
CC = clang
1923
endif
2024

2125
BUILD_DIR = ../build
@@ -24,7 +28,6 @@ PRISM_PATH = $(shell cd .. && bundle show prism)
2428
PRISM_INCLUDE = $(PRISM_PATH)/include
2529
PRISM_BUILD = $(PRISM_PATH)/build
2630

27-
CC = clang
2831
JAVAC = $(JAVA_HOME)/bin/javac
2932
JAVA_CMD = $(JAVA_HOME)/bin/java
3033
CFLAGS = -std=c99 -Wall -Wextra -fPIC -O2

β€Žjava/run_tests.shβ€Ž

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
#!/usr/bin/env bash
2+
3+
# Simple test script for Java bindings
4+
5+
set -e
6+
7+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
8+
cd "$SCRIPT_DIR"
9+
10+
echo "Running Java binding tests..."
11+
echo
12+
13+
TEST_FILE="snapshots/test.html.erb"
14+
15+
echo "Test 1: Version command"
16+
17+
./bin/herb-java version
18+
echo "βœ“ Version test passed"
19+
echo
20+
21+
echo "Test 2: Lex command"
22+
23+
OUTPUT=$(./bin/herb-java lex "$TEST_FILE")
24+
EXPECTED=$(cat snapshots/test.lex.txt)
25+
26+
if [ "$OUTPUT" = "$EXPECTED" ]; then
27+
echo "βœ“ Lex test passed"
28+
else
29+
echo "βœ— Lex test failed"
30+
echo "Expected:"
31+
echo "$EXPECTED"
32+
echo "Got:"
33+
echo "$OUTPUT"
34+
exit 1
35+
fi
36+
echo
37+
38+
echo "Test 3: Parse command"
39+
40+
OUTPUT=$(./bin/herb-java parse "$TEST_FILE")
41+
EXPECTED=$(cat snapshots/test.parse.txt)
42+
43+
if [ "$OUTPUT" = "$EXPECTED" ]; then
44+
echo "βœ“ Parse test passed"
45+
else
46+
echo "βœ— Parse test failed"
47+
echo "Expected:"
48+
echo "$EXPECTED"
49+
echo "Got:"
50+
echo "$OUTPUT"
51+
exit 1
52+
fi
53+
echo
54+
55+
echo "Test 4: Extract Ruby"
56+
57+
OUTPUT=$(./bin/herb-java ruby "$TEST_FILE")
58+
EXPECTED=$(cat snapshots/test.ruby.txt)
59+
60+
if [ "$OUTPUT" = "$EXPECTED" ]; then
61+
echo "βœ“ Extract Ruby test passed"
62+
else
63+
echo "βœ— Extract Ruby test failed"
64+
echo "Expected:"
65+
echo "$EXPECTED"
66+
echo "Got:"
67+
echo "$OUTPUT"
68+
exit 1
69+
fi
70+
echo
71+
72+
echo "Test 5: Extract HTML"
73+
74+
OUTPUT=$(./bin/herb-java html "$TEST_FILE")
75+
EXPECTED=$(cat snapshots/test.html.txt)
76+
77+
if [ "$OUTPUT" = "$EXPECTED" ]; then
78+
echo "βœ“ Extract HTML test passed"
79+
else
80+
echo "βœ— Extract HTML test failed"
81+
echo "Expected:"
82+
echo "$EXPECTED"
83+
echo "Got:"
84+
echo "$OUTPUT"
85+
exit 1
86+
fi
87+
echo
88+
89+
echo "All Java tests passed! βœ“"

β€Žjava/snapshots/test.html.erbβ€Ž

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

β€Žjava/snapshots/test.html.txtβ€Ž

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

β€Žjava/snapshots/test.lex.txtβ€Ž

Lines changed: 65 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
Β (0)