def main(): args = parse_command_line() configure_logging(args.log_file, args.log_level) shooter = SecondShooter(camera=args.camera, port=args.port) run_count = -1 if args.repeat_forever else args.run_count while run_count != 0: with open(args.file, 'r') as script: shooter.run(script) run_count -= 1
def test_run_capture(): """Test run calls capture.""" with mock.patch.object( SecondShooter, 'aperture') as mock_aperture, mock.patch.object( SecondShooter, 'capture') as mock_capture, mock.patch.object( SecondShooter, 'iso') as mock_iso, mock.patch.object( SecondShooter, 'shutter') as mock_shutter, mock.patch.object( SecondShooter, 'wait') as mock_wait, mock.patch.object( SecondShooter, 'default') as mock_default: shooter = SecondShooter('Nikon', 'port') shooter.run('cmd: capture') assert not mock_aperture.called mock_capture.assert_called_with(cmd='capture') assert not mock_iso.called assert not mock_shutter.called assert not mock_wait.called assert not mock_default.called
def test_run_empty(): """Test run with no commands.""" with mock.patch.object( SecondShooter, 'aperture') as mock_aperture, mock.patch.object( SecondShooter, 'capture') as mock_capture, mock.patch.object( SecondShooter, 'iso') as mock_iso, mock.patch.object( SecondShooter, 'shutter') as mock_shutter, mock.patch.object( SecondShooter, 'wait') as mock_wait, mock.patch.object( SecondShooter, 'default') as mock_default: shooter = SecondShooter('Nikon', 'port') shooter.run('---') assert not mock_aperture.called assert not mock_capture.called assert not mock_iso.called assert not mock_shutter.called assert not mock_wait.called assert not mock_default.called
def test_run_default(): """Test run calls default when it gets an unkown command.""" with mock.patch.object( SecondShooter, 'aperture') as mock_aperture, mock.patch.object( SecondShooter, 'capture') as mock_capture, mock.patch.object( SecondShooter, 'iso') as mock_iso, mock.patch.object( SecondShooter, 'shutter') as mock_shutter, mock.patch.object( SecondShooter, 'wait') as mock_wait, mock.patch.object( SecondShooter, 'default') as mock_default: shooter = SecondShooter('Nikon', 'port') shooter.run('cmd: not a command') assert not mock_aperture.called assert not mock_capture.called assert not mock_iso.called assert not mock_shutter.called assert not mock_wait.called mock_default.assert_called_with(cmd='not a command')
def test_construction_arguments(): test_settings = {'test': 2, 'settings': 3} with mock.patch('second_shooter.second_shooter.load_camera_settings', return_value=test_settings ) as mock_load_camera_settings, mock.patch.object( SecondShooter, 'set_target_settings'): shooter = SecondShooter('camera', 'port') assert mock_load_camera_settings.called assert shooter._camera == 'camera' assert shooter._port == 'port' assert shooter._camera_settings == test_settings assert shooter._command['aperture'] == shooter.aperture assert shooter._command['capture'] == shooter.capture assert shooter._command['iso'] == shooter.iso assert shooter._command['shutter'] == shooter.shutter assert shooter._command['wait'] == shooter.wait
def test_construction_defaults(): test_settings = {'test': 0, 'settings': 1} with mock.patch('second_shooter.second_shooter.load_camera_settings', return_value=test_settings ) as mock_load_camera_settings, mock.patch.object( SecondShooter, 'set_target_settings'): shooter = SecondShooter() assert mock_load_camera_settings.called assert shooter._camera is None assert shooter._port is None assert shooter._camera_settings == test_settings assert shooter._command['aperture'] == shooter.aperture assert shooter._command['capture'] == shooter.capture assert shooter._command['iso'] == shooter.iso assert shooter._command['shutter'] == shooter.shutter assert shooter._command['wait'] == shooter.wait
def shooter(): """SecondShooter instantiated without a camera to talk to.""" with mock.patch.object(SecondShooter, 'set_target_settings'): s = SecondShooter('Nikon', 'port') return s
def test_run_multiple_steps(): """Test run parses multiple commands.""" def aperture_side_effect(**_): call_order.append('aperture') def capture_side_effect(**_): call_order.append('capture') def iso_side_effect(**_): call_order.append('iso') def shutter_side_effect(**_): call_order.append('shutter') def wait_side_effect(**_): call_order.append('wait') def default_side_effect(**_): call_order.append('default') call_order = [] with mock.patch.object( SecondShooter, 'aperture', side_effect=aperture_side_effect), mock.patch.object( SecondShooter, 'capture', side_effect=capture_side_effect), mock.patch.object( SecondShooter, 'iso', side_effect=iso_side_effect), mock.patch.object( SecondShooter, 'shutter', side_effect=shutter_side_effect), mock.patch.object( SecondShooter, 'wait', side_effect=wait_side_effect), mock.patch.object( SecondShooter, 'default', side_effect=default_side_effect): shooter = SecondShooter('Nikon', 'port') shooter.run("""\ --- cmd: iso value: 100 --- cmd: shutter value: 1/125 --- cmd: aperture value: 8 --- cmd: capture --- cmd: wait value: 2 --- cmd: capture --- cmd: shutter value: 1/250 --- cmd: capture """) assert call_order == [ 'iso', 'shutter', 'aperture', 'capture', 'wait', 'capture', 'shutter', 'capture' ]