diff options
author | Duncan McGreggor <duncan@canonical.com> | 2011-04-06 12:06:52 -0600 |
---|---|---|
committer | Duncan McGreggor <duncan@canonical.com> | 2011-04-06 12:06:52 -0600 |
commit | 09c08b90f576beb6faab5fa7986f68e0a3dabab7 (patch) | |
tree | 3db0719d745db9909427320ea57589ca45653de8 | |
parent | 38981182a04202f6a258080a2499396c09fd4fec (diff) |
Started working on extract wrapper.
-rw-r--r-- | python/evemu/device.py | 27 | ||||
-rw-r--r-- | python/evemu/tests/test_device.py | 28 | ||||
-rw-r--r-- | python/evemu/util.py | 2 |
3 files changed, 51 insertions, 6 deletions
diff --git a/python/evemu/device.py b/python/evemu/device.py index ce550c7..d06a4d8 100644 --- a/python/evemu/device.py +++ b/python/evemu/device.py @@ -60,8 +60,11 @@ class EvEmuDevice(base.EvEmuBase): pass self.destroy() self.close() - if self.get_node_name() and os.path.exists(self.get_node_name()): - os.unlink(self.get_node_name()) + #if self.get_node_name(): + # print self.get_node_name() + # if os.path.exists(self.get_node_name()): + # print "unlinking %s ..." % self.get_node_name() + # os.unlink(self.get_node_name()) def _new(self): device_new = self.get_lib().evemu_new @@ -107,9 +110,10 @@ class EvEmuDevice(base.EvEmuBase): self.delete() raise error + def set_node_name(self, node_name): + self._node = node_name + def get_node_name(self): - if not self._node: - self._node = util.get_next_device() return self._node def delete(self): @@ -195,6 +199,7 @@ class EvEmuDevice(base.EvEmuBase): # populate the new node with data from the device pointer try: self._create() + self.set_node_name(util.get_last_device()) except exception.EvEmuError, error: self.close() raise error @@ -220,11 +225,25 @@ class EvEmuDevice(base.EvEmuBase): self.delete() raise error + def _extract(self, device_node): + file_descriptor = os.open(device_node, os.O_RDONLY) + import pdb;pdb.set_trace() + self._call( + self.get_lib().evemu_extract, + self.get_device_pointer(), + file_descriptor) + os.close(file_descriptor) + def extract(self, device_node): """ A linux input device node is opened and read, storing all the retrieved data in the device data structure. """ + try: + self._extract(device_node) + except exception.EvEmuError, error: + #self.delete() + raise error # Property methods @property diff --git a/python/evemu/tests/test_device.py b/python/evemu/tests/test_device.py index 4cc5ba2..ef6c4d5 100644 --- a/python/evemu/tests/test_device.py +++ b/python/evemu/tests/test_device.py @@ -132,7 +132,33 @@ class EvEmuDeviceTestCase(testcase.BaseTestCase): self.assertEqual(data, expected_data) def test_extract(self): - pass + # first, we need a device set up that we can extract info from + # prep a temp file to hold the written data + (output_fd, filename) = tempfile.mkstemp() + # get the device node for the virtual device created as part of the + # test + self.create_testing_device() + node = self.device.get_node_name() + # extract the device info from the node, saving it to the device data + # structure + #import pdb;pdb.set_trace() + self.device.extract(node) + # write the device data structure contents to a file and compare with + # the device .prop file that was used to create the virtual device to + # begin with; they should be identical + device = device_class(self.library) + device.write(filename) + os.close(output_fd) + # then, now test the data to make sure the write happened correctly + file_object = open(filename) + data = file_object.read() + file_object.close() + # do the checks + file_object = open(self.get_device_file()) + expected_data = file_object.read() + file_object.close() + self.assertEqual(data, expected_data) + class EvEmuDevicePropertyTestCase(testcase.BaseTestCase): diff --git a/python/evemu/util.py b/python/evemu/util.py index eaabee0..e86fcb1 100644 --- a/python/evemu/util.py +++ b/python/evemu/util.py @@ -79,7 +79,7 @@ def get_last_device_number(): """ Get the last used device node number. """ - return get_all_device_numbers()[0] + return get_all_device_numbers()[-1] def get_last_device(): |