@@ -54,64 +54,29 @@ jobs:
5454 - name : Quick validation tests
5555 if : github.event.inputs.test_intensity == 'quick' || github.event_name == 'pull_request'
5656 run : |
57- echo "🏃 Running quick validation tests..."
58-
59- # Generate small test files
60- python analyzeMFT.py --generate-test-mft quick_test.mft --test-records 20
61-
62- # Test core functionality
63- python analyzeMFT.py -f quick_test.mft -o quick.csv --csv
64- python analyzeMFT.py -f quick_test.mft -o quick.db --sqlite
65-
66- # Basic validation
67- [ -s quick.csv ] && echo "✅ CSV export working"
57+ echo "🏃 Running quick validation tests..." python analyzeMFT.py --generate-test-mft quick_test.mft --test-records 20 python analyzeMFT.py -f quick_test.mft -o quick.csv --csv
58+ python analyzeMFT.py -f quick_test.mft -o quick.db --sqlite [ -s quick.csv ] && echo "✅ CSV export working"
6859 [ -s quick.db ] && echo "✅ SQLite export working"
6960
7061 - name : Standard validation tests
7162 if : github.event.inputs.test_intensity == 'standard' || github.event.inputs.test_intensity == ''
7263 run : |
73- echo "🧪 Running standard validation tests..."
74-
75- # Generate test files
76- python analyzeMFT.py --generate-test-mft std_normal.mft --test-records 100 --test-type normal
77- python analyzeMFT.py --generate-test-mft std_anomaly.mft --test-records 50 --test-type anomaly
78-
79- # Test all export formats
80- python analyzeMFT.py -f std_normal.mft -o std.csv --csv -v
64+ echo "🧪 Running standard validation tests..." python analyzeMFT.py --generate-test-mft std_normal.mft --test-records 100 --test-type normal
65+ python analyzeMFT.py --generate-test-mft std_anomaly.mft --test-records 50 --test-type anomaly python analyzeMFT.py -f std_normal.mft -o std.csv --csv -v
8166 python analyzeMFT.py -f std_normal.mft -o std.json --json -v
8267 python analyzeMFT.py -f std_normal.mft -o std.db --sqlite -v
83- python analyzeMFT.py -f std_normal.mft -o std.xml --xml -v
84-
85- # Test profiles
86- python analyzeMFT.py --list-profiles
68+ python analyzeMFT.py -f std_normal.mft -o std.xml --xml -v python analyzeMFT.py --list-profiles
8769 python analyzeMFT.py -f std_normal.mft -o std_quick.csv --profile quick -v
88- python analyzeMFT.py -f std_normal.mft -o std_forensic.csv --profile forensic -v
89-
90- # Test config
91- python analyzeMFT.py --create-config test_config.json
92- python analyzeMFT.py -f std_normal.mft -o std_config.csv --config test_config.json -v
93-
94- # Test chunking and hashing
95- python analyzeMFT.py -f std_normal.mft -o std_chunk.csv --chunk-size 25 -v
96- python analyzeMFT.py -f std_normal.mft -o std_hash.csv --hash -v
97-
98- # Validate outputs
99- python -c "
100- import csv, json, sqlite3
101- # Validate CSV
102- with open('std.csv') as f :
70+ python analyzeMFT.py -f std_normal.mft -o std_forensic.csv --profile forensic -v python analyzeMFT.py --create-config test_config.json
71+ python analyzeMFT.py -f std_normal.mft -o std_config.csv --config test_config.json -v python analyzeMFT.py -f std_normal.mft -o std_chunk.csv --chunk-size 25 -v
72+ python analyzeMFT.py -f std_normal.mft -o std_hash.csv --hash -v python -c "
73+ import csv, json, sqlite3with open('std.csv') as f :
10374 rows = list(csv.reader(f))
10475 assert len(rows) > 1, 'CSV should have data'
105- print(f'✅ CSV has {len(rows)-1} records')
106-
107- # Validate JSON
108- with open('std.json') as f :
76+ print(f'✅ CSV has {len(rows)-1} records')with open('std.json') as f :
10977 data = json.load(f)
11078 assert len(data) > 0, 'JSON should have data'
111- print(f'✅ JSON has {len(data)} records')
112-
113- # Validate SQLite
114- conn = sqlite3.connect('std.db')
79+ print(f'✅ JSON has {len(data)} records')conn = sqlite3.connect('std.db')
11580cursor = conn.cursor()
11681cursor.execute('SELECT COUNT(*) FROM mft_records')
11782count = cursor.fetchone()[0]
@@ -123,14 +88,8 @@ conn.close()
12388 - name: Comprehensive validation tests
12489 if: github.event.inputs.test_intensity == 'comprehensive'
12590 run: |
126- echo " 🔬 Running comprehensive validation tests..."
127-
128- # Generate larger test files
129- python analyzeMFT.py --generate-test-mft comp_normal.mft --test-records 500 --test-type normal
130- python analyzeMFT.py --generate-test-mft comp_anomaly.mft --test-records 200 --test-type anomaly
131-
132- # Test all export formats with both files
133- for format in csv json xml sqlite body timeline tsk; do
91+ echo " 🔬 Running comprehensive validation tests..." python analyzeMFT.py --generate-test-mft comp_normal.mft --test-records 500 --test-type normal
92+ python analyzeMFT.py --generate-test-mft comp_anomaly.mft --test-records 200 --test-type anomaly for format in csv json xml sqlite body timeline tsk; do
13493 echo "Testing $format format..."
13594 case $format in
13695 csv) flag="--csv" ;;
@@ -144,18 +103,12 @@ conn.close()
144103
145104 python analyzeMFT.py -f comp_normal.mft -o "comp_normal.$format" $flag -v
146105 python analyzeMFT.py -f comp_anomaly.mft -o "comp_anomaly.$format" $flag -v
147- done
148-
149- # Test all profiles with different chunk sizes
150- for profile in default quick forensic performance; do
106+ done for profile in default quick forensic performance; do
151107 for chunk in 10 50 100; do
152108 echo "Testing profile $profile with chunk size $chunk..."
153109 python analyzeMFT.py -f comp_normal.mft -o "comp_${profile}_${chunk}.csv" --profile $profile --chunk-size $chunk -v
154110 done
155- done
156-
157- # Memory and performance test
158- echo "Running performance test..."
111+ done echo "Running performance test..."
159112 python -c "
160113import time, subprocess, os
161114start = time.time()
@@ -167,17 +120,8 @@ print(f'⚡ Processed {size} bytes in {duration:.2f}s ({500/duration:.1f} rec/s)
167120
168121 - name: Security and error handling tests
169122 run: |
170- echo " 🔒 Running security and error handling tests..."
171-
172- # Test with invalid inputs
173- python analyzeMFT.py -f nonexistent.mft -o error.csv 2>&1 | grep -q "Error\|No such file" && echo "✅ Proper error handling for missing files"
174-
175- # Test with invalid MFT data
176- echo "Invalid MFT data" > invalid.mft
177- python analyzeMFT.py -f invalid.mft -o invalid.csv 2>&1 | grep -q "Error\|Invalid" && echo "✅ Proper error handling for invalid MFT files"
178-
179- # Test permission handling
180- touch readonly.mft
123+ echo " 🔒 Running security and error handling tests..." python analyzeMFT.py -f nonexistent.mft -o error.csv 2>&1 | grep -q "Error\|No such file" && echo "✅ Proper error handling for missing files" echo "Invalid MFT data" > invalid.mft
124+ python analyzeMFT.py -f invalid.mft -o invalid.csv 2>&1 | grep -q "Error\|Invalid" && echo "✅ Proper error handling for invalid MFT files" touch readonly.mft
181125 chmod 000 readonly.mft 2>/dev/null || echo "Skipping permission test on this platform"
182126 python analyzeMFT.py -f readonly.mft -o readonly.csv 2>&1 | grep -q "Error\|Permission" && echo "✅ Proper error handling for permission issues" || echo "⚠️ Permission test skipped"
183127 chmod 644 readonly.mft 2>/dev/null || true
@@ -271,39 +215,16 @@ print(f'⚡ Processed {size} bytes in {duration:.2f}s ({500/duration:.1f} rec/s)
271215 run : |
272216 gh release create "v${{ needs.pre-release-tests.outputs.version }}" \
273217 --title "Release v${{ needs.pre-release-tests.outputs.version }}" \
274- --notes "## analyzeMFT v${{ needs.pre-release-tests.outputs.version }}
275-
276- ### ✨ What's New
277- - Automated release with comprehensive testing
278- - All functionality validated across multiple platforms
279-
280- ### 🧪 Test Results
281- - ✅ All export formats working (CSV, JSON, XML, SQLite, Body, Timeline, TSK)
218+ --notes "## analyzeMFT v${{ needs.pre-release-tests.outputs.version }} - Automated release with comprehensive testing
219+ - All functionality validated across multiple platforms - ✅ All export formats working (CSV, JSON, XML, SQLite, Body, Timeline, TSK)
282220 - ✅ All analysis profiles working (Default, Quick, Forensic, Performance)
283221 - ✅ Configuration system working
284222 - ✅ Chunked processing working
285223 - ✅ Hash computation working
286224 - ✅ Error handling working
287- - ✅ Cross-platform compatibility verified
288-
289- ### 📦 Installation
290- \`\`\`bash
225+ - ✅ Cross-platform compatibility verified \`\`\`bash
291226 pip install analyzeMFT
292- \`\`\`
293-
294- ### 🚀 Quick Start
295- \`\`\`bash
296- # Generate test MFT file
297- python analyzeMFT.py --generate-test-mft test.mft --test-records 100
298-
299- # Analyze and export to CSV
300- python analyzeMFT.py -f test.mft -o output.csv --csv -v
301-
302- # Analyze and export to SQLite database
303- python analyzeMFT.py -f test.mft -o output.db --sqlite -v
304-
305- # Use forensic analysis profile
306- python analyzeMFT.py -f test.mft -o forensic.csv --profile forensic -v
227+ \`\`\` \`\`\`bash python analyzeMFT.py --generate-test-mft test.mft --test-records 100 python analyzeMFT.py -f test.mft -o output.csv --csv -v python analyzeMFT.py -f test.mft -o output.db --sqlite -v python analyzeMFT.py -f test.mft -o forensic.csv --profile forensic -v
307228 \`\`\`"
308229 env :
309230 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
0 commit comments