~pkgme-committers/pkgme/trunk

« back to all changes in this revision

Viewing changes to pkgme/tests/test_write_packaging.py

  • Committer: Tarmac
  • Author(s): Jonathan Lange
  • Date: 2012-08-29 16:39:16 UTC
  • mfrom: (135.1.8 split-write-packaging)
  • Revision ID: tarmac-20120829163916-2uyf1bul7xh61akw
[r=jml] Split write_packaging so that there's a way to get information.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
import os
2
2
 
 
3
from fixtures import TempDir
3
4
from testtools import TestCase
 
5
from treeshape import HasFileTree
4
6
 
5
 
from pkgme import write_packaging
 
7
from pkgme import (
 
8
    get_packaging_info,
 
9
    write_packaging,
 
10
    write_packaging_info,
 
11
    )
6
12
from pkgme.backend import StaticBackend
7
13
from pkgme.info_elements import (
8
14
    Architecture,
16
22
from pkgme.testing import (
17
23
    ControlSourceStanzaHasField,
18
24
    StaticLoaderFixture,
19
 
    TempdirFixture,
20
25
    )
21
26
 
22
27
 
 
28
def ControlHasSourceName(name):
 
29
    control_path = os.path.join(DEBIAN_DIR, Control.filename)
 
30
    return HasFileTree(
 
31
        {control_path:
 
32
             {'content': ControlSourceStanzaHasField("Source", name)}})
 
33
 
 
34
 
23
35
class WritePackagingTests(TestCase):
24
36
 
25
 
    def assert_control_has_source_name(self, name, tempdir):
26
 
        control_path = os.path.join(
27
 
            tempdir.path, DEBIAN_DIR, Control.filename)
28
 
        with open(control_path) as f:
29
 
            control_contents = f.read()
30
 
        self.assertThat(
31
 
            control_contents,
32
 
            ControlSourceStanzaHasField("Source", name))
33
 
 
34
37
    def make_info(self, name):
35
38
        info = DictInfo(
36
39
            {
45
48
    def test_write_packaging(self):
46
49
        name = PackageName.clean(self.getUniqueString())
47
50
        info = self.make_info(name)
48
 
        tempdir = self.useFixture(TempdirFixture())
 
51
        tempdir = self.useFixture(TempDir()).path
49
52
        backend = StaticBackend(
50
 
            self.getUniqueString(), 10, info, expected_path=tempdir.path)
 
53
            self.getUniqueString(), 10, info, expected_path=tempdir)
51
54
        self.useFixture(StaticLoaderFixture([backend]))
52
 
        write_packaging(tempdir.path)
53
 
        self.assert_control_has_source_name(name, tempdir)
 
55
        write_packaging(tempdir)
 
56
        self.assertThat(tempdir, ControlHasSourceName(name))
54
57
 
55
58
    def test_write_packaging_passes_allowed_backend_names(self):
56
59
        name = PackageName.clean(self.getUniqueString())
57
 
        other_name = name+"WRONG"
 
60
        other_name = name + "WRONG"
58
61
        info1 = self.make_info(name)
59
62
        info2 = self.make_info(other_name)
60
 
        tempdir = self.useFixture(TempdirFixture())
 
63
        tempdir = self.useFixture(TempDir()).path
61
64
        backend1 = StaticBackend(
62
 
            self.getUniqueString(), 10, info1, expected_path=tempdir.path)
 
65
            self.getUniqueString(), 10, info1, expected_path=tempdir)
63
66
        backend2 = StaticBackend(
64
67
            self.getUniqueString(), 20, info2)
65
68
        self.useFixture(StaticLoaderFixture(
66
69
            [backend1, backend2]))
67
 
        write_packaging(tempdir.path,
68
 
                allowed_backend_names=[backend1.name])
69
 
        self.assert_control_has_source_name(name, tempdir)
 
70
        write_packaging(tempdir, allowed_backend_names=[backend1.name])
 
71
        self.assertThat(tempdir, ControlHasSourceName(name))
 
72
 
 
73
 
 
74
class TestWritePackagingInformation(TestCase):
 
75
 
 
76
    def test_writes_packaging(self):
 
77
        path = self.useFixture(TempDir()).path
 
78
        package_name = PackageName.clean(self.getUniqueString())
 
79
        info = DictInfo(
 
80
            {
 
81
                PackageName.name: package_name,
 
82
                Maintainer.name: self.getUniqueString(),
 
83
                Architecture.name: "all",
 
84
                Description.name: self.getUniqueString(),
 
85
                Version.name: "1",
 
86
            })
 
87
        write_packaging_info(path, info)
 
88
        self.assertThat(path, ControlHasSourceName(package_name))
 
89
 
 
90
 
 
91
class TestGetPackagingInfo(TestCase):
 
92
 
 
93
    def make_info(self):
 
94
        return DictInfo(
 
95
            {
 
96
                PackageName.name: PackageName.clean(self.getUniqueString()),
 
97
                Maintainer.name: self.getUniqueString(),
 
98
                Architecture.name: "all",
 
99
                Description.name: self.getUniqueString(),
 
100
                Version.name: "1",
 
101
            })
 
102
 
 
103
    def test_get_packaging_info(self):
 
104
        info = self.make_info()
 
105
        tempdir = self.useFixture(TempDir()).path
 
106
        backend = StaticBackend(
 
107
            self.getUniqueString(), 10, info, expected_path=tempdir)
 
108
        self.useFixture(StaticLoaderFixture([backend]))
 
109
        found = get_packaging_info(tempdir)
 
110
        self.assertEqual(found, info)
 
111
 
 
112
    def test_allowed_backend_names(self):
 
113
        info1 = self.make_info()
 
114
        info2 = self.make_info()
 
115
        tempdir = self.useFixture(TempDir()).path
 
116
        backend1 = StaticBackend(
 
117
            self.getUniqueString(), 10, info1, expected_path=tempdir)
 
118
        backend2 = StaticBackend(
 
119
            self.getUniqueString(), 20, info2)
 
120
        self.useFixture(StaticLoaderFixture([backend1, backend2]))
 
121
        found = get_packaging_info(
 
122
            tempdir, allowed_backend_names=[backend1.name])
 
123
        self.assertEqual(found, info1)