|  | 
|  | 1 | +import dataclasses | 
| 1 | 2 | import os | 
| 2 | 3 | 
 | 
| 3 | 4 | import pytest | 
| 4 | 5 | 
 | 
| 5 |  | -from tests import helpers | 
| 6 | 6 | from twine import commands | 
| 7 | 7 | from twine import exceptions | 
| 8 | 8 | 
 | 
| @@ -52,41 +52,69 @@ def test_find_dists_handles_real_files(): | 
| 52 | 52 |     assert expected == files | 
| 53 | 53 | 
 | 
| 54 | 54 | 
 | 
|  | 55 | +class Signed(str): | 
|  | 56 | + | 
|  | 57 | +    @property | 
|  | 58 | +    def signature(self): | 
|  | 59 | +        return f"{self}.asc" | 
|  | 60 | + | 
|  | 61 | +    def attestation(self, what): | 
|  | 62 | +        return f"{self}.{what}.attestation" | 
|  | 63 | + | 
|  | 64 | + | 
|  | 65 | +@dataclasses.dataclass | 
|  | 66 | +class Distribution: | 
|  | 67 | +    name: str | 
|  | 68 | +    version: str | 
|  | 69 | + | 
|  | 70 | +    @property | 
|  | 71 | +    def sdist(self): | 
|  | 72 | +        return Signed(f"dist/{self.name}-{self.version}.tar.gz") | 
|  | 73 | + | 
|  | 74 | +    @property | 
|  | 75 | +    def wheel(self): | 
|  | 76 | +        return Signed(f"dist/{self.name}-{self.version}-py2.py3-none-any.whl") | 
|  | 77 | + | 
|  | 78 | + | 
| 55 | 79 | def test_split_inputs(): | 
| 56 | 80 |     """Split inputs into dists, signatures, and attestations.""" | 
|  | 81 | +    a = Distribution("twine", "1.5.0") | 
|  | 82 | +    b = Distribution("twine", "1.6.5") | 
|  | 83 | + | 
| 57 | 84 |     inputs = [ | 
| 58 |  | -        helpers.WHEEL_FIXTURE, | 
| 59 |  | -        helpers.WHEEL_FIXTURE + ".asc", | 
| 60 |  | -        helpers.WHEEL_FIXTURE + ".build.attestation", | 
| 61 |  | -        helpers.WHEEL_FIXTURE + ".publish.attestation", | 
| 62 |  | -        helpers.SDIST_FIXTURE, | 
| 63 |  | -        helpers.SDIST_FIXTURE + ".asc", | 
| 64 |  | -        helpers.NEW_WHEEL_FIXTURE, | 
| 65 |  | -        helpers.NEW_WHEEL_FIXTURE + ".frob.attestation", | 
| 66 |  | -        helpers.NEW_SDIST_FIXTURE, | 
|  | 85 | +        a.wheel, | 
|  | 86 | +        a.wheel.signature, | 
|  | 87 | +        a.wheel.attestation("build"), | 
|  | 88 | +        a.wheel.attestation("build.publish"), | 
|  | 89 | +        a.sdist, | 
|  | 90 | +        a.sdist.signature, | 
|  | 91 | +        b.wheel, | 
|  | 92 | +        b.wheel.attestation("frob"), | 
|  | 93 | +        b.sdist, | 
| 67 | 94 |     ] | 
| 68 | 95 | 
 | 
| 69 | 96 |     inputs = commands._split_inputs(inputs) | 
| 70 | 97 | 
 | 
| 71 | 98 |     assert inputs.dists == [ | 
| 72 |  | -        helpers.WHEEL_FIXTURE, | 
| 73 |  | -        helpers.SDIST_FIXTURE, | 
| 74 |  | -        helpers.NEW_WHEEL_FIXTURE, | 
| 75 |  | -        helpers.NEW_SDIST_FIXTURE, | 
|  | 99 | +        a.wheel, | 
|  | 100 | +        a.sdist, | 
|  | 101 | +        b.wheel, | 
|  | 102 | +        b.sdist, | 
| 76 | 103 |     ] | 
| 77 | 104 | 
 | 
| 78 |  | -    expected_signatures = { | 
| 79 |  | -        os.path.basename(dist) + ".asc": dist + ".asc" | 
| 80 |  | -        for dist in [helpers.WHEEL_FIXTURE, helpers.SDIST_FIXTURE] | 
|  | 105 | +    assert inputs.signatures == { | 
|  | 106 | +        "twine-1.5.0-py2.py3-none-any.whl.asc": a.wheel.signature, | 
|  | 107 | +        "twine-1.5.0.tar.gz.asc": a.sdist.signature, | 
| 81 | 108 |     } | 
| 82 |  | -    assert inputs.signatures == expected_signatures | 
| 83 | 109 | 
 | 
| 84 | 110 |     assert inputs.attestations_by_dist == { | 
| 85 |  | -        helpers.WHEEL_FIXTURE: [ | 
| 86 |  | -            helpers.WHEEL_FIXTURE + ".build.attestation", | 
| 87 |  | -            helpers.WHEEL_FIXTURE + ".publish.attestation", | 
|  | 111 | +        a.wheel: [ | 
|  | 112 | +            a.wheel.attestation("build"), | 
|  | 113 | +            a.wheel.attestation("build.publish"), | 
|  | 114 | +        ], | 
|  | 115 | +        a.sdist: [], | 
|  | 116 | +        b.wheel: [ | 
|  | 117 | +            b.wheel.attestation("frob"), | 
| 88 | 118 |         ], | 
| 89 |  | -        helpers.SDIST_FIXTURE: [], | 
| 90 |  | -        helpers.NEW_WHEEL_FIXTURE: [helpers.NEW_WHEEL_FIXTURE + ".frob.attestation"], | 
| 91 |  | -        helpers.NEW_SDIST_FIXTURE: [], | 
|  | 119 | +        b.sdist: [], | 
| 92 | 120 |     } | 
0 commit comments