def test_add_folder_existing(self): file_changes_json.init_file() path, include, exclude = h_get_dummy_folder_data() added = file_changes_json.add_folder(path, include, exclude) self.assertTrue(added) added = file_changes_json.add_folder(path, include, exclude) self.assertFalse(added)
def test_remove_folder(self): file_changes_json.init_file() path, include, exclude = h_get_dummy_folder_data() file_changes_json.add_folder(path, include, exclude) file_changes_json.remove_folder(path) data = file_changes_json._get_json_data() self.assertEqual({}, data)
def test_remove_folder_not_existing(self): file_changes_json.init_file() path, include, exclude = h_get_dummy_folder_data() self.assertRaises(KeyError, file_changes_json.remove_folder, path, non_exists_ok=False)
def simulate_explorer(): h_create_empty( client_paths.normalize_path(client_paths.LOCAL_CLIENT_DATA, "folder1")) h_register_dummy_user_device_client() file_changes_json.init_file(empty=True) h_add_dummy_server_folder("folder1") h_add_dummy_server_folder("folder2") gui.main.main()
def simulate_many_folders(): h_register_dummy_user_device_client() file_changes_json.init_file() for i in range(3): h_watch_dummy_folder(f"folder {i}") time.sleep(0.1) time.sleep(2) gui.open_gui()
def test_set_include_regexes(self): file_changes_json.init_file() path, include, exclude = h_get_dummy_folder_data() file_changes_json.add_folder(path, include, exclude) new_include = ["hello", "you"] file_changes_json.set_include_regexes(path, new_include) folder = file_changes_json.get_folder_entry(path) self.assertEqual(new_include, folder["include_regexes"])
def setUp(self): file_changes_json.init_file(empty=True) self.abs_folder_path = h_create_empty_dummy_folder() self.rel_file_path = "test.txt" self.abs_file_path = os.path.join(self.abs_folder_path, self.rel_file_path) with open(self.abs_file_path, "w"): pass file_changes.start_observing() file_changes.add_folder(self.abs_folder_path)
def test_add_change_entry(self): file_changes_json.init_file() path, include, exclude = h_get_dummy_folder_data() file_changes_json.add_folder(path, include, exclude) rel_file_path = client_paths.normalize_path("test.txt") file_changes_json.add_change_entry(path, rel_file_path, gen_json.ACTION_PULL) folder_entry = file_changes_json.get_folder_entry(path) changes = folder_entry["changes"] self.assertEqual(1, len(changes))
def start_observing() -> None: """Start watching at all folders in a new thread. Calling this is enough and no further function calls inside this module are needed.""" file_changes_json.init_file() all_folders = file_changes_json.get_all_data() logger_sync.info(f"Watching at folders for changes: {all_folders}") for folder_path, folder in all_folders.items(): _add_watcher(folder_path, folder["include_regexes"], folder["exclude_regexes"]) observer.start() program_state.watching.add_on_stop(sync_waiter.waiter.set)
def auto_login(): """Gui auto login -> explorer""" h_register_dummy_user_device_client() file_changes_json.init_file(empty=True) time.sleep(1) main_thread = threading.Thread(target=main_prog.start, daemon=True) main_thread.start() time.sleep(2) #interface.add_sync_folder(c_paths.normalize_path(c_paths.LOCAL_DATA, "folder1"), "folder1") main.main(screens.REGISTRATION, try_auto_login=True)
def setUp(self) -> None: time.sleep(0.2) if file_changes.observer.is_alive(): file_changes.stop_observing() # file_changes.observer.unschedule_all() h_clear_init_all_folders() self._server_process = h_start_server_process() file_changes_json.init_file(empty=True) file_changes.start_observing() self.folder1_abs_local_path = client_paths.normalize_path( client_paths.LOCAL_CLIENT_DATA, "folder1") h_create_empty(self.folder1_abs_local_path)
def main(start_screen: screens.ScreenName = screens.LOGIN_MANUAL, authentication_only: bool = False, opened_by: Opener = CLIENT): global app if program_state.is_authenticated_at_server.is_running(): if authentication_only: return else: start_screen = screens.EXPLORER else: start_screen = screens.LOGIN_MANUAL logger_general.info(f"Open GUI by {opened_by}") file_changes_json.init_file() # TODO: Needed? app = OpenDriveApp(start_screen, authentication_only) screens.screen_manager = screens.ScreenManager(app) os.chdir(os.path.join(client_paths.CODE_PATH, "client_side/gui/")) app.run()
def test_merge_folders(self): c_json.init_file(empty=True) h_register_dummy_user_device_client() abs_local_path = normalize_path(c_paths.LOCAL_CLIENT_DATA, "folder1") h_create_empty(abs_local_path) dummy_content = {"folder_name": "folder1", "files": ["test.txt", "test2.txt"], "folders": [ {"folder_name": "inner1", "files": ["inner1_test.txt", "inner1_test2.txt"], "folders": []}, {"folder_name": "inner2", "files": ["inner2_test.txt", "inner2_test2.txt"], "folders": []} ]} h_create_files_folders(abs_local_path, dummy_content) interface.add_sync_folder(abs_local_path, "folder1") server_path = path_utils.rel_user_path_to_abs("folder1", 1) current_structure = gen_merge_folders.generate_content_of_folder(server_path, only_files_list=True, top_folder_name="folder1") expected_structure = dummy_content self.assertEqual(expected_structure, current_structure)
def wrapper(): c_json.init_file() c_file_changes.start_observing() c_file_changes.sync_waiter.waiter.clear() logger_general.info("Start connecting to server") while program_state.program.is_running() and not c_net_start.connect(timeout=60): # connect till connected # TODO: Add server info (IP:PORT) sleep_time = 1 time.sleep(sleep_time) if program_state.program.is_running(): logger_general.info("Start authentication at server: Trying `auto login` fallback `manual login`") authentication.authenticate_only() program_state.is_authenticated_at_server.wait_till_running() if program_state.program.is_running(): c_synchronization.full_synchronize() if program_state.program.is_running(): mainloop()
def h_test_merge_method(self, merge_method, f1_init_content, f2_init_content, expected_content): c_json.init_file(empty=True) h_register_dummy_user_device_client() abs_local_path = normalize_path(c_paths.LOCAL_CLIENT_DATA, "folder1") h_create_empty(abs_local_path) f1_path = os.path.join(c_paths.LOCAL_CLIENT_DATA, "folder1") f2_path = path_utils.rel_user_path_to_abs("folder1", 1) net_interface.server.add_folder(f2_init_content["folder_name"]) h_create_files_folders(f1_path, f1_init_content) h_create_files_folders(f2_path, f2_init_content) yield interface.add_sync_folder(abs_local_path, "folder1", merge_method=merge_method) f1_structure = gen_merge_folders.generate_content_of_folder(f1_path, only_files_list=True, top_folder_name=f1_init_content["folder_name"]) f2_structure = gen_merge_folders.generate_content_of_folder(f2_path, only_files_list=True, top_folder_name=f2_init_content["folder_name"]) self.assertEqual(expected_content, f2_structure) self.assertEqual(expected_content, f1_structure) yield
def setUp(self): file_changes_json.init_file(empty=True) self.path = h_create_empty_dummy_folder()
def simulate_explorer2(): file_changes_json.init_file() h_watch_dummy_folder("folder1") h_watch_dummy_folder("r2folsdfsf") gui.main.main()
def test_start_observing(self): file_changes_json.init_file() path, include, exclude = h_get_dummy_folder_data() file_changes.add_folder(self.path, include, exclude) file_changes.start_observing() self.assertEqual(1, len(file_changes.watchers))
def simulate_register(): file_changes_json.init_file() gui.main.main()
def test_init_file(self): file_changes_json.init_file() with open(client_paths.LOCAL_JSON_PATH, "r") as file: data = json.load(file) self.assertEqual({}, data)
def setUp(self): file_changes_json.init_file(empty=True) self.abs_folder_path = h_create_empty_dummy_folder() file_changes.start_observing()
def setUp(self) -> None: file_changes_json.init_file(empty=True)