def test_summary_is_initialised(self, mock_parse_vasprun, MockVASPMeta): MockVASPMeta.from_file = Mock(return_value='foo') summary = Summary() self.assertEqual(mock_parse_vasprun.call_count, 1) expected_print_methods = [ 'title', 'type', 'status', 'stoichiometry', 'potcar', 'eatom', 'energy', 'k-points', 'functional', 'encut', 'plus_u', 'ediffg', 'ibrion', 'converged', 'version', 'md5', 'directory', 'lreal', 'vbm', 'cbm' ] for key in expected_print_methods: self.assertTrue(key in summary.print_methods) self.assertTrue(inspect.ismethod(summary.print_methods[key]))
def main(): supported_flags = Summary.supported_flags to_print = [ 'title', 'status', 'stoichiometry', 'potcar', 'plus_u', 'energy', 'lreal', 'k-points', 'functional', 'encut', 'ediffg', 'ibrion', 'converged', 'version', 'md5', 'directory' ] titles = None args = get_args() if args.list: for k, v, in supported_flags.items(): print("{}: {}".format(k.ljust(15), v)) sys.exit() if args.file: with open(args.file, 'r') as stream: settings = yaml.load(stream) if 'to_print' in settings: to_print = settings['to_print'] if 'titles' in settings: titles = settings['titles'] if args.print: not_supported = [p for p in args.print if p not in supported_flags] if not_supported: raise ValueError(not_supported) else: to_print = args.print if args.recursive: path = sorted(find_vasp_calculations()) else: path = ['.'] if args.check: for p in path: vaspmeta = Path('{}/vaspmeta.yaml'.format(p)) if not vaspmeta.is_file(): print('{} is missing vaspmeta.yaml'.format(p)) vasprun = Path('{}/vasprun.xml'.format(p)) if not vasprun.is_file(): print('{} is missing vasprun.xml'.format(p)) else: if titles: # Only parse directories with matching vasp_meta titles matching_path = [] for p in path: vm = VASPMeta.from_file('{}/vaspmeta.yaml'.format(p)) if vm.title in titles: matching_path.append(p) path = matching_path for p in path: s = Summary(p) s.output(to_print=to_print)
def setUp(self, mock_parse_vaspun, MockVASPMeta): MockVASPMeta.from_file = Mock(return_value='foo') self.summary = Summary() self.summary.vasprun = Mock(spec=Vasprun) self.summary.meta = Mock(spec=VASPMeta)
def test_summary_init_raises_filenotfounderror_if_file_is_not_found( self, mock_parse_vasprun, MockVASPMeta): MockVASPMeta.from_file = Mock(side_effect=FileNotFoundError) with self.assertRaises(FileNotFoundError): summary = Summary()
def get_summary(p): return Summary(p)
if args.print: not_supported = [p for p in args.print if p not in supported_flags] if not_supported: raise ValueError(not_supported) else: to_print = args.print if args.recursive: path = sorted(find_vasp_calculations()) else: path = ['.'] if args.check: for p in path: vaspmeta = Path('{}/vaspmeta.yaml'.format(p)) if not vaspmeta.is_file(): print('{} is missing vaspmeta.yaml'.format(p)) vasprun = Path('{}/vasprun.xml'.format(p)) if not vasprun.is_file(): print('{} is missing vasprun.xml'.format(p)) else: if titles: # Only parse directories with matching vasp_meta titles matching_path = [] for p in path: vm = VASPMeta.from_file('{}/vaspmeta.yaml'.format(p)) if vm.title in titles: matching_path.append(p) path = matching_path for p in path: s = Summary(p) s.output(to_print=to_print)