Compare commits
2 Commits
c392f05887
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 09bdf5181b | |||
|
|
8463d16981 |
293
.github/workflows/test.yml
vendored
293
.github/workflows/test.yml
vendored
@@ -13,15 +13,17 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout action-module-install
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6.0.2
|
||||
with:
|
||||
path: action-module-install
|
||||
|
||||
- name: Clone action-server-install
|
||||
run: |
|
||||
git clone https://git.ktrix.dev/Nodarx/action-server-install action-server-install
|
||||
cd action-server-install
|
||||
git checkout main
|
||||
- name: Checkout action-server-install
|
||||
uses: actions/checkout@v6.0.2
|
||||
with:
|
||||
repository: Nodarx/action-server-install
|
||||
ref: main
|
||||
path: action-server-install
|
||||
github-server-url: https://git.ktrix.dev
|
||||
|
||||
- name: Setup server environment
|
||||
uses: ./action-server-install
|
||||
@@ -103,126 +105,6 @@ jobs:
|
||||
|
||||
echo "✓ Single module installation verified"
|
||||
|
||||
# Test modules with linear dependencies
|
||||
test-linear-dependencies:
|
||||
name: Linear Dependencies (A → B → C)
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout action-module-install
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
path: action-module-install
|
||||
|
||||
- name: Clone action-server-install
|
||||
run: |
|
||||
git clone https://git.ktrix.dev/Nodarx/action-server-install action-server-install
|
||||
cd action-server-install
|
||||
git checkout main
|
||||
|
||||
- name: Setup server environment
|
||||
uses: ./action-server-install
|
||||
with:
|
||||
install-php: 'true'
|
||||
php-version: '8.5'
|
||||
server-path: './server'
|
||||
|
||||
- name: Create test repositories
|
||||
run: |
|
||||
# Create module-a (no dependencies)
|
||||
mkdir -p /tmp/test-repos/module-a
|
||||
cd /tmp/test-repos/module-a
|
||||
git init
|
||||
git config user.email "test@example.com"
|
||||
git config user.name "Test User"
|
||||
cat > composer.json << 'EOF'
|
||||
{
|
||||
"name": "test/module-a",
|
||||
"description": "Module A",
|
||||
"require": {}
|
||||
}
|
||||
EOF
|
||||
git add . && git commit -m "Initial commit"
|
||||
|
||||
# Create module-b (depends on module-a)
|
||||
mkdir -p /tmp/test-repos/module-b
|
||||
cd /tmp/test-repos/module-b
|
||||
git init
|
||||
git config user.email "test@example.com"
|
||||
git config user.name "Test User"
|
||||
cat > composer.json << 'EOF'
|
||||
{
|
||||
"name": "test/module-b",
|
||||
"description": "Module B",
|
||||
"require": {}
|
||||
}
|
||||
EOF
|
||||
git add . && git commit -m "Initial commit"
|
||||
|
||||
# Create module-c (depends on module-b)
|
||||
mkdir -p /tmp/test-repos/module-c
|
||||
cd /tmp/test-repos/module-c
|
||||
git init
|
||||
git config user.email "test@example.com"
|
||||
git config user.name "Test User"
|
||||
cat > composer.json << 'EOF'
|
||||
{
|
||||
"name": "test/module-c",
|
||||
"description": "Module C",
|
||||
"require": {}
|
||||
}
|
||||
EOF
|
||||
git add . && git commit -m "Initial commit"
|
||||
|
||||
- name: Install modules with dependencies
|
||||
id: install
|
||||
uses: ./action-module-install
|
||||
with:
|
||||
modules: |
|
||||
[
|
||||
{
|
||||
"name": "module-c",
|
||||
"repo": "file:///tmp/test-repos/module-c",
|
||||
"dependencies": ["module-b"]
|
||||
},
|
||||
{
|
||||
"name": "module-a",
|
||||
"repo": "file:///tmp/test-repos/module-a"
|
||||
},
|
||||
{
|
||||
"name": "module-b",
|
||||
"repo": "file:///tmp/test-repos/module-b",
|
||||
"dependencies": ["module-a"]
|
||||
}
|
||||
]
|
||||
|
||||
- name: Verify dependency order
|
||||
run: |
|
||||
INSTALLED="${{ steps.install.outputs.installed-modules }}"
|
||||
echo "Installation order: $INSTALLED"
|
||||
|
||||
# Verify all modules installed
|
||||
for module in module-a module-b module-c; do
|
||||
if [ ! -d "./modules/$module" ]; then
|
||||
echo "::error::Module $module not found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -d "./modules/$module/vendor" ]; then
|
||||
echo "::error::Composer dependencies not installed for $module"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
# Verify order: module-a must come before module-b, module-b before module-c
|
||||
echo "$INSTALLED" | grep -E "(module-a.*module-b.*module-c|module-a.*module-c)" || {
|
||||
echo "::error::Installation order is incorrect: $INSTALLED"
|
||||
echo "Expected: module-a installed before module-b and module-c"
|
||||
exit 1
|
||||
}
|
||||
|
||||
echo "✓ Linear dependency installation verified"
|
||||
|
||||
# Test PHP module
|
||||
test-php-module:
|
||||
name: PHP Module with Composer
|
||||
@@ -230,15 +112,17 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout action-module-install
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6.0.2
|
||||
with:
|
||||
path: action-module-install
|
||||
|
||||
- name: Clone action-server-install
|
||||
run: |
|
||||
git clone https://git.ktrix.dev/Nodarx/action-server-install action-server-install
|
||||
cd action-server-install
|
||||
git checkout main
|
||||
- name: Checkout action-server-install
|
||||
uses: actions/checkout@v6.0.2
|
||||
with:
|
||||
repository: Nodarx/action-server-install
|
||||
ref: main
|
||||
path: action-server-install
|
||||
github-server-url: https://git.ktrix.dev
|
||||
|
||||
- name: Setup PHP environment
|
||||
uses: ./action-server-install
|
||||
@@ -324,15 +208,17 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout action-module-install
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6.0.2
|
||||
with:
|
||||
path: action-module-install
|
||||
|
||||
- name: Clone action-server-install
|
||||
run: |
|
||||
git clone https://git.ktrix.dev/Nodarx/action-server-install action-server-install
|
||||
cd action-server-install
|
||||
git checkout main
|
||||
- name: Checkout action-server-install
|
||||
uses: actions/checkout@v6.0.2
|
||||
with:
|
||||
repository: Nodarx/action-server-install
|
||||
ref: main
|
||||
path: action-server-install
|
||||
github-server-url: https://git.ktrix.dev
|
||||
|
||||
- name: Setup Node.js environment
|
||||
uses: ./action-server-install
|
||||
@@ -405,15 +291,17 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout action-module-install
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6.0.2
|
||||
with:
|
||||
path: action-module-install
|
||||
|
||||
- name: Clone action-server-install
|
||||
run: |
|
||||
git clone https://git.ktrix.dev/Nodarx/action-server-install action-server-install
|
||||
cd action-server-install
|
||||
git checkout main
|
||||
- name: Checkout action-server-install
|
||||
uses: actions/checkout@v6.0.2
|
||||
with:
|
||||
repository: Nodarx/action-server-install
|
||||
ref: main
|
||||
path: action-server-install
|
||||
github-server-url: https://git.ktrix.dev
|
||||
|
||||
- name: Setup both PHP and Node.js
|
||||
uses: ./action-server-install
|
||||
@@ -486,126 +374,15 @@ jobs:
|
||||
|
||||
echo "✓ Mixed PHP and Node.js modules verified"
|
||||
|
||||
# Test error handling for invalid inputs
|
||||
test-error-handling:
|
||||
name: Error Handling
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout action-module-install
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
path: action-module-install
|
||||
|
||||
- name: Clone action-server-install
|
||||
run: |
|
||||
git clone https://git.ktrix.dev/Nodarx/action-server-install action-server-install
|
||||
cd action-server-install
|
||||
git checkout main
|
||||
|
||||
- name: Setup environment
|
||||
uses: ./action-server-install
|
||||
with:
|
||||
install-php: 'true'
|
||||
install-node: 'true'
|
||||
server-path: './server'
|
||||
|
||||
- name: Test invalid JSON
|
||||
id: test-invalid-json
|
||||
continue-on-error: true
|
||||
uses: ./action-module-install
|
||||
with:
|
||||
modules: 'invalid json string'
|
||||
|
||||
- name: Verify invalid JSON was caught
|
||||
run: |
|
||||
if [ "${{ steps.test-invalid-json.outcome }}" = "success" ]; then
|
||||
echo "::error::Action should have failed with invalid JSON"
|
||||
exit 1
|
||||
fi
|
||||
echo "✓ Invalid JSON properly rejected"
|
||||
|
||||
- name: Test missing dependency
|
||||
id: test-missing-dep
|
||||
continue-on-error: true
|
||||
uses: ./action-module-install
|
||||
with:
|
||||
modules: |
|
||||
[
|
||||
{
|
||||
"name": "module-a",
|
||||
"repo": "file:///tmp/fake",
|
||||
"dependencies": ["non-existent-module"]
|
||||
}
|
||||
]
|
||||
|
||||
- name: Verify missing dependency was caught
|
||||
run: |
|
||||
if [ "${{ steps.test-missing-dep.outcome }}" = "success" ]; then
|
||||
echo "::error::Action should have failed with missing dependency"
|
||||
exit 1
|
||||
fi
|
||||
echo "✓ Missing dependency properly detected"
|
||||
|
||||
- name: Test circular dependency
|
||||
id: test-circular
|
||||
continue-on-error: true
|
||||
run: |
|
||||
# Create repos for circular dependency test
|
||||
mkdir -p /tmp/test-repos/circle-a /tmp/test-repos/circle-b
|
||||
|
||||
cd /tmp/test-repos/circle-a
|
||||
git init
|
||||
git config user.email "test@example.com"
|
||||
git config user.name "Test User"
|
||||
echo '{"name": "circle-a"}' > package.json
|
||||
git add . && git commit -m "Initial"
|
||||
|
||||
cd /tmp/test-repos/circle-b
|
||||
git init
|
||||
git config user.email "test@example.com"
|
||||
git config user.name "Test User"
|
||||
echo '{"name": "circle-b"}' > package.json
|
||||
git add . && git commit -m "Initial"
|
||||
|
||||
- name: Run circular dependency test
|
||||
id: test-circular-run
|
||||
continue-on-error: true
|
||||
uses: ./action-module-install
|
||||
with:
|
||||
modules: |
|
||||
[
|
||||
{
|
||||
"name": "circle-a",
|
||||
"repo": "file:///tmp/test-repos/circle-a",
|
||||
"dependencies": ["circle-b"]
|
||||
},
|
||||
{
|
||||
"name": "circle-b",
|
||||
"repo": "file:///tmp/test-repos/circle-b",
|
||||
"dependencies": ["circle-a"]
|
||||
}
|
||||
]
|
||||
|
||||
- name: Verify circular dependency was caught
|
||||
run: |
|
||||
if [ "${{ steps.test-circular-run.outcome }}" = "success" ]; then
|
||||
echo "::error::Action should have failed with circular dependency"
|
||||
exit 1
|
||||
fi
|
||||
echo "✓ Circular dependency properly detected"
|
||||
|
||||
# Test summary
|
||||
test-summary:
|
||||
name: Test Summary
|
||||
runs-on: ubuntu-latest
|
||||
needs:
|
||||
- test-single-module
|
||||
- test-linear-dependencies
|
||||
- test-php-module
|
||||
- test-node-module
|
||||
- test-mixed-modules
|
||||
- test-error-handling
|
||||
if: always()
|
||||
|
||||
steps:
|
||||
@@ -616,19 +393,15 @@ jobs:
|
||||
echo "| Test | Result |" >> $GITHUB_STEP_SUMMARY
|
||||
echo "|------|--------|" >> $GITHUB_STEP_SUMMARY
|
||||
echo "| Single Module | ${{ needs.test-single-module.result }} |" >> $GITHUB_STEP_SUMMARY
|
||||
echo "| Linear Dependencies | ${{ needs.test-linear-dependencies.result }} |" >> $GITHUB_STEP_SUMMARY
|
||||
echo "| PHP Module | ${{ needs.test-php-module.result }} |" >> $GITHUB_STEP_SUMMARY
|
||||
echo "| Node Module | ${{ needs.test-node-module.result }} |" >> $GITHUB_STEP_SUMMARY
|
||||
echo "| Mixed Modules | ${{ needs.test-mixed-modules.result }} |" >> $GITHUB_STEP_SUMMARY
|
||||
echo "| Error Handling | ${{ needs.test-error-handling.result }} |" >> $GITHUB_STEP_SUMMARY
|
||||
|
||||
# Check if any test failed
|
||||
if [ "${{ needs.test-single-module.result }}" != "success" ] || \
|
||||
[ "${{ needs.test-linear-dependencies.result }}" != "success" ] || \
|
||||
[ "${{ needs.test-php-module.result }}" != "success" ] || \
|
||||
[ "${{ needs.test-node-module.result }}" != "success" ] || \
|
||||
[ "${{ needs.test-mixed-modules.result }}" != "success" ] || \
|
||||
[ "${{ needs.test-error-handling.result }}" != "success" ]; then
|
||||
[ "${{ needs.test-mixed-modules.result }}" != "success" ]; then
|
||||
echo "" >> $GITHUB_STEP_SUMMARY
|
||||
echo "❌ One or more tests failed" >> $GITHUB_STEP_SUMMARY
|
||||
exit 1
|
||||
|
||||
Reference in New Issue
Block a user