forked from fedora-modularity/libmodulemd
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathprofile.py
More file actions
132 lines (97 loc) · 3.5 KB
/
profile.py
File metadata and controls
132 lines (97 loc) · 3.5 KB
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
#!/usr/bin/python3
# This file is part of libmodulemd
# Copyright (C) 2018 Red Hat, Inc.
#
# Fedora-License-Identifier: MIT
# SPDX-2.0-License-Identifier: MIT
# SPDX-3.0-License-Identifier: MIT
#
# This program is free software.
# For more information on the license, see COPYING.
# For more information on free software, see
# <https://www.gnu.org/philosophy/free-sw.en.html>.
import sys
try:
import unittest
import gi
gi.require_version("Modulemd", "2.0")
from gi.repository import Modulemd
except ImportError:
# Return error 77 to skip this test on platforms without the necessary
# python modules
sys.exit(77)
from base import TestBase
def construct_without_arguments():
Modulemd.Profile()
def construct_with_none_name():
Modulemd.Profile(name=None)
def _set_props_name(modulemd_profile, value):
modulemd_profile.props.name = value
class TestProfile(TestBase):
def test_constructor(self):
# Test that the new() function works
p = Modulemd.Profile.new("testprofile")
assert p
assert p.props.name == "testprofile"
assert p.get_name() == "testprofile"
assert p.get_description() is None
assert p.get_rpms() == []
# Test that keyword name is accepted
p = Modulemd.Profile(name="testprofile")
assert p
assert p.props.name == "testprofile"
assert p.get_name() == "testprofile"
assert p.get_description() is None
assert p.get_rpms() == []
# Test that we fail without name
with self.assertRaises(TypeError) as cm:
Modulemd.Profile.new(None)
assert "does not allow None as a value" in cm.exception.__str__()
self.assertProcessFailure(construct_without_arguments)
self.assertProcessFailure(construct_with_none_name)
def test_copy(self):
p_orig = Modulemd.Profile(name="testprofile")
p = p_orig.copy()
assert p
assert p.props.name == "testprofile"
assert p.get_name() == "testprofile"
assert p.get_description() is None
assert p.get_rpms() == []
p_orig.set_description("Test profile")
p.add_rpm("test2")
p.add_rpm("test3")
p.add_rpm("test1")
p = p_orig.copy()
assert p
assert p.props.name == "testprofile"
assert p.get_name() == "testprofile"
assert p.get_description() == "Test profile"
assert p.get_rpms() == ["test1", "test2", "test3"]
def test_get_name(self):
p = Modulemd.Profile(name="testprofile")
assert p.get_name() == "testprofile"
assert p.props.name == "testprofile"
self.assertTypeExceptionOrProcessFailure(
_set_props_name, p, "notadrill"
)
def test_get_set_description(self):
p = Modulemd.Profile(name="testprofile")
assert p.get_description() is None
p.set_description("foobar")
assert p.get_description() == "foobar"
p.set_description(None)
assert p.get_description() is None
def test_rpms(self):
p = Modulemd.Profile(name="testprofile")
assert p.get_rpms() == []
p.add_rpm("test2")
assert p.get_rpms() == ["test2"]
p.add_rpm("test3")
p.add_rpm("test1")
assert p.get_rpms() == ["test1", "test2", "test3"]
p.add_rpm("test2")
assert p.get_rpms() == ["test1", "test2", "test3"]
p.remove_rpm("test1")
assert p.get_rpms() == ["test2", "test3"]
if __name__ == "__main__":
unittest.main()