Restore testdata-cli with proper CI/CD and tests
Some checks failed
CI / build (push) Has been skipped
CI / test (push) Failing after 12s

This commit is contained in:
Developer
2026-03-22 19:55:51 +00:00
commit da98b8b402
23 changed files with 2511 additions and 0 deletions

135
tests/test_cli.py Normal file
View File

@@ -0,0 +1,135 @@
"""Tests for CLI commands."""
import json
import tempfile
from pathlib import Path
import pytest
from click.testing import CliRunner
from testdatagen.cli import main
class TestCLI:
"""Tests for CLI commands."""
def test_cli_version(self):
"""Test that CLI shows version."""
runner = CliRunner()
result = runner.invoke(main, ["--version"])
assert result.exit_code == 0
assert "0.1.0" in result.output
def test_generate_help(self):
"""Test generate command help."""
runner = CliRunner()
result = runner.invoke(main, ["generate", "--help"])
assert result.exit_code == 0
assert "--schema" in result.output
assert "--count" in result.output
assert "--format" in result.output
def test_from_ts_help(self):
"""Test from-ts command help."""
runner = CliRunner()
result = runner.invoke(main, ["from-ts", "--help"])
assert result.exit_code == 0
assert "--input" in result.output
def test_from_sample_help(self):
"""Test from-sample command help."""
runner = CliRunner()
result = runner.invoke(main, ["from-sample", "--help"])
assert result.exit_code == 0
assert "--input" in result.output
def test_generate_requires_schema(self):
"""Test that generate requires schema option."""
runner = CliRunner()
result = runner.invoke(main, ["generate"])
assert result.exit_code != 0
def test_generate_with_schema(self):
"""Test generate with valid schema."""
runner = CliRunner()
with tempfile.NamedTemporaryFile(mode='w', suffix='.json', delete=False) as f:
json.dump({
"type": "object",
"properties": {
"name": {"type": "string"}
}
}, f)
schema_path = f.name
try:
result = runner.invoke(main, ["generate", "--schema", schema_path, "--count", "1"])
assert result.exit_code == 0
finally:
Path(schema_path).unlink()
def test_generate_csv_format(self):
"""Test generate with CSV format."""
runner = CliRunner()
with tempfile.NamedTemporaryFile(mode='w', suffix='.json', delete=False) as f:
json.dump({
"type": "object",
"properties": {
"name": {"type": "string"}
}
}, f)
schema_path = f.name
try:
result = runner.invoke(main, ["generate", "--schema", schema_path, "--count", "1", "--format", "csv"])
assert result.exit_code == 0
assert "name" in result.output
finally:
Path(schema_path).unlink()
def test_generate_sql_format(self):
"""Test generate with SQL format."""
runner = CliRunner()
with tempfile.NamedTemporaryFile(mode='w', suffix='.json', delete=False) as f:
json.dump({
"type": "object",
"properties": {
"name": {"type": "string"}
}
}, f)
schema_path = f.name
try:
result = runner.invoke(main, ["generate", "--schema", schema_path, "--count", "1", "--format", "sql"])
assert result.exit_code == 0
assert "INSERT" in result.output
finally:
Path(schema_path).unlink()
def test_generate_invalid_json(self):
"""Test generate with invalid JSON schema."""
runner = CliRunner()
with tempfile.NamedTemporaryFile(mode='w', suffix='.json', delete=False) as f:
f.write("{ invalid json }")
schema_path = f.name
try:
result = runner.invoke(main, ["generate", "--schema", schema_path, "--count", "1"])
assert result.exit_code != 0
finally:
Path(schema_path).unlink()
def test_generate_nonexistent_file(self):
"""Test generate with nonexistent schema file."""
runner = CliRunner()
result = runner.invoke(main, ["generate", "--schema", "/nonexistent/path.json"])
assert result.exit_code != 0