Skip to content

Commit

Permalink
command/new: make readme format configurable
Browse files Browse the repository at this point in the history
This change makes readme formant configurable, defaulting to markdown
when using the new command.

Resolves: python-poetry#280
Closes: python-poetry#1515

Co-authored-by: Arun Babu Neelicattu <arun.neelicattu@gmail.com>
  • Loading branch information
finswimmer and abn committed Apr 10, 2021
1 parent 7ce029e commit 152d720
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 14 deletions.
5 changes: 3 additions & 2 deletions docs/docs/cli.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ will create a folder as follows:
```text
my-package
├── pyproject.toml
├── README.rst
├── README.md
├── my_package
│ └── __init__.py
└── tests
Expand All @@ -56,7 +56,7 @@ That will create a folder structure as follows:
```text
my-package
├── pyproject.toml
├── README.rst
├── README.md
├── src
│ └── my_package
│ └── __init__.py
Expand All @@ -76,6 +76,7 @@ will create the following structure:
```text
my-package
├── pyproject.toml
├── README.md
├── src
│ └── my
│ └── package
Expand Down
8 changes: 7 additions & 1 deletion poetry/console/commands/new.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,12 @@ class NewCommand(Command):
options = [
option("name", None, "Set the resulting package name.", flag=False),
option("src", None, "Use the src layout for the project."),
option(
"readme",
None,
"Specify the readme file format. One of md (default) or rst",
flag=False,
),
]

def handle(self) -> None:
Expand Down Expand Up @@ -46,7 +52,7 @@ def handle(self) -> None:
"exists and is not empty".format(path)
)

readme_format = "rst"
readme_format = self.option("readme") or "md"

config = GitConfig()
author = None
Expand Down
35 changes: 24 additions & 11 deletions tests/console/commands/test_new.py
Original file line number Diff line number Diff line change
@@ -1,21 +1,20 @@
import pytest
from pathlib import Path
from typing import Optional

from cleo.testers import CommandTester
import pytest

from poetry.console import Application
from poetry.factory import Factory
from poetry.poetry import Poetry
from poetry.utils._compat import Path # noqa


@pytest.fixture
def command(app, poetry): # type: (Application, Poetry) -> CommandTester
command = app.find("new")
command._pool = poetry.pool
return CommandTester(command)
def tester(command_tester_factory):
return command_tester_factory("new")


def verify_project_directory(path, package_name, package_path, include_from=None):
def verify_project_directory(
path: Path, package_name: str, package_path: str, include_from: Optional[str] = None
) -> Poetry:
package_path = Path(package_path)
assert path.is_dir()

Expand Down Expand Up @@ -47,6 +46,8 @@ def verify_project_directory(path, package_name, package_path, include_from=None
assert len(packages) == 1
assert packages[0] == package_include

return poetry


@pytest.mark.parametrize(
"options,directory,package_name,package_path,include_from",
Expand Down Expand Up @@ -134,9 +135,21 @@ def verify_project_directory(path, package_name, package_path, include_from=None
],
)
def test_command_new(
options, directory, package_name, package_path, include_from, command, tmp_dir
options, directory, package_name, package_path, include_from, tester, tmp_dir
):
path = Path(tmp_dir) / directory
options.append(path.as_posix())
command.execute(" ".join(options))
tester.execute(" ".join(options))
verify_project_directory(path, package_name, package_path, include_from)


@pytest.mark.parametrize("fmt", [(None,), ("md",), ("rst",)])
def test_command_new_with_readme(fmt, tester, tmp_dir):
fmt = "md"
package = "package"
path = Path(tmp_dir) / package
options = ["--readme {}".format(fmt) if fmt else "md", path.as_posix()]
tester.execute(" ".join(options))

poetry = verify_project_directory(path, package, package, None)
assert poetry.local_config.get("readme") == "README.{}".format(fmt or "md")

0 comments on commit 152d720

Please sign in to comment.