예제 #1
0
 def setup(self, filename):
     mock_process = MagicMock()
     try:
         self.stopped_bag = prb.Bag(filename)
         self.running_bag = prb.Bag(filename)
     except prb.MissingBagError:
         hyp.reject()
     self.running_bag.process = mock_process
예제 #2
0
 def test_enter_returns_self(self, filenames):
     with patch.object(prb, "time", autospec=True):
         try:
             raw_bag = prb.Bag(filenames)
             with prb.Bag(filenames) as context_bag:
                 assert context_bag.filenames == raw_bag.filenames
                 assert context_bag.process == raw_bag.process
         except prb.MissingBagError:
             hyp.reject()
예제 #3
0
 def test_normal_exceptions_get_reraised(self):
     with patch.object(prb, "time", autospec=True):
         for exception in (prb.BagError, AssertionError):
             with pytest.raises(exception):
                 with prb.Bag("example.bag") as context_bag:
                     context_bag.process = MagicMock()
                     context_bag.process.poll.return_value = None
                     raise exception
예제 #4
0
 def test_exit_while_running_generates_warning(self):
     with patch.object(prb, "logger", autospec=True) as mock_logger:
         with patch.object(prb, "time", autospec=True):
             with prb.Bag("example.bag") as context_bag:
                 context_bag.process = MagicMock()
                 context_bag.process.poll.return_value = None
             assert mock_logger.warning.called
             assert mock_logger.info.called
예제 #5
0
 def test_keyboard_interrupt_does_not_reraise_exception(self):
     with patch.object(prb, "logger", autospec=True) as mock_logger:
         with patch.object(prb, "time", autospec=True):
             with prb.Bag("example.bag") as context_bag:
                 context_bag.process = MagicMock()
                 context_bag.process.poll.return_value = None
                 raise KeyboardInterrupt
             assert not mock_logger.warning.called
             assert not mock_logger.critical.called
             assert mock_logger.info.called
예제 #6
0
 def test_exit_while_running_with_error_stops_but_no_warning(self):
     with patch.object(prb, "logger", autospec=True) as mock_logger:
         with patch.object(prb, "time", autospec=True):
             with patch.object(prb.Bag, "stop", autospec=True) as mock_stop:
                 try:
                     with prb.Bag("example.bag") as context_bag:
                         context_bag.process = MagicMock()
                         context_bag.process.poll.return_value = None
                         raise prb.BagError
                 except prb.BagError:
                     assert not mock_logger.warning.called
                     assert mock_logger.critical.called
                     assert not mock_logger.info.called
                     mock_stop.assert_called_once_with(context_bag)
예제 #7
0
 def test_init_process_always_none(self, filenames):
     try:
         bag = prb.Bag(filenames)
     except prb.MissingBagError:
         hyp.reject()
     assert bag.process is None
예제 #8
0
 def test_init_multiple_filenames(self, filenames):
     try:
         bag = prb.Bag(filenames)
     except prb.MissingBagError:
         hyp.reject()
     assert bag.filenames == filenames
예제 #9
0
 def test_init_single_filename(self, filename):
     try:
         bag = prb.Bag(filename)
     except prb.MissingBagError:
         hyp.reject()
     assert bag.filenames == [filename]
예제 #10
0
 def test_repr_with_multiple_filenames(self, filenames):
     try:
         assert repr(prb.Bag(filenames)) == u"<Bag({})>".format(filenames)
     except prb.MissingBagError:
         hyp.reject()
예제 #11
0
 def test_repr_with_single_filename(self, filename):
     try:
         assert repr(prb.Bag(filename)) == u"<Bag({})>".format([filename])
     except prb.MissingBagError:
         hyp.reject()