File: test_call.py

package info (click to toggle)
python-briefcase 0.3.22-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 7,300 kB
  • sloc: python: 59,405; makefile: 57
file content (134 lines) | stat: -rw-r--r-- 4,440 bytes parent folder | download | duplicates (2)
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
import pytest

from briefcase.exceptions import BriefcaseCommandError


def test_publish(publish_command, first_app, second_app):
    """If there are multiple apps, publish all of them."""
    # Add two apps
    publish_command.apps = {
        "first": first_app,
        "second": second_app,
    }

    # Configure no command line options
    options, _ = publish_command.parse_options([])

    # Run the publish command
    publish_command(**options)

    # The right sequence of things will be done
    assert publish_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"),
        # App template is verified for first app
        ("verify-app-template", "first"),
        # App tools are verified for first app
        ("verify-app-tools", "first"),
        # Publish the first app to s3
        ("publish", "first", "s3", {}),
        # App template is verified for second app
        ("verify-app-template", "second"),
        # App tools are verified for second app
        ("verify-app-tools", "second"),
        # Publish the second app to s3
        ("publish", "second", "s3", {"publish_state": "first"}),
    ]


def test_publish_alternative_channel(publish_command, first_app, second_app):
    """Apps can be published to an alternate channel."""
    # Add two apps
    publish_command.apps = {
        "first": first_app,
        "second": second_app,
    }

    # Configure no command line options
    options, _ = publish_command.parse_options(["-c", "alternative"])

    # Run the publish command
    publish_command(**options)

    # The right sequence of things will be done
    assert publish_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"),
        # App template is verified for first app
        ("verify-app-template", "first"),
        # App tools are verified for first app
        ("verify-app-tools", "first"),
        # Publish the first app to the alternative channel
        ("publish", "first", "alternative", {}),
        # App template is verified for second app
        ("verify-app-template", "second"),
        # App tools are verified for second app
        ("verify-app-tools", "second"),
        # Publish the second app to the alternative channel
        ("publish", "second", "alternative", {"publish_state": "first"}),
    ]


def test_non_existent(publish_command, first_app_config, second_app):
    """Requesting a publish of a non-existent app raises an error."""
    # Add two apps; use the "config only" version of the first app.
    publish_command.apps = {
        "first": first_app_config,
        "second": second_app,
    }

    # Configure no command line options
    options, _ = publish_command.parse_options([])

    # Invoking the publish command raises an error
    with pytest.raises(BriefcaseCommandError):
        publish_command(**options)

    # Only verification will be performed
    assert publish_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"),
    ]


def test_unbuilt(publish_command, first_app_unbuilt, second_app):
    """Requesting a publish of an app that has been created, but not built, raises an
    error."""
    # Add two apps; use the "config only" version of the first app.
    publish_command.apps = {
        "first": first_app_unbuilt,
        "second": second_app,
    }

    # Configure no command line options
    options, _ = publish_command.parse_options([])

    # Invoking the publish command raises an error
    with pytest.raises(BriefcaseCommandError):
        publish_command(**options)

    # Only verification will be performed
    assert publish_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"),
    ]