Exemple #1
0
        def test_main_configs_in_jobs_file(self, print_):
            try:
                _backupO = backups.Backups()
                _backupFilename = _backupO.backup_file(
                    TEST_PLAYER_JSON, _keep_the_original=True)

                # check before changes
                _JSNO_O = ScriptedJsonEditor.JsonRfactorFile()
                _player = _JSNO_O.read(TEST_PLAYER_JSON)
                assert _player["Graphic Options"]["Track Detail"] == 0, \
                    _player["Graphic Options"]["Track Detail"]
                assert _player["Graphic Options"]["Texture Filter"] == 0, \
                    _player["Graphic Options"]["Texture Filter"]

                sys.argv = [
                    'ScriptedJsonEditor',
                    r'Tests\jobs_test_configs.json']

                _exit_code, _status = ScriptedJsonEditor.main()

                # check the changes were made
                _JSNO_O = ScriptedJsonEditor.JsonRfactorFile()
                _player = _JSNO_O.read(TEST_PLAYER_JSON)
                assert _player["Graphic Options"]["Track Detail"] == 1, \
                    _player["Graphic Options"]["Track Detail"]
                assert _player["Graphic Options"]["Texture Filter"] == 4, \
                    _player["Graphic Options"][""]

            finally:
                # restore the original player.JSON
                _backupO.restore_last_backup(TEST_PLAYER_JSON)
Exemple #2
0
 def test_main_key_error_in_jobs_file(self, print_):
     _JSNO_O = ScriptedJsonEditor.JsonFile()
     try:
         _jobs = _JSNO_O._load(
             test_test_strings.jobsJSONstrBadKey,
             'test_test_strings.jobsJSONstrBadKey')
         config = {'rFactor escape slash': True}
     except ValueError:
         assert False, 'Expected job load to succeed'
     assert _jobs
     # Execute
     # For each job in jobsFile
     for job in _jobs["jobs"]:
         _j = ScriptedJsonEditor.Job(_jobs["job definitions"][job], config)
         #   read the file to be edited
         _j._load(
             test_test_strings.playerJSONstr,
             'test_test_strings.playerJSONstr')
         #   do the edits
         #   if successful:
         #     backup 'filepath'
         #     save new contents to 'filepath
         try:
             _j.run_edits()
         except KeyError:
             return  # failed as expected, try the next job
         except ValueError:
             assert False, 'Didn\'t expect ValueError'
         except BaseException:
             assert False, 'Didn\'t expect other error'
     assert False, 'Expected job to fail'
Exemple #3
0
    def test_run_job(self):
        _jsonJob = ScriptedJsonEditor.JsonJobsFile()
        _jsonJob._load(command_line.JOBS_FILE_HELP_STR,
                       'command_line.JOBS_FILE_HELP_STR')
        P_JSON, config = _jsonJob._read()

        _jsonJobDefs = ScriptedJsonEditor.JsonJobsDefinitionsFile(config)
        _jsonJobDefs._load(command_line.JOB_DEFINITIONS_FILE_HELP_STR,
                           'test_test_strings.keyboard_jobs_json_file')
        _jsonJobDefs._read()
        """
        assert P_JSON["job definitions"]["Letterboxing off"] != None
        assert P_JSON["job definitions"]["Letterboxing off"]["JSONfileToBeEdited"] != None
        assert len(P_JSON["job definitions"]["Letterboxing off"]["edits"]) > 0, P_JSON["job definitions"]["Letterboxing off"]["edits"]
        """
        jobs = _jsonJob.get_jobs()
        assert len(jobs) > 0
        """
        No longer in the same file
        assert jobs[0]["JSONfileToBeEdited"] != None
        assert len(jobs[0]["edits"]) > 0, jobs[0]["edits"]
        """

        for i, job in enumerate(jobs):
            _j = ScriptedJsonEditor.Job(job, config)
            #   read the file to be edited
            P_JSON = _j._load(test_test_strings.playerJSONstr,
                              'test_test_strings.playerJSONstr')
            assert P_JSON["Graphic Options"] is not None
            assert P_JSON["Graphic Options"][
                "Allow HUD in cockpit"] is not None
            assert P_JSON["Graphic Options"]["Allow HUD in cockpit"], P_JSON[
                "Graphic Options"]["Allow HUD in cockpit"]

            # before job
            assert _j._get_value("Graphic Options",
                                 "Allow Letterboxing"), _j._get_value(
                                     "Graphic Options", "Allow Letterboxing")

            #   do the edits
            _j.run_edits()

            if i == 0:
                assert _j._get_value(
                    "Graphic Options",
                    "Allow Letterboxing") == False, _j._get_value(
                        "Graphic Options", "Allow Letterboxing")
            else:
                assert _j._get_value("Graphic Options",
                                     "Automap") == 2, _j._get_value(
                                         "Graphic Options", "Automap")
Exemple #4
0
 def test_jobs2base(self):
     _JSNO_O = ScriptedJsonEditor.JsonJobsFile()
     _JSNO_O._load(test_test_strings.jobs2base,
                   'test_test_strings.jobs2base')
     P_JSON, config = _JSNO_O._read()
     assert P_JSON["jobs"] is not None
     for j in P_JSON["jobs"]:
         assert P_JSON["job definitions"][j] is not None
Exemple #5
0
 def test_main_bad_jobs_file(self, print_):
     _JSNO_O = ScriptedJsonEditor.JsonFile()
     try:
         _jobs = _JSNO_O._load(
             test_test_strings.jobsBadJSONstr,
             'test_test_strings.jobsBadJSONstr')
     except ValueError:
         return
     assert False, 'Expected job load to fail'
Exemple #6
0
    def test_edit_job_file(self):
        _jsonJob = ScriptedJsonEditor.JsonJobsFile()
        _jsonJob._load(command_line.JOBS_FILE_HELP_STR,
                       'command_line.JOBS_FILE_HELP_STR')
        P_JSON, __ = _jsonJob._read()
        # Copy JOBS_FILE_HELP_STR and edit it - or just use EDITED_JOBS_FILE_HELP_STR
        # Run edit_job_file
        # _write it to a string??
        # compare to the edited JOBS_FILE_HELP_STR
        _jsonJob._edit_job_file(EDITS)
        # _jsonJob._write()
        P_JSON_edited, __ = _jsonJob._read()

        _jsonJobTest = ScriptedJsonEditor.JsonJobsFile()
        _jsonJobTest._load(EDITED_JOBS_FILE_HELP_STR,
                           'EDITED_JOBS_FILE_HELP_STR')
        P_JSON_TEST_STR, __ = _jsonJobTest._read()
        self.assertEqual(P_JSON_edited, P_JSON_TEST_STR)
Exemple #7
0
 def test_load_JSON_str(self):
     _JSNO_O = ScriptedJsonEditor.JsonJobsFile()
     _JSNO_O._load(test_test_strings.jobsJSONstr1,
                   'test_test_strings.jobsJSONstr1')
     P_JSON, config = _JSNO_O._read()
     assert P_JSON["job definitions"]["job1"] is not None
     assert P_JSON["job definitions"]["job1"][
         "JSONfileToBeEdited"] is not None
     assert len(P_JSON["job definitions"]["job1"]
                ["edits"]) > 0, P_JSON["job definitions"]["job1"]["edits"]
Exemple #8
0
    def test_jobsDefinition_realFile(self):
        _JSNO_O = ScriptedJsonEditor.JsonJobsDefinitionsFile(test_config)
        filepath = this_path(
            os.path.join('..', 'job_definitions', 'Keyboard_jobs.json'))
        jobDefinitions = _JSNO_O.read(filepath)

        assert "Cursor keys control seat" in jobDefinitions['Keyboard_jobs']
        assert "Driver aid buttons disable" in jobDefinitions['Keyboard_jobs']
        assert jobDefinitions['Keyboard_jobs']["Cursor keys control seat"][
            "JSONfileToBeEdited"] == test_config["<CONTROLLER.JSON>"]
Exemple #9
0
 def test_2jobsDefinition(self):
     _JSNO_O = ScriptedJsonEditor.JsonJobsDefinitionsFile(test_config)
     _JSNO_O._load(test_test_strings.jobDefinition,
                   'test_test_strings.jobDefinition')
     jobDefinitions = _JSNO_O._read()
     _JSNO_O = ScriptedJsonEditor.JsonJobsDefinitionsFile(test_config)
     _JSNO_O._load(test_test_strings.jobDefinition2,
                   'test_test_strings.jobDefinition2')
     jobDefinitions.update(_JSNO_O._read())
     assert "VR" in jobDefinitions['test_test_strings.jobDefinition']
     assert "G25 minor controls" in jobDefinitions[
         'test_test_strings.jobDefinition']
     assert jobDefinitions['test_test_strings.jobDefinition']["VR"][
         "JSONfileToBeEdited"] == test_config["<CONTROLLER.JSON>"]
     assert "Wheel settings" in jobDefinitions[
         'test_test_strings.jobDefinition2']
     assert jobDefinitions['test_test_strings.jobDefinition2'][
         "Wheel settings"]["JSONfileToBeEdited"] == test_config[
             "<CONTROLLER.JSON>"]
Exemple #10
0
 def test_jobsJSONfileToBeEdited(self):
     job_definition_filename = 'test_test_strings.jobsJSONfileToBeEdited'
     _JSNO_O = ScriptedJsonEditor.JsonJobsDefinitionsFile(test_config)
     _JSNO_O._load(test_test_strings.jobsJSONfileToBeEdited,
                   job_definition_filename)
     P_JSON = _JSNO_O._read()
     assert P_JSON[job_definition_filename][
         "jobJSONfileToBeEdited"] is not None
     assert P_JSON[job_definition_filename]["jobJSONfileToBeEdited"]["JSONfileToBeEdited"] == "test/player.json", \
         P_JSON[job_definition_filename]["jobJSONfileToBeEdited"]["JSONfileToBeEdited"]
Exemple #11
0
 def test_jobsDefinition_w_macros(self):
     _JSNO_O = ScriptedJsonEditor.JsonJobsDefinitionsFile(
         test_config_w_macros)
     _JSNO_O._load(test_test_strings.jobDefinition,
                   'test_test_strings.jobDefinition')
     jobDefinitions = _JSNO_O._read()
     assert "VR" in jobDefinitions['test_test_strings.jobDefinition']
     assert "G25 minor controls" in jobDefinitions[
         'test_test_strings.jobDefinition']
     assert jobDefinitions['test_test_strings.jobDefinition']["VR"][
         "JSONfileToBeEdited"] == test_config_w_macros["<CONTROLLER.JSON>"]
Exemple #12
0
 def test_jobsConfig(self):
     # Jobs file with config specified
     filepath = this_path('jobs_test_configs.json')
     _JSNO_O = ScriptedJsonEditor.JsonJobsFile()
     P_JSON, config = _JSNO_O.read(filepath)
     assert P_JSON["jobs"] is not None
     for j in P_JSON["jobs"]:
         # Not sure what this was testing
         assert j is not None
     assert config["<PLAYER.JSON>"] == r'Tests\player.JSON', config[
         "<PLAYER.JSON>"]
    def test_using_test_dict(self):
        if os.path.exists(PLAYER_JSON):
            _JSNO_O = ScriptedJsonEditor.JsonFile()
            P_JSON = _JSNO_O.read(PLAYER_JSON)
            ##################################
            # change values as required
            ##################################
            for key, item, newValue in EDITS_EXAMPLE:
                _JSNO_O.edit(key, item, newValue)

            _PLAYER_JSON = PLAYER_JSON + '.edited'
            _JSNO_O.write(_PLAYER_JSON)
            assert os.path.exists(_PLAYER_JSON), _PLAYER_JSON
Exemple #14
0
 def test_newJobsFile(self):
     _JSNO_O = ScriptedJsonEditor.JsonJobsFile()
     _JSNO_O._load(test_test_strings.jobsNewJSONfile,
                   'test_test_strings.jobsNewJSONfile')
     P_JSON, config = _JSNO_O._read()
     jobDefinitions = {}
     for _job_definition_file in P_JSON["job definition files"]:
         _x = _JSNO_O.read(_job_definition_file)
         jobDefinitions.update(_x[0]['job definitions'])
     for _job_set in P_JSON["jobs"]:
         for _job_definition_file in _job_set:
             for _job in _job_set[_job_definition_file]:
                 assert _job in jobDefinitions, _job
    def test_whole_example_job(self):
        sys.argv = ['ScriptedJsonEditor', 'jobs\\VR_G25.json']
        try:
            _backupO = backups.Backups()
            _backupFilename = _backupO.backup_file(PLAYER_JSON,
                                                   _keep_the_original=True)
            _backupFilename = _backupO.backup_file(CONTROLLER_JSON,
                                                   _keep_the_original=True)

            _exit_code, _status = ScriptedJsonEditor.main()

            # check the changes were made
            _JSNO_O = ScriptedJsonEditor.JsonRfactorFile()
            _player = _JSNO_O.read(PLAYER_JSON)
            #assert _player["Graphic Options"]["Allow Letterboxing"] == False, _player["Graphic Options"]["Allow Letterboxing"]
            #assert _player["Graphic Options"]["Automap"] == 3, _player["Graphic Options"]["Automap"]

        finally:
            # restore the original player.JSON
            _backupO.restore_last_backup(PLAYER_JSON)
            _backupO.restore_last_backup(CONTROLLER_JSON)

        assert _exit_code == 0
Exemple #16
0
    def test_main_JSONfileToBeEdited(self):
        sys.argv = ['ScriptedJsonEditor', 'jobs\\VR.json']
        _clo = command_line.CommandLine()
        jobsFile = _clo.get_jobs_file()
        if jobsFile:

            _JSNO_O = ScriptedJsonEditor.JsonJobsFile()
            __, config = _JSNO_O.read(jobsFile)
            _jobs = _JSNO_O.get_jobs()

            if _jobs:
                # Execute
                # For each job in jobsFile
                for job in _jobs:
                    _j = ScriptedJsonEditor.Job(job, config)
                    #   read the file to be edited
                    _j._load(
                        test_test_strings.playerJSONstr,
                        'test_test_strings.playerJSONstr')
            else:
                assert False, 'No jobs in jobs\\VR.json'
        else:
            assert False, r'No jobsfile jobs\VR.json'
Exemple #17
0
 def test_get_job_definitions(self):
     config = {
         "<CONTROLLER.JSON>":
         "c:\\Program Files (x86)\\Steam\\steamapps\\common\\rFactor 2\\UserData\\Player\\Controller.JSON"
     }
     _jsonJob = ScriptedJsonEditor.JsonJobsDefinitionsFile(config)
     P_JSON = _jsonJob._load(command_line.JOB_DEFINITIONS_FILE_HELP_STR,
                             'command_line.JOB_DEFINITIONS_FILE_HELP_STR')
     assert P_JSON["job definitions"]["Letterboxing off"] is not None
     assert P_JSON["job definitions"]["Letterboxing off"][
         "JSONfileToBeEdited"] is not None
     assert len(
         P_JSON["job definitions"]["Letterboxing off"]["edits"]
     ) > 0, P_JSON["job definitions"]["Letterboxing off"]["edits"]
     """
Exemple #18
0
    def test_editJson(self):
        if os.path.exists(filepath):
            _JSNO_O = ScriptedJsonEditor.JsonRfactorFile()
            _JSNO_O.read(filepath)
            ##################################
            # change values as required
            ##################################
            for key, item, newValue in test_test_strings.edits:
                try:
                    _JSNO_O.edit(key, item, newValue)
                except KeyError:  # we're expecting one error
                    assert key == 'GraphicOptions', key

            _filepath = filepath + '.edited'
            _JSNO_O.write(_filepath)
Exemple #19
0
 def test_load_JSON_str_2jobs(self):
     job_definition_filename = 'test_test_strings.jobsJSONstrBadKey2'
     _JSNO_O = ScriptedJsonEditor.JsonJobsDefinitionsFile(test_config)
     _JSNO_O._load(test_test_strings.jobsJSONstrBadKey2,
                   job_definition_filename)
     P_JSON = _JSNO_O._read()
     assert P_JSON[job_definition_filename]["job1"] is not None
     assert P_JSON[job_definition_filename]["job1"][
         "JSONfileToBeEdited"] is not None
     assert len(P_JSON[job_definition_filename]["job1"]["edits"]
                ) > 0, P_JSON[job_definition_filename]["job1"]["edits"]
     assert P_JSON[job_definition_filename]["job2"] is not None
     assert P_JSON[job_definition_filename]["job2"][
         "JSONfileToBeEdited"] is not None
     assert len(P_JSON[job_definition_filename]["job2"]["edits"]
                ) > 0, P_JSON[job_definition_filename]["job2"]["edits"]
Exemple #20
0
    def test_main(self, print_):                        # Note added , print_ to mock print()
        try:
            _backupO = backups.Backups()
            _backupFilename = _backupO.backup_file(
                TEST_PLAYER_JSON, _keep_the_original=True)

            # check before changes
            _JSNO_O = ScriptedJsonEditor.JsonRfactorFile()
            _player = _JSNO_O.read(TEST_PLAYER_JSON)
            assert _player["Graphic Options"]["Allow Letterboxing"], \
                _player["Graphic Options"]["Allow Letterboxing"]
            assert _player["Graphic Options"]["Automap"] == 3, \
                _player["Graphic Options"]["Automap"]

            sys.argv = ['ScriptedJsonEditor', r'Tests\jobs_test1.json']

            _exit_code, _status = ScriptedJsonEditor.main()

            # check the changes were made
            _JSNO_O = ScriptedJsonEditor.JsonRfactorFile()
            _player = _JSNO_O.read(TEST_PLAYER_JSON)
            assert _player["Graphic Options"]["Allow Letterboxing"] == False, \
                _player["Graphic Options"]["Allow Letterboxing"]
            assert _player["Graphic Options"]["Automap"] == 2, \
                _player["Graphic Options"]["Automap"]

        finally:
            # restore the original player.JSON
            _backupO.restore_last_backup(TEST_PLAYER_JSON)

        assert _exit_code == 0

        # Mock the print call in main()
        @patch('ScriptedJsonEditor.print', create=True)
        # Note added , print_ to mock print()
        def test_main_configs_in_jobs_file(self, print_):
            try:
                _backupO = backups.Backups()
                _backupFilename = _backupO.backup_file(
                    TEST_PLAYER_JSON, _keep_the_original=True)

                # check before changes
                _JSNO_O = ScriptedJsonEditor.JsonRfactorFile()
                _player = _JSNO_O.read(TEST_PLAYER_JSON)
                assert _player["Graphic Options"]["Track Detail"] == 0, \
                    _player["Graphic Options"]["Track Detail"]
                assert _player["Graphic Options"]["Texture Filter"] == 0, \
                    _player["Graphic Options"]["Texture Filter"]

                sys.argv = [
                    'ScriptedJsonEditor',
                    r'Tests\jobs_test_configs.json']

                _exit_code, _status = ScriptedJsonEditor.main()

                # check the changes were made
                _JSNO_O = ScriptedJsonEditor.JsonRfactorFile()
                _player = _JSNO_O.read(TEST_PLAYER_JSON)
                assert _player["Graphic Options"]["Track Detail"] == 1, \
                    _player["Graphic Options"]["Track Detail"]
                assert _player["Graphic Options"]["Texture Filter"] == 4, \
                    _player["Graphic Options"][""]

            finally:
                # restore the original player.JSON
                _backupO.restore_last_backup(TEST_PLAYER_JSON)

        assert _exit_code == 0
Exemple #21
0
 def test_readJsonFile(self):
     if os.path.exists(filepath):
         _JSNO_O = ScriptedJsonEditor.JsonRfactorFile()
         _JSNO_O.read(filepath)
         _filepath = filepath + '.mostlySame'
         _JSNO_O.write(_filepath)
Exemple #22
0
 def test_main_non_existent_jobs_file(self, print_):
     sys.argv = ['ScriptedJsonEditor', 'JsonEditorJobs.json']
     assert ScriptedJsonEditor.main()[0] != 0
Exemple #23
0
 def test_read_file(self):
     filepath = this_path('jobs_test1.json')
     _JSNO_O = ScriptedJsonEditor.JsonJobsFile()
     P_JSON, config = _JSNO_O.read(filepath)
     assert P_JSON["job definition files"] is not None
     assert len(P_JSON["jobs"]) > 0, P_JSON["job definitions"]["jobs"]