Skip to content

Commit 4781507

Browse files
committed
Feat: dev 브랜치 PR시 변경된 파일만 테스트, 안드로이드 테스트 추가
1 parent 8fde2d3 commit 4781507

File tree

1 file changed

+77
-6
lines changed

1 file changed

+77
-6
lines changed

.github/workflows/dev-test.yml

Lines changed: 77 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Unit Test
1+
name: Test
22
on:
33
pull_request:
44
branches: [ "dev" ]
@@ -17,7 +17,7 @@ jobs:
1717
echo "Changed files: ${{ steps.changed_files.outputs.all_changed_files }}"
1818
TEST_FILES=$(echo "${{ steps.changed_files.outputs.all_changed_files }}" \
1919
| tr ' ' '\n' \
20-
| grep -E '^.+/src/test/(java|kotlin)/.+\.(kt|java)$')
20+
| grep -E '^.+/src/test/(java|kotlin)/.+\.(kt|java)$' || true)
2121
echo "Filtered by grep: $TEST_FILES"
2222
TEST_FILES=$(echo "$TEST_FILES" \
2323
| sed -E 's/^(.+)\/src\/test\/(java|kotlin)\/(.+)\.(kt|java)$/\1 \3/' \
@@ -26,7 +26,7 @@ jobs:
2626
TEST_FILES_SINGLE_LINE=$(echo "$TEST_FILES" | tr '\n' ' ')
2727
echo "TEST_FILES=$TEST_FILES_SINGLE_LINE" >> $GITHUB_ENV
2828
echo "$TEST_FILES" > test_files.txt
29-
if [ -s test_files.txt ]; then
29+
if [ -n "$(cat test_files.txt | xargs)" ]; then
3030
echo "any_changed=true" >> $GITHUB_ENV
3131
else
3232
echo "any_changed=false" >> $GITHUB_ENV
@@ -58,8 +58,8 @@ jobs:
5858
while IFS=$'\n' read -r LINE; do
5959
6060
# 1) 원본 변수 추출
61-
MODULE_RAW=$(echo "$LINE" | awk '{print $1}') # 예: "core.data"
62-
TEST_CLASS_RAW=$(echo "$LINE" | awk '{print $2}') # 예: "kr.co.data.dummy.DummyInstances"
61+
MODULE_RAW=$(echo "$LINE" | awk '{print $1}')
62+
TEST_CLASS_RAW=$(echo "$LINE" | awk '{print $2}')
6363
echo "MODULE_RAW: $MODULE_RAW"
6464
echo "TEST_CLASS_RAW: $TEST_CLASS_RAW"
6565
@@ -104,4 +104,75 @@ jobs:
104104
uses: EnricoMi/publish-unit-test-result-action@v2
105105
if: always()
106106
with:
107-
files: "**/test-results/**/*.xml"
107+
files: "**/test-results/**/*.xml"
108+
109+
android_test:
110+
runs-on: ubuntu-latest
111+
112+
steps:
113+
- name: Checkout code
114+
uses: actions/checkout@v3
115+
116+
- name: Get changed files
117+
id: changed_files
118+
uses: tj-actions/changed-files@v45
119+
120+
- name: Filter out test files
121+
id: android_test_files
122+
run: |
123+
echo "Changed files: ${{ steps.changed_files.outputs.all_changed_files }}"
124+
125+
ANDROID_TEST_FILES=$(echo "${{ steps.changed_files.outputs.all_changed_files }}" \
126+
| tr ' ' '\n' \
127+
| grep -E '^.+/src/androidTest/(java|kotlin)/.+\.(kt|java)$' || true)
128+
echo "Filtered by grep: $ANDROID_TEST_FILES"
129+
130+
ANDROID_TEST_FILES=$(echo "$ANDROID_TEST_FILES" \
131+
| sed -E 's/^(.+)\/src\/androidTest\/(java|kotlin)\/(.+)\.(kt|java)$/\1 \3/' \
132+
| sed 's/\//./g')
133+
echo "Processed by sed: $ANDROID_TEST_FILES"
134+
135+
ANDROID_TEST_FILES_SINGLE_LINE=$(echo "$ANDROID_TEST_FILES" | tr '\n' ' ')
136+
echo "ANDROID_TEST_FILES=$ANDROID_TEST_FILES_SINGLE_LINE" >> $GITHUB_ENV
137+
138+
echo "$ANDROID_TEST_FILES" > android_test_files.txt
139+
140+
if [ -n "$(cat android_test_files.txt | xargs)" ]; then
141+
echo "any_changed=true" >> $GITHUB_ENV
142+
else
143+
echo "any_changed=false" >> $GITHUB_ENV
144+
fi
145+
146+
- name: Setup JDK
147+
if: env.any_changed == 'true'
148+
uses: actions/setup-java@v4
149+
with:
150+
distribution: 'corretto'
151+
java-version: '17'
152+
153+
- name: Grant execute permission for gradlew
154+
if: env.any_changed == 'true'
155+
run: chmod +x gradlew
156+
157+
- name: Run Instrumentation Tests on Emulator
158+
if: env.any_changed == 'true'
159+
uses: reactivecircus/android-emulator-runner@v2
160+
with:
161+
api-level: 26
162+
target: default
163+
arch: x86_64
164+
profile: Nexus 6
165+
script: ./gradlew connectedCheck --stacktrace
166+
run: |
167+
cat android_test_files.txt | while IFS=$'\n' read -r LINE; do
168+
MODULE=$(echo "$LINE" | awk '{print $1}')
169+
TEST_CLASS=$(echo "$LINE" | awk '{print $2}')
170+
171+
MODULE=$(echo "$MODULE" | sed 's|\.|:|g')
172+
173+
echo "MODULE: $MODULE"
174+
echo "TEST_CLASS: $TEST_CLASS"
175+
176+
echo "Running: ./gradlew :$MODULE:connectedAndroidTest --tests \"$TEST_CLASS\""
177+
./gradlew :$MODULE:connectedAndroidTest --tests "$TEST_CLASS" --scan || exit 1
178+
done

0 commit comments

Comments
 (0)