예제 #1
0
 def setUp(self):
     global called, called_popen
     called = False
     called_popen = False
     self.old_popen = subprocess.Popen
     subprocess.Popen = self.mocked_popen
     self.listener = PymonListener("python", "tests/hello.py")
예제 #2
0
class MonitorTestCase(unittest.TestCase):
    def setUp(self):
        global called
        called = False
        self.old_popen = subprocess.Popen
        subprocess.Popen = self.mocked_call
        self.listener = PymonListener("python", "hello.py")
        self.assertIsNone(self.listener.proc)
        self.listener.start()

    def tearDown(self):
        self.listener = None
        subprocess.Popen = self.old_popen

    def mocked_call(*args, **kwargs):
        global called
        called = True

    def check_call(self):
        global called
        self.assertTrue(called)
        called = False

    def testRestartTouchFile(self):
        with open('test_file.txt', 'a'):
            os.utime('test_file.txt', None)
            self.check_call()
예제 #3
0
class MonitorTestCase(unittest.TestCase):
    def setUp(self):
        global called
        called = False
        self.old_popen = subprocess.Popen
        subprocess.Popen = self.mocked_call
        self.listener = PymonListener("python", "hello.py")
        self.assertIsNone(self.listener.proc)
        self.listener.start()

    def tearDown(self):
        self.listener = None
        subprocess.Popen = self.old_popen

    def mocked_call(*args, **kwargs):
        global called
        called = True
    
    def check_call(self):
        global called
        self.assertTrue(called)
        called = False

    def testRestartTouchFile(self):
        with open('test_file.txt', 'a'):
            os.utime('test_file.txt', None)
            self.check_call()
예제 #4
0
 def setUp(self):
     global called
     called = False
     self.old_popen = subprocess.Popen
     subprocess.Popen = self.mocked_call
     self.listener = PymonListener("python", "hello.py")
     self.assertIsNone(self.listener.proc)
     self.listener.start()
예제 #5
0
 def setUp(self):
     global called, called_popen
     called = False
     called_popen = False
     self.old_popen = subprocess.Popen
     subprocess.Popen = self.mocked_popen
     self.listener = PymonListener("python", "tests/hello.py")
예제 #6
0
 def setUp(self):
     global called
     called = False
     self.old_popen = subprocess.Popen
     subprocess.Popen = self.mocked_call
     self.listener = PymonListener("python", "hello.py")
     self.assertIsNone(self.listener.proc)
     self.listener.start()
예제 #7
0
def run():
    # Create and read all the settings
    settings = parse_settings(sys.argv[1:])
    debug(settings)

    colour_print(BLUE_COLOUR, "[pymon] Pymon %s" % settings["version"])
    colour_print(BLUE_COLOUR, "[pymon] Watching %s" % settings["path"])

    # Create an event handler for file system changes
    event_handler = PymonEventHandler(
            settings["regexes"], 
            settings["ignores"], 
            True, False)

    # Create a file system observer
    observer = Observer()
    observer.schedule(
            event_handler, 
            settings["path"], 
            recursive=True)
    observer.start()

    # Create and register a listener for the user's application
    listener = PymonListener(
            settings["prog"], 
            settings["app_args"])
    transport.add_listener(listener)
    listener.start()

    try:
        # Loop for user input
        while True:
            user_input = raw_input("")

            if user_input == "rs" or user_input == "restart":
                transport.emit("restart")
            elif user_input == "stop":
                raise Exception

    except (KeyboardInterrupt, Exception) as e:
        # Terminate all applications and exit
        transport.emit("stop")
        observer.stop()
        observer.join()
예제 #8
0
class ListenerTestCase(unittest.TestCase):
    def setUp(self):
        global called, called_popen
        called = False
        called_popen = False
        self.old_popen = subprocess.Popen
        subprocess.Popen = self.mocked_popen
        self.listener = PymonListener("python", "tests/hello.py")

    def tearDown(self):
        self.listener = None
        subprocess.Popen = self.old_popen

    def mocked_popen(*args, **kwargs):
        global called_popen
        called_popen = True

    def check_popen(self):
        global called_popen
        self.assertTrue(called_popen)
        called_popen = False

    def mocked_call(*args, **kwargs):
        global called
        called = True

    def check_call(self):
        global called
        self.assertTrue(called)
        called = False

    def testStart(self):
        # Call start when program stopped
        self.assertIsNone(self.listener.proc)
        self.listener.start()
        self.check_popen()

        # Call start when program started
        self.listener.start()

    def testStop(self):
        # Calling stop when program stopped
        self.assertIsNone(self.listener.proc)
        self.listener.stop()
        self.assertIsNone(self.listener.proc)

        # Starting the program
        self.listener.start()
        self.check_popen()

        # Calling stop when program running
        self.listener.stop()
        self.assertIsNone(self.listener.proc)

    def testRestart(self):
        # Calling restart when program stopped
        self.assertIsNone(self.listener.proc)
        self.listener.restart()
        self.check_popen()

        # Calling restart when program running
        self.listener.restart()
        self.check_popen()

    def testPing(self):
        pass

    def testHandleStart(self):
        self.old_start = PymonListener.start
        PymonListener.start = self.mocked_call
        self.listener.handle_msg("start")
        self.check_call()
        PymonListener.start = self.old_start

    def testHandleStop(self):
        self.old_stop = PymonListener.stop
        PymonListener.stop = self.mocked_call
        self.listener.handle_msg("stop")
        self.check_call()
        PymonListener.stop = self.old_stop

    def testHandleRestart(self):
        self.old_restart = PymonListener.restart
        PymonListener.restart = self.mocked_call
        self.listener.handle_msg("restart")
        self.check_call()
        PymonListener.restart = self.old_restart

    def testHandlePing(self):
        self.old_ping = PymonListener.ping
        PymonListener.ping = self.mocked_call
        self.listener.handle_msg("ping")
        self.check_call()
        PymonListener.ping = self.old_ping
예제 #9
0
 def testRemoveListener(self):
     listener = PymonListener("prog", "args")
     self.transport.add_listener(listener)
     self.assertIn(listener, self.transport.listeners)
     self.transport.remove_listener(listener)
     self.assertNotIn(listener, self.transport.listeners)
예제 #10
0
 def testAddListeners(self):
     listener1 = PymonListener("prog1", "args")
     listener2 = PymonListener("prog2", "args")
     self.transport.add_listeners([listener1, listener2])
     self.assertIn(listener1, self.transport.listeners)
     self.assertIn(listener2, self.transport.listeners)
예제 #11
0
 def testAddListener(self):
     listener = PymonListener("prog", "args")
     self.transport.add_listener(listener)
     self.assertIn(listener, self.transport.listeners)
예제 #12
0
class ListenerTestCase(unittest.TestCase):
    def setUp(self):
        global called, called_popen
        called = False
        called_popen = False
        self.old_popen = subprocess.Popen
        subprocess.Popen = self.mocked_popen
        self.listener = PymonListener("python", "tests/hello.py")

    def tearDown(self):
        self.listener = None
        subprocess.Popen = self.old_popen

    def mocked_popen(*args, **kwargs):
        global called_popen
        called_popen = True
    
    def check_popen(self):
        global called_popen
        self.assertTrue(called_popen)
        called_popen = False
    
    def mocked_call(*args, **kwargs):
        global called
        called = True
    
    def check_call(self):
        global called
        self.assertTrue(called)
        called = False
    
    def testStart(self):
        # Call start when program stopped
        self.assertIsNone(self.listener.proc)
        self.listener.start()
        self.check_popen()

        # Call start when program started
        self.listener.start()
    
    def testStop(self):
        # Calling stop when program stopped
        self.assertIsNone(self.listener.proc)
        self.listener.stop()
        self.assertIsNone(self.listener.proc)

        # Starting the program
        self.listener.start()
        self.check_popen()

        # Calling stop when program running
        self.listener.stop()
        self.assertIsNone(self.listener.proc)
        
    def testRestart(self):
        # Calling restart when program stopped
        self.assertIsNone(self.listener.proc)
        self.listener.restart()
        self.check_popen()
        
        # Calling restart when program running
        self.listener.restart()
        self.check_popen()

    def testPing(self):
        pass

    def testHandleStart(self):
        self.old_start = PymonListener.start
        PymonListener.start = self.mocked_call
        self.listener.handle_msg("start")
        self.check_call()
        PymonListener.start = self.old_start

    def testHandleStop(self):
        self.old_stop = PymonListener.stop
        PymonListener.stop = self.mocked_call
        self.listener.handle_msg("stop")
        self.check_call()
        PymonListener.stop = self.old_stop

    def testHandleRestart(self):
        self.old_restart = PymonListener.restart
        PymonListener.restart = self.mocked_call
        self.listener.handle_msg("restart")
        self.check_call()
        PymonListener.restart = self.old_restart

    def testHandlePing(self):
        self.old_ping = PymonListener.ping
        PymonListener.ping = self.mocked_call
        self.listener.handle_msg("ping")
        self.check_call()
        PymonListener.ping = self.old_ping