Skip to content

Commit 59d0949

Browse files
tongyimingmikatong
andauthored
feat: trigger the test file associated with service/resource update (#839)
Co-authored-by: mikatong <[email protected]>
1 parent 4c42491 commit 59d0949

File tree

3 files changed

+38
-13
lines changed

3 files changed

+38
-13
lines changed

.githooks/pre-commit

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -40,19 +40,11 @@ if [ "$diff" != "" ]; then
4040
fi
4141

4242
# go test check
43-
delta_test_files=`git diff --name-status origin/master | egrep "_test\.go$" | awk '{print $2}'`
44-
for delta_test_file in ${delta_test_files}; do
45-
test_casts=`egrep "func TestAcc.+\(" ${delta_test_file} | awk -F "(" '{print $1}' | awk '{print $2}'`
46-
for test_cast in ${test_casts}; do
47-
go_test_cmd="go test -v -run ${test_cast} -timeout=0 ./tencentcloud/"
48-
echo ${go_test_cmd}
49-
$go_test_cmd
50-
if [ $? -ne 0 ]; then
51-
printf "[GO TEST FILED] ${go_test_cmd}"
52-
exit 1
53-
fi
54-
done
55-
done
43+
make deltatest
44+
if [ $? -ne 0 ]; then
45+
printf "COMMIT FAILED\n"
46+
exit 1
47+
fi
5648

5749
printf "COMMIT READY\n"
5850
exit 0

GNUmakefile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ fmt:
2828
fmtcheck:
2929
@sh -c "'$(CURDIR)/scripts/gofmtcheck.sh'"
3030

31+
deltatest:
32+
@sh -c "'$(CURDIR)/scripts/delta-test.sh'"
33+
3134
lint:
3235
@echo "==> Checking source code against linters..."
3336
@GOGC=30 GOPACKAGESPRINTGOLISTERRORS=1 golangci-lint run --timeout=30m ./$(PKG_NAME)

scripts/delta-test.sh

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#!/bin/bash
2+
3+
#service files
4+
update_services=`git diff --name-status origin/master| awk '{print $2}' | grep "^tencentcloud/" | xargs egrep "type .+Service struct" | awk -F ":" '{print $2}' | awk '{print $2}'`
5+
need_test_files=""
6+
for update_service in $update_services; do
7+
tmp_files=`grep -r --with-filename $update_service ./tencentcloud | awk -F ":" '{print $1}' | grep -v "service_tencent*" | awk -F "/" '{print $3}' | sort | uniq | egrep "^resource_tc_|^data_source_tc" | awk -F "." '{print $1}' | awk '/_test$/{print "tencentcloud/"$0".go"} !/_test$/{print "tencentcloud/"$0"_test.go"}'`
8+
need_test_files="$need_test_files $tmp_files"
9+
done
10+
11+
# resource&&data_source files
12+
update_sources=`git diff --name-status origin/master| awk '{print $2}' | egrep "^tencentcloud/resource_tc|^tencentcloud/data_source" | egrep -v "_test.go" | awk -F "." '{print $1"_test.go"}'`
13+
# test files
14+
delta_test_files=`git diff --name-status origin/master | egrep "_test\.go$" | awk '{print $2}'`
15+
# all test files
16+
delta_test_files="$delta_test_files $need_test_files $update_sources"
17+
delta_test_files=`echo $delta_test_files | xargs -n1 | sort | uniq`
18+
for delta_test_file in ${delta_test_files}; do
19+
test_casts=`egrep "func TestAcc.+\(" ${delta_test_file} | awk -F "(" '{print $1}' | awk '{print $2}'`
20+
echo "[$delta_test_file]: $test_casts"
21+
for test_cast in ${test_casts}; do
22+
go_test_cmd="go test -v -run ${test_cast} -timeout=0 ./tencentcloud/"
23+
echo ${go_test_cmd}
24+
$go_test_cmd
25+
if [ $? -ne 0 ]; then
26+
printf "[GO TEST FILED] ${go_test_cmd}"
27+
exit 1
28+
fi
29+
done
30+
done

0 commit comments

Comments
 (0)