def test_read_sys_net_reraises_oserror(self): """read_sys_net raises OSError/IOError when file doesn't exist.""" # Non-specific Exception because versions of python OSError vs IOError. with self.assertRaises(Exception) as context_manager: # noqa: H202 net.read_sys_net('dev', 'attr') error = context_manager.exception self.assertIn('No such file or directory', str(error))
def test_read_sys_net_errors_on_translation_failures(self): """read_sys_net raises a KeyError and logs details on failure.""" content = "you're welcome\n" write_file(os.path.join(self.sysdir, 'dev', 'attr'), content) with self.assertRaises(KeyError) as context_manager: net.read_sys_net('dev', 'attr', translate={}) error = context_manager.exception self.assertEqual('"you\'re welcome"', str(error)) self.assertIn( "Found unexpected (not translatable) value 'you're welcome' in " "'{0}dev/attr".format(self.sysdir), self.logs.getvalue())
def test_read_sys_net_handles_error_with_on_enoent(self): """read_sys_net handles OSError/IOError with on_enoent if provided.""" handled_errors = [] def on_enoent(e): handled_errors.append(e) net.read_sys_net('dev', 'attr', on_enoent=on_enoent) error = handled_errors[0] self.assertIsInstance(error, Exception) self.assertIn('No such file or directory', str(error))
def test_read_sys_net_handles_handles_with_onkeyerror(self): """read_sys_net handles translation errors calling on_keyerror.""" content = "you're welcome\n" write_file(os.path.join(self.sysdir, 'dev', 'attr'), content) handled_errors = [] def on_keyerror(e): handled_errors.append(e) net.read_sys_net('dev', 'attr', translate={}, on_keyerror=on_keyerror) error = handled_errors[0] self.assertIsInstance(error, KeyError) self.assertEqual('"you\'re welcome"', str(error))
def test_read_sys_net_translates_content(self): """read_sys_net translates content when translate dict is provided.""" content = "you're welcome\n" write_file(os.path.join(self.sysdir, 'dev', 'attr'), content) translate = {"you're welcome": 'de nada'} self.assertEqual('de nada', net.read_sys_net('dev', 'attr', translate=translate))
def test_read_sys_net_translates_content(self): """read_sys_net translates content when translate dict is provided.""" content = "you're welcome\n" write_file(os.path.join(self.sysdir, 'dev', 'attr'), content) translate = {"you're welcome": 'de nada'} self.assertEqual( 'de nada', net.read_sys_net('dev', 'attr', translate=translate))
def __enter__(self): """linux kernel does autoconfiguration even when autoconf=0 https://www.kernel.org/doc/html/latest/networking/ipv6.html """ if net.read_sys_net(self.interface, "operstate") != "up": subp.subp( ["ip", "link", "set", "dev", self.interface, "up"], capture=False, )
def test_read_sys_net_strips_contents_of_sys_path(self): """read_sys_net strips whitespace from the contents of a sys file.""" content = 'some stuff with trailing whitespace\t\r\n' write_file(os.path.join(self.sysdir, 'dev', 'attr'), content) self.assertEqual(content.strip(), net.read_sys_net('dev', 'attr'))