class TestUserIO(TestCase): def setUp(self): out = BiiOutputStream() ins = StringIO() self.paths = UserIO(ins, out) self.paths._request_while = Mock(side_effect=Exception('Boom!')) def test_request_boolean(self): self.paths.ins.write('yes') self.paths.ins.seek(0) self.assertTrue(self.paths.request_boolean('msg')) self.paths.ins.truncate(0) self.paths.ins.write('no') self.paths.ins.seek(0) self.assertFalse(self.paths.request_boolean('msg')) self.paths.ins.truncate(0) self.paths.ins.write('yds\nyes\n') self.paths.ins.seek(0) self.assertTrue(self.paths.request_boolean('msg')) def test_request_option(self): Namespace = namedtuple('Namespace', ['block', 'description', 'name', 'version']) args = Namespace(block='dummy/dummy/geom/master', description='description example', name='geom2', version='0') version = self.paths._get_option_from_args('version', args, [], type(0), None) self.assertEquals(version, 0)
def test_tool_executor(self): bii = Bii(UserIO(out=BiiOutputStream()), "dummy_current_folder", "dummy_user_folder") toolcatalog = ToolCatalog(BiiCommand, tools=[CPPToolChain]) toolcatalog.print_help = Mock(return_value=True) tool = ToolExecutor(bii, toolcatalog) #Effective call tool._call_method = Mock(return_value=True) # --quiet argv = ["cpp:configure", "--quiet"] tool.execute(argv) self.assertEqual(bii.user_io.out.level, 2) # --verbose argv = ["cpp:configure", "--verbose"] tool.execute(argv) self.assertEqual(bii.user_io.out.level, 0) # --version argv = ["--version"] tool.execute(argv) self.assertIn("%s\n" % biicode.common.__version__, str(bii.user_io.out)) # --help argv = ["--help"] tool.execute(argv) toolcatalog.print_help.assert_called_with(bii.user_io.out, []) # Bad command argv = ["paspas"] self.assertRaises(ClientException, tool.execute, argv)
def gnu_version(compiler): try: _, output = execute('%s --version' % compiler, ui=UserIO(out=BiiOutputStream())) installed_version = re.search("[0-9]\.[0-9]\.[0-9]", output).group() except: installed_version = '' if installed_version: return Version(installed_version)
def _incompatible_avr_gcc_version_in_path(): # Check avr-gcc in path and check version exit_code, output = execute("avr-gcc --version", UserIO(out=BiiOutputStream(StringIO()))) if exit_code == 0: for compatible_version in ARDUINO_AVR_COMPATIBLE_VERSIONS: if compatible_version in output: return False return True else: # Not found, so its ok return False
def create_user_io(biicode_folder): """Creates the bii folder and init user_io with outputstream and logfile""" try: os.makedirs(biicode_folder) except: pass log_file = os.path.join(biicode_folder, 'bii.log') if hasattr(sys.stdout, "isatty") and sys.stdout.isatty(): from colorama import init init() OutputStream.color = True user_io = UserIO(sys.stdin, BiiOutputStream(sys.stdout, log_file, level=INFO)) return user_io
def install_linux_x32_compatibility(user_io): if OSInfo.is_linux() and OSInfo.architecture() == Architecture("64bit"): cmd = "dpkg-query -S lib32z1" exit_code, _ = execute(cmd, UserIO(out=BiiOutputStream(StringIO()))) if exit_code == 0: user_io.out.writeln( 'x86 compatibility for 64bits already installed', front=Color.GREEN) else: user_io.out.writeln( 'Installing x86 compatibility for 64bits architecture...', front=Color.GREEN) user_io.out.warn( 'Installing lib32z1 as "sudo", enter "sudo" password if requested' ) os.system('sudo apt-get install lib32z1')
def execute(command, ui=None, cwd=None, env=None, shell=None): ex = { 'Darwin': execute_mac, 'Windows': execute_win, 'Linux': execute_linux } if env is None: env = os.environ try: #TODO: Check this, the default is different in Windows and others if shell is None: if platform.system() == 'Windows': shell = False else: shell = True if ui is None: ui = UserIO() return ex[platform.system()](command, ui, cwd, env, shell) except KeyError: raise BiiException('Platform not supported')
def setUp(self): out = BiiOutputStream() ins = StringIO() self.paths = UserIO(ins, out) self.paths._request_while = Mock(side_effect=Exception('Boom!'))
def mocked_user_io(login=None): user_io = UserIO(out=BiiOutputStream(StringIO.StringIO())) mock_user_io(user_io, login=login) return user_io