@@ -94,45 +94,12 @@ jobs:
9494 .build/release/swift-dependency-audit
9595 retention-days : 7
9696
97- test-cross-platform :
98- name : Test Cross-Platform Docker Builds
99- runs-on : ubuntu-latest
100- if : github.event_name == 'push' || github.event_name == 'pull_request'
101- strategy :
102- fail-fast : false
103- matrix :
104- arch : [x86_64, aarch64]
105-
106- steps :
107- - name : Checkout code
108- uses : actions/checkout@v4
109-
110- - name : Set up Docker Buildx
111- uses : docker/setup-buildx-action@v3
112-
113- - name : Test Docker build for ${{ matrix.arch }}
114- run : |
115- # Test the same Docker build process used in releases
116- docker run --rm \
117- --platform linux/${{ matrix.arch == 'x86_64' && 'amd64' || 'arm64' }} \
118- -v $PWD:/workspace \
119- -w /workspace \
120- swift:6.1 \
121- bash -c "
122- echo 'Testing Swift ${{ matrix.arch }} build...' && \
123- swift --version && \
124- swift build -c release --triple ${{ matrix.arch }}-unknown-linux-gnu && \
125- echo 'Build successful for ${{ matrix.arch }}' && \
126- ls -la .build/${{ matrix.arch }}-unknown-linux-gnu/release/swift-dependency-audit
127- "
128-
129- - name : Upload Docker build artifacts
130- uses : actions/upload-artifact@v4
131- with :
132- name : docker-build-${{ matrix.arch }}
133- path : |
134- .build/${{ matrix.arch }}-unknown-linux-gnu/release/swift-dependency-audit
135- retention-days : 7
97+ test-docker-builds :
98+ name : Test Docker Builds
99+ uses : ./.github/workflows/docker.yml
100+ with :
101+ upload_artifacts : true
102+ artifact_retention_days : 7
136103
137104 lint :
138105 name : Lint and Format Check
@@ -174,3 +141,58 @@ jobs:
174141 grep "warning:" build.log
175142 exit 1
176143 fi
144+
145+ validate-functionality :
146+ name : Validate Build Functionality
147+ runs-on : macos-15
148+ needs : [test, test-docker-builds]
149+ steps :
150+ - name : Checkout code
151+ uses : actions/checkout@v4
152+
153+ - name : Select Xcode version
154+ run : sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer
155+
156+ - name : Cache Swift Package Manager
157+ uses : actions/cache@v4
158+ with :
159+ path : |
160+ .build
161+ ~/.cache/org.swift.swiftpm
162+ key : ${{ runner.os }}-spm-validation-${{ hashFiles('Package.swift', 'Package.resolved') }}
163+ restore-keys : |
164+ ${{ runner.os }}-spm-validation-
165+ ${{ runner.os }}-spm-
166+
167+ - name : Build release binary
168+ run : swift build --configuration release
169+
170+ - name : Comprehensive CLI validation
171+ run : |
172+ echo "=== Testing CLI Help and Version ==="
173+ .build/release/swift-dependency-audit --help
174+ .build/release/swift-dependency-audit --version
175+
176+ echo "=== Testing Self-Analysis ==="
177+ .build/release/swift-dependency-audit . --verbose --exclude-tests
178+
179+ echo "=== Testing JSON Output ==="
180+ .build/release/swift-dependency-audit . --json --no-color > output.json
181+ cat output.json | python3 -m json.tool > /dev/null || (echo "❌ Invalid JSON output" && exit 1)
182+ echo "✅ JSON output is valid"
183+
184+ echo "=== Testing Xcode Output Format ==="
185+ .build/release/swift-dependency-audit . --output-format xcode --quiet
186+
187+ echo "=== Testing GitHub Actions Output Format ==="
188+ .build/release/swift-dependency-audit . --output-format github-actions --quiet
189+
190+ echo "=== Testing Custom Whitelist ==="
191+ .build/release/swift-dependency-audit . --whitelist "Foundation,SwiftUI,ArgumentParser" --verbose
192+
193+ - name : Plugin functionality validation
194+ run : |
195+ echo "=== Testing Plugin Integration ==="
196+ # Test that the plugin can be loaded
197+ swift package plugin --list | grep -q "DependencyAuditPlugin" || (echo "❌ Plugin not found" && exit 1)
198+ echo "✅ Plugin is properly registered"
0 commit comments