Browse Source

more lint and test

Peter Magnusson 8 years ago
parent
commit
dc11405a15
3 changed files with 32 additions and 14 deletions
  1. 5 3
      nodemcu_uploader/uploader.py
  2. 2 2
      tests/__init__.py
  3. 25 9
      tests/uploader.py

+ 5 - 3
nodemcu_uploader/uploader.py

@@ -12,7 +12,7 @@ import serial
 from .exceptions import CommunicationTimeout, DeviceNotFoundException, \
     BadResponseException
 from .utils import default_port, system
-from .luacode import DOWNLOAD_FILE, RECV_LUA, SEND_LUA, LUA_FUNCTIONS, \
+from .luacode import RECV_LUA, SEND_LUA, LUA_FUNCTIONS, \
     LIST_FILES, UART_SETUP, PRINT_FILE
 
 
@@ -38,6 +38,7 @@ class Uploader(object):
     PORT = default_port()
 
     def __init__(self, port=PORT, baud=BAUD, start_baud=START_BAUD, timeout=TIMEOUT):
+        self._timeout = Uploader.TIMEOUT
         self.set_timeout(timeout)
         log.info('opening port %s with %s baud', port, start_baud)
         if port == 'loop://':
@@ -152,7 +153,7 @@ class Uploader(object):
         """Write output to the port and wait for response"""
         self.__writeln(output)
         self._port.flush()
-        return self.expect(timeout=timeout or self._timeout)
+        return self.__expect(timeout=timeout or self._timeout)
 
 
     def close(self):
@@ -228,6 +229,7 @@ class Uploader(object):
         return data
 
     def read_file(self, filename, destination=''):
+        """reading data from device into local file"""
         if not destination:
             destination = filename
         log.info('Transfering %s to %s', filename, destination)
@@ -330,8 +332,8 @@ class Uploader(object):
 
 
     def write_lines(self, data):
+        """write lines, one by one, separated by \n to device"""
         lines = data.replace('\r', '').split('\n')
-
         for line in lines:
             self.__exchange(line)
 

+ 2 - 2
tests/__init__.py

@@ -10,10 +10,10 @@ def full_suite():
     logging.basicConfig(filename='test-debug.log', level=logging.INFO, format='%(message)s')
 
     from .misc import MiscTestCase
-    from .uploader import UploaderTestCase
+    from . import uploader
     # from .serializer import ResourceTestCase as SerializerTestCase
     # from .utils import UtilsTestCase
 
     miscsuite = unittest.TestLoader().loadTestsFromTestCase(MiscTestCase)
-    uploadersuite = unittest.TestLoader().loadTestsFromTestCase(UploaderTestCase)
+    uploadersuite = unittest.TestLoader().loadTestsFromModule(uploader)
     return unittest.TestSuite([miscsuite, uploadersuite])

+ 25 - 9
tests/uploader.py

@@ -2,31 +2,47 @@
 # Copyright (C) 2015-2016 Peter Magnusson <peter@birchroad.net>
 import unittest
 import os, time
-from nodemcu_uploader import Uploader, __version__
+from nodemcu_uploader import Uploader
 
-LOOPPORT='loop://'
+LOOPPORT = 'loop://'
 
 #on which port should the tests be performed
 SERIALPORT = os.environ.get('SERIALPORT', LOOPPORT)
 
+def is_real():
+    if SERIALPORT.strip() == '':
+        return False
+    return str(SERIALPORT) != str(LOOPPORT)
 
+class UploaderFakeTestCase(unittest.TestCase):
+    def test_init(self):
+        uploader = Uploader(SERIALPORT)
+        uploader.close()
+
+@unittest.skipUnless(is_real(), 'Needs a configured SERIALPORT')
 class UploaderTestCase(unittest.TestCase):
     uploader = None
     def setUp(self):
-        self.uploader =  Uploader(SERIALPORT)
+        self.uploader = Uploader(SERIALPORT)
 
     def tearDown(self):
-        self.uploader.node_restart()
+        if is_real():
+            self.uploader.node_restart()
         self.uploader.close()
         time.sleep(1)
 
-    # def test_initialize(self):
-    #     print SERIALPORT
-
-
 
-    @unittest.skipUnless(SERIALPORT <>  LOOPPORT, 'Needs a configured SERIALPORT')
     def test_upload_and_verify_raw(self):
         self.uploader.prepare()
         self.uploader.write_file('tests/fixtures/big_file.txt', verify='raw')
 
+
+    def test_upload_and_verify_sha1(self):
+        self.uploader.prepare()
+        self.uploader.write_file('tests/fixtures/big_file.txt', verify='sha1')
+
+
+    def test_upload_strange_file(self):
+        self.uploader.prepare()
+        self.uploader.write_file('tests/fixtures/testuploadfail.txt', verify='raw')
+