Skip to content

Commit 20ef235

Browse files
authored
Merge pull request #19 from mubbi/develop
Develop
2 parents c813ba7 + 034f19a commit 20ef235

File tree

3 files changed

+54
-47
lines changed

3 files changed

+54
-47
lines changed

Makefile

Lines changed: 37 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -144,32 +144,46 @@ docker-restart: docker-down docker-up
144144
# Testing Environment
145145
# =============================================================================
146146

147+
147148
# Run tests (automated testing environment)
148-
test: docker-setup-env
149-
@echo "🧪 TESTING: Running complete test suite..."
150-
cd containers && docker-compose -f docker-compose.test.yml up -d
151-
@echo ">> Installing dependencies in test container..."
152-
@sleep 10
153-
docker-compose -f containers/docker-compose.test.yml exec -T laravel_blog_api_test composer install --no-interaction --prefer-dist --optimize-autoloader
154-
docker-compose -f containers/docker-compose.test.yml exec -T laravel_blog_api_test php artisan key:generate --env=testing --force
155-
docker-compose -f containers/docker-compose.test.yml exec -T laravel_blog_api_test php artisan migrate:fresh --seed --env=testing --force
156-
@echo ">> Running tests..."
157-
docker-compose -f containers/docker-compose.test.yml exec -T laravel_blog_api_test php artisan test --parallel --recreate-databases --stop-on-failure
158-
cd containers && docker-compose -f docker-compose.test.yml down
159-
@echo "✅ SUCCESS: Tests completed!"
149+
test:
150+
@if docker-compose -f containers/docker-compose.test.yml ps | grep -q 'laravel_blog_api_test' && docker-compose -f containers/docker-compose.test.yml ps | grep 'Up'; then \
151+
echo "🧪 TESTING: Test container already running. Skipping setup..."; \
152+
echo ">> Running tests..."; \
153+
docker-compose -f containers/docker-compose.test.yml exec -T laravel_blog_api_test php artisan test --parallel --recreate-databases --stop-on-failure; \
154+
echo "✅ SUCCESS: Tests completed!"; \
155+
else \
156+
echo "🧪 TESTING: Running complete test suite..."; \
157+
cd containers && docker-compose -f docker-compose.test.yml up -d; \
158+
echo ">> Installing dependencies in test container..."; \
159+
sleep 10; \
160+
docker-compose -f containers/docker-compose.test.yml exec -T laravel_blog_api_test composer install --no-interaction --prefer-dist --optimize-autoloader; \
161+
docker-compose -f containers/docker-compose.test.yml exec -T laravel_blog_api_test php artisan key:generate --env=testing --force; \
162+
docker-compose -f containers/docker-compose.test.yml exec -T laravel_blog_api_test php artisan migrate:fresh --seed --env=testing --force; \
163+
echo ">> Running tests..."; \
164+
docker-compose -f containers/docker-compose.test.yml exec -T laravel_blog_api_test php artisan test --parallel --recreate-databases --stop-on-failure; \
165+
echo "✅ SUCCESS: Tests completed!"; \
166+
fi
167+
160168

161169
# Run tests with coverage report
162-
test-coverage: docker-setup-env
163-
@echo "🧪 TESTING: Running tests with coverage..."
164-
cd containers && docker-compose -f docker-compose.test.yml up -d
165-
@sleep 10
166-
docker-compose -f containers/docker-compose.test.yml exec -T laravel_blog_api_test composer install --no-interaction --prefer-dist --optimize-autoloader
167-
docker-compose -f containers/docker-compose.test.yml exec -T laravel_blog_api_test php artisan key:generate --env=testing --force
168-
docker-compose -f containers/docker-compose.test.yml exec -T laravel_blog_api_test php artisan migrate:fresh --seed --env=testing --force
169-
@echo ">> Running tests with coverage..."
170-
docker-compose -f containers/docker-compose.test.yml exec -T laravel_blog_api_test php artisan test --coverage --coverage-html reports/coverage --coverage-clover reports/coverage.xml --stop-on-failure --min=80
171-
cd containers && docker-compose -f docker-compose.test.yml down
172-
@echo "✅ SUCCESS: Tests with coverage completed!"
170+
test-coverage:
171+
@if docker-compose -f containers/docker-compose.test.yml ps | grep -q 'laravel_blog_api_test' && docker-compose -f containers/docker-compose.test.yml ps | grep 'Up'; then \
172+
echo "🧪 TESTING: Test container already running. Skipping setup..."; \
173+
echo ">> Running tests with coverage..."; \
174+
docker-compose -f containers/docker-compose.test.yml exec -T laravel_blog_api_test php artisan test --coverage --coverage-html reports/coverage --coverage-clover reports/coverage.xml --stop-on-failure --min=80; \
175+
echo "✅ SUCCESS: Tests with coverage completed!"; \
176+
else \
177+
echo "🧪 TESTING: Running tests with coverage..."; \
178+
cd containers && docker-compose -f docker-compose.test.yml up -d; \
179+
sleep 10; \
180+
docker-compose -f containers/docker-compose.test.yml exec -T laravel_blog_api_test composer install --no-interaction --prefer-dist --optimize-autoloader; \
181+
docker-compose -f containers/docker-compose.test.yml exec -T laravel_blog_api_test php artisan key:generate --env=testing --force; \
182+
docker-compose -f containers/docker-compose.test.yml exec -T laravel_blog_api_test php artisan migrate:fresh --seed --env=testing --force; \
183+
echo ">> Running tests with coverage..."; \
184+
docker-compose -f containers/docker-compose.test.yml exec -T laravel_blog_api_test php artisan test --coverage --coverage-html reports/coverage --coverage-clover reports/coverage.xml --stop-on-failure --min=80; \
185+
echo "✅ SUCCESS: Tests with coverage completed!"; \
186+
fi
173187

174188
# =============================================================================
175189
# Code Quality Tools

containers/check-ports.sh

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -46,34 +46,29 @@ check_port() {
4646
local optional=${3:-false}
4747
local os=$(detect_os)
4848
local port_in_use=false
49-
5049
case $os in
5150
"windows")
52-
# Use netstat on Windows (available by default)
53-
if netstat -an | grep -q ":$port "; then
51+
# Only consider LISTENING state
52+
if netstat -an | grep -E ":$port[[:space:]]" | grep -iq "LISTEN"; then
5453
port_in_use=true
5554
fi
5655
;;
5756
"macos")
58-
# Use netstat on macOS (available by default)
59-
if netstat -an | grep -q "\\.$port "; then
57+
# Only consider LISTEN state
58+
if netstat -an | grep -E "\.$port[[:space:]]" | grep -iq "LISTEN"; then
6059
port_in_use=true
6160
fi
6261
;;
6362
"linux")
64-
# Try multiple methods on Linux
6563
if command -v ss &> /dev/null; then
66-
# Use ss (modern replacement for netstat)
67-
if ss -tuln | grep -q ":$port "; then
64+
if ss -tuln | awk '{print $4,$1}' | grep -E "[:.]$port[[:space:]]" | grep -iq "LISTEN"; then
6865
port_in_use=true
6966
fi
7067
elif command -v netstat &> /dev/null; then
71-
# Fall back to netstat
72-
if netstat -tuln | grep -q ":$port "; then
68+
if netstat -tuln | grep -E ":$port[[:space:]]" | grep -iq "LISTEN"; then
7369
port_in_use=true
7470
fi
7571
elif command -v nc &> /dev/null; then
76-
# Fall back to netcat
7772
if nc -z localhost $port 2>/dev/null; then
7873
port_in_use=true
7974
fi
@@ -83,7 +78,6 @@ check_port() {
8378
fi
8479
;;
8580
*)
86-
# Unknown OS - try netcat if available
8781
if command -v nc &> /dev/null; then
8882
if nc -z localhost $port 2>/dev/null; then
8983
port_in_use=true

containers/check-sonarqube-ports.sh

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -34,36 +34,32 @@ detect_os() {
3434
check_port() {
3535
local port=$1
3636
local description=$2
37+
local optional=${3:-false}
3738
local os=$(detect_os)
3839
local port_in_use=false
39-
4040
case $os in
4141
"windows")
42-
# Use netstat on Windows (available by default)
43-
if netstat -an | grep -q ":$port "; then
42+
# Only consider LISTENING state
43+
if netstat -an | grep -E ":$port[[:space:]]" | grep -iq "LISTEN"; then
4444
port_in_use=true
4545
fi
4646
;;
4747
"macos")
48-
# Use netstat on macOS (available by default)
49-
if netstat -an | grep -q "\\.$port "; then
48+
# Only consider LISTEN state
49+
if netstat -an | grep -E "\.$port[[:space:]]" | grep -iq "LISTEN"; then
5050
port_in_use=true
5151
fi
5252
;;
5353
"linux")
54-
# Try multiple methods on Linux
5554
if command -v ss &> /dev/null; then
56-
# Use ss (modern replacement for netstat)
57-
if ss -tuln | grep -q ":$port "; then
55+
if ss -tuln | awk '{print $4,$1}' | grep -E "[:.]$port[[:space:]]" | grep -iq "LISTEN"; then
5856
port_in_use=true
5957
fi
6058
elif command -v netstat &> /dev/null; then
61-
# Fall back to netstat
62-
if netstat -tuln | grep -q ":$port "; then
59+
if netstat -tuln | grep -E ":$port[[:space:]]" | grep -iq "LISTEN"; then
6360
port_in_use=true
6461
fi
6562
elif command -v nc &> /dev/null; then
66-
# Fall back to netcat
6763
if nc -z localhost $port 2>/dev/null; then
6864
port_in_use=true
6965
fi
@@ -73,7 +69,6 @@ check_port() {
7369
fi
7470
;;
7571
*)
76-
# Unknown OS - try netcat if available
7772
if command -v nc &> /dev/null; then
7873
if nc -z localhost $port 2>/dev/null; then
7974
port_in_use=true
@@ -84,6 +79,10 @@ check_port() {
8479
fi
8580
;;
8681
esac
82+
return 0
83+
fi
84+
;;
85+
esac
8786

8887
if [ "$port_in_use" = true ]; then
8988
echo -e "${RED}❌ PORT $port ($description) is already in use${NC}"

0 commit comments

Comments
 (0)