def protected_config(): """ Context manager to be used in all tests that modify the config to ensure that the config is left untouched even if the tests fail """ ocfg: DotDict = Config().current_config original_config = deepcopy(ocfg) yield cfg = Config() cfg.current_config = original_config cfg.save_to_home()
def test_generate_guid(loc, stat, smpl): # update config to generate a particular guid. Read it back to verify with protected_config(): cfg = Config() cfg['GUID_components']['location'] = loc cfg['GUID_components']['work_station'] = stat cfg['GUID_components']['sample'] = smpl cfg.save_to_home() guid = generate_guid() gen_time = int(np.round(time.time() * 1000)) comps = parse_guid(guid) if smpl == 0: smpl = int('a' * 8, base=16) assert comps['location'] == loc assert comps['work_station'] == stat assert comps['sample'] == smpl assert comps['time'] - gen_time < 2
def set_guid_location_code() -> None: """ Interactive function to set the location code. """ cfg = Config() old_loc = cfg['GUID_components']['location'] print(f'Updating GUID location code. Current location code is: {old_loc}') if old_loc != 0: print('That is a non-default location code. Perhaps you should not ' 'change it? Re-enter that code to leave it unchanged.') loc_str = input('Please enter the new location code (1-256): ') try: location = int(loc_str) except ValueError: print('The location code must be an integer. No update performed.') return if not (257 > location > 0): print('The location code must be between 1 and 256 (both included). ' 'No update performed') return cfg['GUID_components']['location'] = location cfg.save_to_home()
def set_guid_work_station_code() -> None: """ Interactive function to set the work station code """ cfg = Config() old_ws = cfg['GUID_components']['work_station'] print('Updating GUID work station code. ' f'Current work station code is: {old_ws}') if old_ws != 0: print('That is a non-default work station code. Perhaps you should not' ' change it? Re-enter that code to leave it unchanged.') ws_str = input('Please enter the new work station code (1-16777216): ') try: work_station = int(ws_str) except ValueError: print('The work station code must be an integer. No update performed.') return if not (16777216 > work_station > 0): print('The work staion code must be between 1 and 256 (both included).' ' No update performed') return cfg['GUID_components']['work_station'] = work_station cfg.save_to_home()