37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
#!/usr/bin/env python3
|
|
"""Test that linecount_pycount.py produces correct output."""
|
|
|
|
import subprocess
|
|
import sys
|
|
|
|
def test_linecount():
|
|
# Test on fibonacci.py which we know has 49 total lines
|
|
result = subprocess.run(
|
|
['python3', 'linecount_pycount.py', 'fibonacci.py'],
|
|
capture_output=True,
|
|
text=True
|
|
)
|
|
|
|
print("Output:", result.stdout)
|
|
print("Exit code:", result.returncode)
|
|
|
|
# Parse output
|
|
lines = result.stdout.strip().split('\n')
|
|
total_line = [l for l in lines if l.startswith('Total lines:')]
|
|
code_line = [l for l in lines if l.startswith('Python code lines:')]
|
|
|
|
assert total_line, "Missing 'Total lines:' output"
|
|
assert code_line, "Missing 'Python code lines:' output"
|
|
|
|
total = int(total_line[0].split(':')[1].strip())
|
|
code = int(code_line[0].split(':')[1].strip())
|
|
|
|
# fibonacci.py has 49 lines, 40 code lines
|
|
assert total == 49, f"Expected 49 total lines, got {total}"
|
|
assert code == 40, f"Expected 40 code lines, got {code}"
|
|
|
|
print("TEST PASSED: linecount_pycount.py correctly counts lines")
|
|
return 0
|
|
|
|
if __name__ == '__main__':
|
|
sys.exit(test_linecount()) |