コード例 #1
0
 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)
コード例 #2
0
 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)
コード例 #3
0
 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)
コード例 #4
0
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()
コード例 #5
0
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()
コード例 #6
0
    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"])
コード例 #7
0
 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)
コード例 #8
0
    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))
コード例 #9
0
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)
コード例 #10
0
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)
コード例 #11
0
 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)
コード例 #12
0
ファイル: main.py プロジェクト: JulianSobott/OpenDrive
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()
コード例 #13
0
    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)
コード例 #14
0
 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()
コード例 #15
0
    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
コード例 #16
0
 def setUp(self):
     file_changes_json.init_file(empty=True)
     self.path = h_create_empty_dummy_folder()
コード例 #17
0
def simulate_explorer2():
    file_changes_json.init_file()
    h_watch_dummy_folder("folder1")
    h_watch_dummy_folder("r2folsdfsf")

    gui.main.main()
コード例 #18
0
 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))
コード例 #19
0
def simulate_register():
    file_changes_json.init_file()
    gui.main.main()
コード例 #20
0
 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)
コード例 #21
0
 def setUp(self):
     file_changes_json.init_file(empty=True)
     self.abs_folder_path = h_create_empty_dummy_folder()
     file_changes.start_observing()
コード例 #22
0
 def setUp(self) -> None:
     file_changes_json.init_file(empty=True)