Marco Ricci commited on 2024-09-11 21:06:13
              Zeige 2 geänderte Dateien mit 18 Einfügungen und 19 Löschungen.
            
Fix the test `test_230b_store_config_custom_error` to actually test a custom error. Also expand GitHub issue references with the full URL.
| ... | ... | 
                      @@ -72,7 +72,7 @@ _EMPTY_SELECTION = 'Empty selection'  | 
                  
| 72 | 72 | 
                        DERIVEPASSPHRASE_PATH variable, which defaults to  | 
                    
| 73 | 73 | 
                        `~/.derivepassphrase` on UNIX-like systems and  | 
                    
| 74 | 74 | 
                        `C:\Users\<user>\AppData\Roaming\Derivepassphrase` on Windows.  | 
                    
| 75 | 
                        - """  | 
                    |
| 75 | 
                        + """,  | 
                    |
| 76 | 76 | 
                        )  | 
                    
| 77 | 77 | 
                        @click.version_option(version=dpp.__version__, prog_name=PROG_NAME)  | 
                    
| 78 | 78 | 
                         @click.argument('subcommand_args', nargs=-1, type=click.UNPROCESSED)
                       | 
                    
| ... | ... | 
                      @@ -1090,14 +1090,13 @@ contents go here  | 
                  
| 1090 | 1090 | 
                        def test_230_config_directory_nonexistant(  | 
                    
| 1091 | 1091 | 
                        self, monkeypatch: pytest.MonkeyPatch  | 
                    
| 1092 | 1092 | 
                        ) -> None:  | 
                    
| 1093 | 
                        - """the-13th-letter/derivepassphrase#6"""  | 
                    |
| 1093 | 
                        + """https://github.com/the-13th-letter/derivepassphrase/issues/6"""  | 
                    |
| 1094 | 1094 | 
                        runner = click.testing.CliRunner(mix_stderr=False)  | 
                    
| 1095 | 1095 | 
                        with tests.isolated_config(  | 
                    
| 1096 | 1096 | 
                        monkeypatch=monkeypatch,  | 
                    
| 1097 | 1097 | 
                        runner=runner,  | 
                    
| 1098 | 1098 | 
                        ):  | 
                    
| 1099 | 
                        -            os.remove('.derivepassphrase/settings.json')
                       | 
                    |
| 1100 | 
                        -            os.rmdir('.derivepassphrase')
                       | 
                    |
| 1099 | 
                        +            shutil.rmtree('.derivepassphrase')
                       | 
                    |
| 1101 | 1100 | 
                        os_makedirs_called = False  | 
                    
| 1102 | 1101 | 
                        real_os_makedirs = os.makedirs  | 
                    
| 1103 | 1102 | 
                         | 
                    
| ... | ... | 
                      @@ -1129,7 +1128,7 @@ contents go here  | 
                  
| 1129 | 1128 | 
                        def test_230a_config_directory_not_a_file(  | 
                    
| 1130 | 1129 | 
                        self, monkeypatch: pytest.MonkeyPatch  | 
                    
| 1131 | 1130 | 
                        ) -> None:  | 
                    
| 1132 | 
                        - """the-13th-letter/derivepassphrase#6"""  | 
                    |
| 1131 | 
                        + """https://github.com/the-13th-letter/derivepassphrase/issues/6"""  | 
                    |
| 1133 | 1132 | 
                        runner = click.testing.CliRunner(mix_stderr=False)  | 
                    
| 1134 | 1133 | 
                        with tests.isolated_config(  | 
                    
| 1135 | 1134 | 
                        monkeypatch=monkeypatch,  | 
                    
| ... | ... | 
                      @@ -1167,19 +1166,13 @@ contents go here  | 
                  
| 1167 | 1166 | 
                        monkeypatch=monkeypatch,  | 
                    
| 1168 | 1167 | 
                        runner=runner,  | 
                    
| 1169 | 1168 | 
                        ):  | 
                    
| 1170 | 
                        - _save_config = cli._save_config  | 
                    |
| 1169 | 
                        + custom_error = 'custom error message'  | 
                    |
| 1171 | 1170 | 
                         | 
                    
| 1172 | 
                        - def obstruct_config_saving(*args: Any, **kwargs: Any) -> Any:  | 
                    |
| 1173 | 
                        - with contextlib.suppress(FileNotFoundError):  | 
                    |
| 1174 | 
                        -                    shutil.rmtree('.derivepassphrase')
                       | 
                    |
| 1175 | 
                        - with open(  | 
                    |
| 1176 | 
                        - '.derivepassphrase', 'w', encoding='UTF-8'  | 
                    |
| 1177 | 
                        - ) as outfile:  | 
                    |
| 1178 | 
                        -                    print('Obstruction!!', file=outfile)
                       | 
                    |
| 1179 | 
                        - monkeypatch.setattr(cli, '_save_config', _save_config)  | 
                    |
| 1180 | 
                        - return _save_config(*args, **kwargs)  | 
                    |
| 1171 | 
                        + def raiser(config: Any) -> None:  | 
                    |
| 1172 | 
                        + del config  | 
                    |
| 1173 | 
                        + raise RuntimeError(custom_error)  | 
                    |
| 1181 | 1174 | 
                         | 
                    
| 1182 | 
                        - monkeypatch.setattr(cli, '_save_config', obstruct_config_saving)  | 
                    |
| 1175 | 
                        + monkeypatch.setattr(cli, '_save_config', raiser)  | 
                    |
| 1183 | 1176 | 
                        _result = runner.invoke(  | 
                    
| 1184 | 1177 | 
                        cli.derivepassphrase_vault,  | 
                    
| 1185 | 1178 | 
                        ['--config', '-p'],  | 
                    
| ... | ... | 
                      @@ -1188,7 +1181,7 @@ contents go here  | 
                  
| 1188 | 1181 | 
                        )  | 
                    
| 1189 | 1182 | 
                        result = tests.ReadableResult.parse(_result)  | 
                    
| 1190 | 1183 | 
                        assert result.error_exit(  | 
                    
| 1191 | 
                        - error='Cannot store config'  | 
                    |
| 1184 | 
                        + error=custom_error  | 
                    |
| 1192 | 1185 | 
                        ), 'expected error exit and known error message'  | 
                    
| 1193 | 1186 | 
                         | 
                    
| 1194 | 1187 | 
                        @pytest.mark.parametrize(  | 
                    
| ... | ... | 
                      @@ -1636,10 +1629,13 @@ class TestCLITransition:  | 
                  
| 1636 | 1629 | 
                        )  | 
                    
| 1637 | 1630 | 
                        result = tests.ReadableResult.parse(_result)  | 
                    
| 1638 | 1631 | 
                        assert result.clean_exit(empty_stderr=False), 'expected clean exit'  | 
                    
| 1639 | 
                        - assert result.stderr == f"""\  | 
                    |
| 1632 | 
                        + assert (  | 
                    |
| 1633 | 
                        + result.stderr  | 
                    |
| 1634 | 
                        + == f"""\  | 
                    |
| 1640 | 1635 | 
                         {cli.PROG_NAME}: Deprecation warning: A subcommand will be required in v1.0. See --help for available subcommands.
                       | 
                    
| 1641 | 1636 | 
                         {cli.PROG_NAME}: Warning: Defaulting to subcommand "vault".
                       | 
                    
| 1642 | 1637 | 
                        """ # noqa: E501  | 
                    
| 1638 | 
                        + )  | 
                    |
| 1643 | 1639 | 
                        assert json.loads(result.output) == tests.VAULT_V03_CONFIG_DATA  | 
                    
| 1644 | 1640 | 
                         | 
                    
| 1645 | 1641 | 
                        @pytest.mark.parametrize(  | 
                    
| ... | ... | 
                      @@ -1664,10 +1660,13 @@ class TestCLITransition:  | 
                  
| 1664 | 1660 | 
                        )  | 
                    
| 1665 | 1661 | 
                        result = tests.ReadableResult.parse(_result)  | 
                    
| 1666 | 1662 | 
                        assert result.clean_exit(empty_stderr=False), 'expected clean exit'  | 
                    
| 1667 | 
                        - assert result.stderr == f"""\  | 
                    |
| 1663 | 
                        + assert (  | 
                    |
| 1664 | 
                        + result.stderr  | 
                    |
| 1665 | 
                        + == f"""\  | 
                    |
| 1668 | 1666 | 
                         {cli.PROG_NAME}: Deprecation warning: A subcommand will be required in v1.0. See --help for available subcommands.
                       | 
                    
| 1669 | 1667 | 
                         {cli.PROG_NAME}: Warning: Defaulting to subcommand "vault".
                       | 
                    
| 1670 | 1668 | 
                        """ # noqa: E501  | 
                    
| 1669 | 
                        + )  | 
                    |
| 1671 | 1670 | 
                        for c in charset:  | 
                    
| 1672 | 1671 | 
                        assert (  | 
                    
| 1673 | 1672 | 
                        c not in result.output  | 
                    
| 1674 | 1673 |