kopia lustrzana https://github.com/simonw/datasette
Try passing a directory to isolated_filesystem(), refs #1406
rodzic
74b775e20f
commit
e55cd9dc3f
|
@ -2,7 +2,6 @@ from click.testing import CliRunner
|
|||
from datasette import cli
|
||||
from unittest import mock
|
||||
import pathlib
|
||||
import pytest
|
||||
|
||||
|
||||
class CaptureDockerfile:
|
||||
|
@ -24,15 +23,14 @@ CMD datasette serve --host 0.0.0.0 -i test.db --cors --inspect-file inspect-data
|
|||
""".strip()
|
||||
|
||||
|
||||
@pytest.mark.serial
|
||||
@mock.patch("shutil.which")
|
||||
@mock.patch("datasette.cli.call")
|
||||
def test_package(mock_call, mock_which):
|
||||
def test_package(mock_call, mock_which, tmp_path_factory):
|
||||
mock_which.return_value = True
|
||||
runner = CliRunner()
|
||||
capture = CaptureDockerfile()
|
||||
mock_call.side_effect = capture
|
||||
with runner.isolated_filesystem():
|
||||
with runner.isolated_filesystem(tmp_path_factory.mktemp("runner")):
|
||||
with open("test.db", "w") as fp:
|
||||
fp.write("data")
|
||||
result = runner.invoke(cli.cli, ["package", "test.db", "--secret", "sekrit"])
|
||||
|
@ -43,12 +41,12 @@ def test_package(mock_call, mock_which):
|
|||
|
||||
@mock.patch("shutil.which")
|
||||
@mock.patch("datasette.cli.call")
|
||||
def test_package_with_port(mock_call, mock_which):
|
||||
def test_package_with_port(mock_call, mock_which, tmp_path_factory):
|
||||
mock_which.return_value = True
|
||||
capture = CaptureDockerfile()
|
||||
mock_call.side_effect = capture
|
||||
runner = CliRunner()
|
||||
with runner.isolated_filesystem():
|
||||
with runner.isolated_filesystem(tmp_path_factory.mktemp("runner")):
|
||||
with open("test.db", "w") as fp:
|
||||
fp.write("data")
|
||||
result = runner.invoke(
|
||||
|
|
|
@ -6,12 +6,11 @@ import pytest
|
|||
import textwrap
|
||||
|
||||
|
||||
@pytest.mark.serial
|
||||
@mock.patch("shutil.which")
|
||||
def test_publish_cloudrun_requires_gcloud(mock_which):
|
||||
def test_publish_cloudrun_requires_gcloud(mock_which, tmp_path_factory):
|
||||
mock_which.return_value = False
|
||||
runner = CliRunner()
|
||||
with runner.isolated_filesystem():
|
||||
with runner.isolated_filesystem(tmp_path_factory.mktemp("runner")):
|
||||
with open("test.db", "w") as fp:
|
||||
fp.write("data")
|
||||
result = runner.invoke(cli.cli, ["publish", "cloudrun", "test.db"])
|
||||
|
@ -28,13 +27,12 @@ def test_publish_cloudrun_invalid_database(mock_which):
|
|||
assert "Path 'woop.db' does not exist" in result.output
|
||||
|
||||
|
||||
@pytest.mark.serial
|
||||
@mock.patch("shutil.which")
|
||||
@mock.patch("datasette.publish.cloudrun.check_output")
|
||||
@mock.patch("datasette.publish.cloudrun.check_call")
|
||||
@mock.patch("datasette.publish.cloudrun.get_existing_services")
|
||||
def test_publish_cloudrun_prompts_for_service(
|
||||
mock_get_existing_services, mock_call, mock_output, mock_which
|
||||
mock_get_existing_services, mock_call, mock_output, mock_which, tmp_path_factory
|
||||
):
|
||||
mock_get_existing_services.return_value = [
|
||||
{"name": "existing", "created": "2019-01-01", "url": "http://www.example.com/"}
|
||||
|
@ -42,7 +40,7 @@ def test_publish_cloudrun_prompts_for_service(
|
|||
mock_output.return_value = "myproject"
|
||||
mock_which.return_value = True
|
||||
runner = CliRunner()
|
||||
with runner.isolated_filesystem():
|
||||
with runner.isolated_filesystem(tmp_path_factory.mktemp("runner")):
|
||||
with open("test.db", "w") as fp:
|
||||
fp.write("data")
|
||||
result = runner.invoke(
|
||||
|
@ -77,15 +75,14 @@ Service name: input-service
|
|||
)
|
||||
|
||||
|
||||
@pytest.mark.serial
|
||||
@mock.patch("shutil.which")
|
||||
@mock.patch("datasette.publish.cloudrun.check_output")
|
||||
@mock.patch("datasette.publish.cloudrun.check_call")
|
||||
def test_publish_cloudrun(mock_call, mock_output, mock_which):
|
||||
def test_publish_cloudrun(mock_call, mock_output, mock_which, tmp_path_factory):
|
||||
mock_output.return_value = "myproject"
|
||||
mock_which.return_value = True
|
||||
runner = CliRunner()
|
||||
with runner.isolated_filesystem():
|
||||
with runner.isolated_filesystem(tmp_path_factory.mktemp("runner")):
|
||||
with open("test.db", "w") as fp:
|
||||
fp.write("data")
|
||||
result = runner.invoke(
|
||||
|
@ -106,7 +103,6 @@ def test_publish_cloudrun(mock_call, mock_output, mock_which):
|
|||
)
|
||||
|
||||
|
||||
@pytest.mark.serial
|
||||
@mock.patch("shutil.which")
|
||||
@mock.patch("datasette.publish.cloudrun.check_output")
|
||||
@mock.patch("datasette.publish.cloudrun.check_call")
|
||||
|
@ -121,12 +117,12 @@ def test_publish_cloudrun(mock_call, mock_output, mock_which):
|
|||
],
|
||||
)
|
||||
def test_publish_cloudrun_memory(
|
||||
mock_call, mock_output, mock_which, memory, should_fail
|
||||
mock_call, mock_output, mock_which, memory, should_fail, tmp_path_factory
|
||||
):
|
||||
mock_output.return_value = "myproject"
|
||||
mock_which.return_value = True
|
||||
runner = CliRunner()
|
||||
with runner.isolated_filesystem():
|
||||
with runner.isolated_filesystem(tmp_path_factory.mktemp("runner")):
|
||||
with open("test.db", "w") as fp:
|
||||
fp.write("data")
|
||||
result = runner.invoke(
|
||||
|
@ -151,16 +147,17 @@ def test_publish_cloudrun_memory(
|
|||
)
|
||||
|
||||
|
||||
@pytest.mark.serial
|
||||
@mock.patch("shutil.which")
|
||||
@mock.patch("datasette.publish.cloudrun.check_output")
|
||||
@mock.patch("datasette.publish.cloudrun.check_call")
|
||||
def test_publish_cloudrun_plugin_secrets(mock_call, mock_output, mock_which):
|
||||
def test_publish_cloudrun_plugin_secrets(
|
||||
mock_call, mock_output, mock_which, tmp_path_factory
|
||||
):
|
||||
mock_which.return_value = True
|
||||
mock_output.return_value = "myproject"
|
||||
|
||||
runner = CliRunner()
|
||||
with runner.isolated_filesystem():
|
||||
with runner.isolated_filesystem(tmp_path_factory.mktemp("runner")):
|
||||
with open("test.db", "w") as fp:
|
||||
fp.write("data")
|
||||
with open("metadata.yml", "w") as fp:
|
||||
|
@ -230,16 +227,17 @@ def test_publish_cloudrun_plugin_secrets(mock_call, mock_output, mock_which):
|
|||
} == json.loads(metadata)
|
||||
|
||||
|
||||
@pytest.mark.serial
|
||||
@mock.patch("shutil.which")
|
||||
@mock.patch("datasette.publish.cloudrun.check_output")
|
||||
@mock.patch("datasette.publish.cloudrun.check_call")
|
||||
def test_publish_cloudrun_apt_get_install(mock_call, mock_output, mock_which):
|
||||
def test_publish_cloudrun_apt_get_install(
|
||||
mock_call, mock_output, mock_which, tmp_path_factory
|
||||
):
|
||||
mock_which.return_value = True
|
||||
mock_output.return_value = "myproject"
|
||||
|
||||
runner = CliRunner()
|
||||
with runner.isolated_filesystem():
|
||||
with runner.isolated_filesystem(tmp_path_factory.mktemp("runner")):
|
||||
with open("test.db", "w") as fp:
|
||||
fp.write("data")
|
||||
result = runner.invoke(
|
||||
|
@ -286,7 +284,6 @@ def test_publish_cloudrun_apt_get_install(mock_call, mock_output, mock_which):
|
|||
assert expected == dockerfile
|
||||
|
||||
|
||||
@pytest.mark.serial
|
||||
@mock.patch("shutil.which")
|
||||
@mock.patch("datasette.publish.cloudrun.check_output")
|
||||
@mock.patch("datasette.publish.cloudrun.check_call")
|
||||
|
@ -302,13 +299,13 @@ def test_publish_cloudrun_apt_get_install(mock_call, mock_output, mock_which):
|
|||
],
|
||||
)
|
||||
def test_publish_cloudrun_extra_options(
|
||||
mock_call, mock_output, mock_which, extra_options, expected
|
||||
mock_call, mock_output, mock_which, extra_options, expected, tmp_path_factory
|
||||
):
|
||||
mock_which.return_value = True
|
||||
mock_output.return_value = "myproject"
|
||||
|
||||
runner = CliRunner()
|
||||
with runner.isolated_filesystem():
|
||||
with runner.isolated_filesystem(tmp_path_factory.mktemp("runner")):
|
||||
with open("test.db", "w") as fp:
|
||||
fp.write("data")
|
||||
result = runner.invoke(
|
||||
|
|
|
@ -1,15 +1,13 @@
|
|||
from click.testing import CliRunner
|
||||
from datasette import cli
|
||||
from unittest import mock
|
||||
import pytest
|
||||
|
||||
|
||||
@pytest.mark.serial
|
||||
@mock.patch("shutil.which")
|
||||
def test_publish_heroku_requires_heroku(mock_which):
|
||||
def test_publish_heroku_requires_heroku(mock_which, tmp_path_factory):
|
||||
mock_which.return_value = False
|
||||
runner = CliRunner()
|
||||
with runner.isolated_filesystem():
|
||||
with runner.isolated_filesystem(tmp_path_factory.mktemp("runner")):
|
||||
with open("test.db", "w") as fp:
|
||||
fp.write("data")
|
||||
result = runner.invoke(cli.cli, ["publish", "heroku", "test.db"])
|
||||
|
@ -17,15 +15,16 @@ def test_publish_heroku_requires_heroku(mock_which):
|
|||
assert "Publishing to Heroku requires heroku" in result.output
|
||||
|
||||
|
||||
@pytest.mark.serial
|
||||
@mock.patch("shutil.which")
|
||||
@mock.patch("datasette.publish.heroku.check_output")
|
||||
@mock.patch("datasette.publish.heroku.call")
|
||||
def test_publish_heroku_installs_plugin(mock_call, mock_check_output, mock_which):
|
||||
def test_publish_heroku_installs_plugin(
|
||||
mock_call, mock_check_output, mock_which, tmp_path_factory
|
||||
):
|
||||
mock_which.return_value = True
|
||||
mock_check_output.side_effect = lambda s: {"['heroku', 'plugins']": b""}[repr(s)]
|
||||
runner = CliRunner()
|
||||
with runner.isolated_filesystem():
|
||||
with runner.isolated_filesystem(tmp_path_factory.mktemp("runner")):
|
||||
with open("t.db", "w") as fp:
|
||||
fp.write("data")
|
||||
result = runner.invoke(cli.cli, ["publish", "heroku", "t.db"], input="y\n")
|
||||
|
@ -47,11 +46,10 @@ def test_publish_heroku_invalid_database(mock_which):
|
|||
assert "Path 'woop.db' does not exist" in result.output
|
||||
|
||||
|
||||
@pytest.mark.serial
|
||||
@mock.patch("shutil.which")
|
||||
@mock.patch("datasette.publish.heroku.check_output")
|
||||
@mock.patch("datasette.publish.heroku.call")
|
||||
def test_publish_heroku(mock_call, mock_check_output, mock_which):
|
||||
def test_publish_heroku(mock_call, mock_check_output, mock_which, tmp_path_factory):
|
||||
mock_which.return_value = True
|
||||
mock_check_output.side_effect = lambda s: {
|
||||
"['heroku', 'plugins']": b"heroku-builds",
|
||||
|
@ -59,7 +57,7 @@ def test_publish_heroku(mock_call, mock_check_output, mock_which):
|
|||
"['heroku', 'apps:create', 'datasette', '--json']": b'{"name": "f"}',
|
||||
}[repr(s)]
|
||||
runner = CliRunner()
|
||||
with runner.isolated_filesystem():
|
||||
with runner.isolated_filesystem(tmp_path_factory.mktemp("runner")):
|
||||
with open("test.db", "w") as fp:
|
||||
fp.write("data")
|
||||
result = runner.invoke(
|
||||
|
@ -83,11 +81,12 @@ def test_publish_heroku(mock_call, mock_check_output, mock_which):
|
|||
)
|
||||
|
||||
|
||||
@pytest.mark.serial
|
||||
@mock.patch("shutil.which")
|
||||
@mock.patch("datasette.publish.heroku.check_output")
|
||||
@mock.patch("datasette.publish.heroku.call")
|
||||
def test_publish_heroku_plugin_secrets(mock_call, mock_check_output, mock_which):
|
||||
def test_publish_heroku_plugin_secrets(
|
||||
mock_call, mock_check_output, mock_which, tmp_path_factory
|
||||
):
|
||||
mock_which.return_value = True
|
||||
mock_check_output.side_effect = lambda s: {
|
||||
"['heroku', 'plugins']": b"heroku-builds",
|
||||
|
@ -95,7 +94,7 @@ def test_publish_heroku_plugin_secrets(mock_call, mock_check_output, mock_which)
|
|||
"['heroku', 'apps:create', 'datasette', '--json']": b'{"name": "f"}',
|
||||
}[repr(s)]
|
||||
runner = CliRunner()
|
||||
with runner.isolated_filesystem():
|
||||
with runner.isolated_filesystem(tmp_path_factory.mktemp("runner")):
|
||||
with open("test.db", "w") as fp:
|
||||
fp.write("data")
|
||||
result = runner.invoke(
|
||||
|
|
Ładowanie…
Reference in New Issue