mirror of
https://github.com/apache/superset.git
synced 2026-04-20 00:24:38 +00:00
feat(extensions-cli): Add .gitignore generation to init command (#36768)
This commit is contained in:
committed by
GitHub
parent
5920cb57ea
commit
d36ddbbb33
@@ -484,6 +484,11 @@ def init(
|
||||
(target_dir / "extension.json").write_text(extension_json)
|
||||
click.secho("✅ Created extension.json", fg="green")
|
||||
|
||||
# Create .gitignore
|
||||
gitignore = env.get_template(".gitignore.j2").render(ctx)
|
||||
(target_dir / ".gitignore").write_text(gitignore)
|
||||
click.secho("✅ Created .gitignore", fg="green")
|
||||
|
||||
# Initialize frontend files
|
||||
if include_frontend:
|
||||
frontend_dir = target_dir / "frontend"
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
# Dependencies
|
||||
node_modules/
|
||||
|
||||
# Build outputs
|
||||
dist/
|
||||
*.supx
|
||||
|
||||
# Python
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
*.egg-info/
|
||||
.eggs/
|
||||
*.egg
|
||||
.venv/
|
||||
venv/
|
||||
env/
|
||||
ENV/
|
||||
|
||||
# IDE
|
||||
.idea/
|
||||
.vscode/
|
||||
*.swp
|
||||
*.swo
|
||||
|
||||
# OS
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
|
||||
# Logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
|
||||
# Environment
|
||||
.env
|
||||
.env.local
|
||||
@@ -296,10 +296,34 @@ def test_init_command_output_messages(cli_runner, isolated_filesystem, cli_input
|
||||
output = result.output
|
||||
|
||||
# Check for expected success messages
|
||||
assert "✅ Created extension.json" in output
|
||||
assert "✅ Created frontend folder structure" in output
|
||||
assert "✅ Created backend folder structure" in output
|
||||
assert "🎉 Extension Test Extension (ID: test_extension) initialized" in output
|
||||
assert "Created extension.json" in output
|
||||
assert "Created .gitignore" in output
|
||||
assert "Created frontend folder structure" in output
|
||||
assert "Created backend folder structure" in output
|
||||
assert "Extension Test Extension (ID: test_extension) initialized" in output
|
||||
|
||||
|
||||
@pytest.mark.cli
|
||||
def test_gitignore_content_is_correct(cli_runner, isolated_filesystem, cli_input_both):
|
||||
"""Test that the generated .gitignore has the correct content."""
|
||||
result = cli_runner.invoke(app, ["init"], input=cli_input_both)
|
||||
assert result.exit_code == 0
|
||||
|
||||
extension_path = isolated_filesystem / "test_extension"
|
||||
gitignore_path = extension_path / ".gitignore"
|
||||
|
||||
assert_file_exists(gitignore_path, ".gitignore")
|
||||
|
||||
content = gitignore_path.read_text()
|
||||
|
||||
# Verify key patterns are present
|
||||
assert "node_modules/" in content
|
||||
assert "dist/" in content
|
||||
assert "*.supx" in content
|
||||
assert "__pycache__" in content
|
||||
assert ".venv/" in content
|
||||
assert ".DS_Store" in content
|
||||
assert ".env" in content
|
||||
|
||||
|
||||
@pytest.mark.cli
|
||||
|
||||
@@ -191,7 +191,7 @@ def create_test_extension_structure(
|
||||
Dictionary with expected paths and metadata
|
||||
"""
|
||||
extension_path = base_path / id_
|
||||
expected_files = ["extension.json"]
|
||||
expected_files = ["extension.json", ".gitignore"]
|
||||
expected_dirs: list[str] = []
|
||||
|
||||
if include_frontend:
|
||||
|
||||
Reference in New Issue
Block a user