1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166
|
import pytest
from briefcase.commands.create import Git
from briefcase.exceptions import BriefcaseCommandError
def test_no_git(update_command, monkeypatch):
"""If Git is not installed, an error is raised."""
def monkeypatch_verify_git(*a, **kw):
raise BriefcaseCommandError("Briefcase requires git, but it is not installed")
monkeypatch.setattr(Git, "verify", monkeypatch_verify_git)
# The command will fail tool verification.
with pytest.raises(
BriefcaseCommandError, match=r"Briefcase requires git, but it is not installed"
):
update_command()
def test_update(update_command, first_app, second_app):
"""The update command can be called."""
# Configure no command line options
options, _ = update_command.parse_options([])
update_command(**options)
# The right sequence of things will be done
assert update_command.actions == [
# Host OS is verified
("verify-host",),
# Tools are verified
("verify-tools",),
# App configs have been finalized
("finalize-app-config", "first"),
("finalize-app-config", "second"),
# Update the first app
("verify-app-template", "first"),
("verify-app-tools", "first"),
("code", "first", False),
("cleanup", "first"),
# Update the second app
("verify-app-template", "second"),
("verify-app-tools", "second"),
("code", "second", False),
("cleanup", "second"),
]
def test_update_single(update_command, first_app, second_app):
"""The update command can be called to update a single app from the config."""
# Configure no command line options
options, _ = update_command.parse_options([])
update_command(app=update_command.apps["first"], **options)
# The right sequence of things will be done
assert update_command.actions == [
# Host OS is verified
("verify-host",),
# Tools are verified
("verify-tools",),
# App config has been finalized
("finalize-app-config", "first"),
# update the first app
("verify-app-template", "first"),
("verify-app-tools", "first"),
("code", "first", False),
("cleanup", "first"),
]
def test_update_with_requirements(update_command, first_app, second_app):
"""The update command can be called, requesting a requirements update."""
# Configure a requirements update
options, _ = update_command.parse_options(["-r"])
update_command(**options)
# The right sequence of things will be done
assert update_command.actions == [
# Host OS is verified
("verify-host",),
# Tools are verified
("verify-tools",),
# App configs have been finalized
("finalize-app-config", "first"),
("finalize-app-config", "second"),
# Update the first app
("verify-app-template", "first"),
("verify-app-tools", "first"),
("code", "first", False),
("requirements", "first", False),
("cleanup", "first"),
# Update the second app
("verify-app-template", "second"),
("verify-app-tools", "second"),
("code", "second", False),
("requirements", "second", False),
("cleanup", "second"),
]
def test_update_with_resources(update_command, first_app, second_app):
"""The update command can be called, requesting a resources update."""
# Configure no command line options
options, _ = update_command.parse_options(["--update-resources"])
update_command(**options)
# The right sequence of things will be done
assert update_command.actions == [
# Host OS is verified
("verify-host",),
# Tools are verified
("verify-tools",),
# App configs have been finalized
("finalize-app-config", "first"),
("finalize-app-config", "second"),
# Update the first app
("verify-app-template", "first"),
("verify-app-tools", "first"),
("code", "first", False),
("resources", "first"),
("cleanup", "first"),
# Update the second app
("verify-app-template", "second"),
("verify-app-tools", "second"),
("code", "second", False),
("resources", "second"),
("cleanup", "second"),
]
def test_update_with_support(update_command, first_app, second_app):
"""The update command can be called, requesting an app support update."""
# Configure no command line options
options, _ = update_command.parse_options(["--update-support"])
update_command(**options)
# The right sequence of things will be done
assert update_command.actions == [
# Host OS is verified
("verify-host",),
# Tools are verified
("verify-tools",),
# App configs have been finalized
("finalize-app-config", "first"),
("finalize-app-config", "second"),
# Update the first app
("verify-app-template", "first"),
("verify-app-tools", "first"),
("code", "first", False),
("cleanup-support", "first"),
("support", "first"),
("cleanup", "first"),
# Update the second app
("verify-app-template", "second"),
("verify-app-tools", "second"),
("code", "second", False),
("cleanup-support", "second"),
("support", "second"),
("cleanup", "second"),
]
|