32
32
sys.path.insert(0, "../")
34
from debtagshw.debtagshw import DebtagsAvailableHW, HardwareSupported
34
from debtagshw.detectors import (
39
from debtagshw.debtagshw import (
36
44
class TestDebtagsHW(unittest.TestCase):
38
46
def test__check_hw_debtags(self):
39
47
hw = DebtagsAvailableHW()
40
48
# run over all hwtags that we support
43
"hardware::input:mouse",
44
"hardware::input:keyboard",
45
"hardware::input:touchscreen",
46
"hardware::storage:cd",
47
"hardware::storage:cd:writer",
48
"hardware::storage:dvd",
49
"hardware::storage:dvd:writer",
50
"hardware::video:opengl",
49
for hwtag in hw.get_supported_tags() + [
55
51
"hardware::camera",
67
63
self.assertTrue(hw._check_hw_debtag("hardware::input:keyboard"))
69
65
def test_laptop_detect(self):
70
hw = DebtagsAvailableHW()
71
hw.LAPTOP_DETECT = "/bin/true"
72
self.assertTrue(hw._check_hw_debtag("hardware::laptop"))
73
hw.LAPTOP_DETECT = "/bin/false"
74
self.assertFalse(hw._check_hw_debtag("hardware::laptop"))
67
d.LAPTOP_DETECT = "/bin/true"
68
self.assertEqual(d.is_supported("hardware::laptop"),
69
HardwareSupported.YES)
70
d.LAPTOP_DETECT = "/bin/false"
71
self.assertEqual(d.is_supported("hardware::laptop"),
76
74
def test_scanner(self):
77
75
f = tempfile.NamedTemporaryFile()
78
76
f.write("device 'uri' is a foo bar bar")
80
hw = DebtagsAvailableHW()
81
hw.SCANIMAGE = ["cat", f.name]
82
self.assertTrue(hw._check_hw_debtag("hardware::scanner"))
83
hw.SCANIMAGE = ["cat", "/dev/null"]
84
self.assertFalse(hw._check_hw_debtag("hardware::scanner"))
79
d.SCANIMAGE = ["cat", f.name]
80
self.assertEqual(d.is_supported("hardware::scanner"),
81
HardwareSupported.YES)
82
d.SCANIMAGE = ["cat", "/dev/null"]
83
self.assertEqual(d.is_supported("hardware::scanner"),
86
class TestPublicAPI(unittest.TestCase):
89
class MockDetector(Detector):
90
TEST_TAGS = { "hardware::scanner" : HardwareSupported.YES,
91
"hardware::printer": HardwareSupported.NO,
92
"hardware::gps": HardwareSupported.NO,
93
"hardware::testme1": HardwareSupported.NO,
94
"hardware::testme2": HardwareSupported.YES,
96
def get_supported_tags(self):
97
return self.TEST_TAGS.keys()
98
def is_supported(self, tag):
99
if tag in self.TEST_TAGS:
100
return self.TEST_TAGS[tag]
101
return HardwareSupported.UNKNOWN
102
self._mock_detector = MockDetector()
103
self.hw = DebtagsAvailableHW()
104
self.hw._detectors.insert(0, self._mock_detector)
86
106
def test_get_missing_hw(self):
88
hw = DebtagsAvailableHW()
89
hw._hardware__scanner = lambda:True
90
hw._hardware__gps = lambda:False
92
108
tags = ["hardware::scanner", "hardware::gps", "hardware::xxx" ]
93
result = hw.get_hardware_support_for_tags(tags)
109
result = self.hw.get_hardware_support_for_tags(tags)
94
110
self.assertEqual(result, {
95
111
'hardware::scanner' : HardwareSupported.YES,
96
112
'hardware::gps' : HardwareSupported.NO,
97
'hardware::xxx' : HardwareSupported.UNKOWN,
113
'hardware::xxx' : HardwareSupported.UNKNOWN,
116
def test_generate_tag_expressions(self):
119
for supported, tags in self.hw.generate_tag_expressions():
122
self.assertEqual(res["hardware::testme2"], "yes")
123
self.assertEqual(res["hardware::testme1"], "no")
101
125
class TestCasePrinter(unittest.TestCase):
112
136
with patch.dict('sys.modules', { 'cups' : cups_mock }):
113
137
hw = DebtagsAvailableHW()
114
138
cups_connection_mock.getPrinters.return_value = {}
115
self.assertFalse(hw._check_hw_debtag("hardware::printer"))
139
self.assertEqual(hw._check_hw_debtag("hardware::printer"),
140
HardwareSupported.NO)
116
141
cups_connection_mock.getPrinters.return_value = {
117
142
'deskjet' : { 'print-info' : "some info",
120
self.assertTrue(hw._check_hw_debtag("hardware::printer"))
145
self.assertEqual(hw._check_hw_debtag("hardware::printer"),
146
HardwareSupported.YES)
122
148
if __name__ == "__main__":
123
149
logging.basicConfig(level=logging.INFO)