Marco Ricci commited on 2024-07-28 14:27:31
              Zeige 2 geänderte Dateien mit 43 Einfügungen und 4 Löschungen.
            
Running the tests on a machine which already had a broken derivepassphrase configuration (e.g., invalid JSON in the `settings.json` file) previously caused some unrelated tests to fail for that reason. Therefore, apply isolation to *all* tests calling the command-line interface.
| ... | ... | 
                      @@ -196,8 +196,13 @@ for opt, config in SINGLES.items():  | 
                  
| 196 | 196 | 
                         | 
                    
| 197 | 197 | 
                         | 
                    
| 198 | 198 | 
                        class TestCLI:  | 
                    
| 199 | 
                        - def test_200_help_output(self) -> None:  | 
                    |
| 199 | 
                        + def test_200_help_output(self, monkeypatch: Any) -> None:  | 
                    |
| 200 | 200 | 
                        runner = click.testing.CliRunner(mix_stderr=False)  | 
                    
| 201 | 
                        + with tests.isolated_config(  | 
                    |
| 202 | 
                        + monkeypatch=monkeypatch,  | 
                    |
| 203 | 
                        + runner=runner,  | 
                    |
| 204 | 
                        +            config={'services': {}},
                       | 
                    |
| 205 | 
                        + ):  | 
                    |
| 201 | 206 | 
                        result = runner.invoke(  | 
                    
| 202 | 207 | 
                        cli.derivepassphrase, ['--help'], catch_exceptions=False  | 
                    
| 203 | 208 | 
                        )  | 
                    
| ... | ... | 
                      @@ -219,6 +224,11 @@ class TestCLI:  | 
                  
| 219 | 224 | 
                                 option = f'--{charset_name}'
                       | 
                    
| 220 | 225 | 
                                 charset = dpp.Vault._CHARSETS[charset_name].decode('ascii')
                       | 
                    
| 221 | 226 | 
                        runner = click.testing.CliRunner(mix_stderr=False)  | 
                    
| 227 | 
                        + with tests.isolated_config(  | 
                    |
| 228 | 
                        + monkeypatch=monkeypatch,  | 
                    |
| 229 | 
                        + runner=runner,  | 
                    |
| 230 | 
                        +            config={'services': {}},
                       | 
                    |
| 231 | 
                        + ):  | 
                    |
| 222 | 232 | 
                        result = runner.invoke(  | 
                    
| 223 | 233 | 
                        cli.derivepassphrase,  | 
                    
| 224 | 234 | 
                        [option, '0', '-p', DUMMY_SERVICE],  | 
                    
| ... | ... | 
                      @@ -240,6 +250,11 @@ class TestCLI:  | 
                  
| 240 | 250 | 
                        def test_202_disable_repetition(self, monkeypatch: Any) -> None:  | 
                    
| 241 | 251 | 
                        monkeypatch.setattr(cli, '_prompt_for_passphrase', tests.auto_prompt)  | 
                    
| 242 | 252 | 
                        runner = click.testing.CliRunner(mix_stderr=False)  | 
                    
| 253 | 
                        + with tests.isolated_config(  | 
                    |
| 254 | 
                        + monkeypatch=monkeypatch,  | 
                    |
| 255 | 
                        + runner=runner,  | 
                    |
| 256 | 
                        +            config={'services': {}},
                       | 
                    |
| 257 | 
                        + ):  | 
                    |
| 243 | 258 | 
                        result = runner.invoke(  | 
                    
| 244 | 259 | 
                        cli.derivepassphrase,  | 
                    
| 245 | 260 | 
                        ['--repeat', '0', '-p', DUMMY_SERVICE],  | 
                    
| ... | ... | 
                      @@ -388,8 +403,15 @@ class TestCLI:  | 
                  
| 388 | 403 | 
                        '--length',  | 
                    
| 389 | 404 | 
                        ],  | 
                    
| 390 | 405 | 
                        )  | 
                    
| 391 | 
                        - def test_210_invalid_argument_range(self, option: str) -> None:  | 
                    |
| 406 | 
                        + def test_210_invalid_argument_range(  | 
                    |
| 407 | 
                        + self, monkeypatch: Any, option: str  | 
                    |
| 408 | 
                        + ) -> None:  | 
                    |
| 392 | 409 | 
                        runner = click.testing.CliRunner(mix_stderr=False)  | 
                    
| 410 | 
                        + with tests.isolated_config(  | 
                    |
| 411 | 
                        + monkeypatch=monkeypatch,  | 
                    |
| 412 | 
                        + runner=runner,  | 
                    |
| 413 | 
                        +            config={'services': {}},
                       | 
                    |
| 414 | 
                        + ):  | 
                    |
| 393 | 415 | 
                        for value in '-42', 'invalid':  | 
                    
| 394 | 416 | 
                        result = runner.invoke(  | 
                    
| 395 | 417 | 
                        cli.derivepassphrase,  | 
                    
| ... | ... | 
                      @@ -482,10 +504,16 @@ class TestCLI:  | 
                  
| 482 | 504 | 
                        )  | 
                    
| 483 | 505 | 
                        def test_212_incompatible_options(  | 
                    
| 484 | 506 | 
                        self,  | 
                    
| 507 | 
                        + monkeypatch: Any,  | 
                    |
| 485 | 508 | 
                        options: list[str],  | 
                    
| 486 | 509 | 
                        service: bool | None,  | 
                    
| 487 | 510 | 
                        ) -> None:  | 
                    
| 488 | 511 | 
                        runner = click.testing.CliRunner(mix_stderr=False)  | 
                    
| 512 | 
                        + with tests.isolated_config(  | 
                    |
| 513 | 
                        + monkeypatch=monkeypatch,  | 
                    |
| 514 | 
                        + runner=runner,  | 
                    |
| 515 | 
                        +            config={'services': {}},
                       | 
                    |
| 516 | 
                        + ):  | 
                    |
| 489 | 517 | 
                        result = runner.invoke(  | 
                    
| 490 | 518 | 
                        cli.derivepassphrase,  | 
                    
| 491 | 519 | 
                        [*options, DUMMY_SERVICE] if service else options,  | 
                    
| ... | ... | 
                      @@ -886,8 +914,13 @@ contents go here  | 
                  
| 886 | 914 | 
                        custom_error.encode() in result.stderr_bytes  | 
                    
| 887 | 915 | 
                        ), 'expected error message missing'  | 
                    
| 888 | 916 | 
                         | 
                    
| 889 | 
                        - def test_226_no_arguments(self) -> None:  | 
                    |
| 917 | 
                        + def test_226_no_arguments(self, monkeypatch: Any) -> None:  | 
                    |
| 890 | 918 | 
                        runner = click.testing.CliRunner(mix_stderr=False)  | 
                    
| 919 | 
                        + with tests.isolated_config(  | 
                    |
| 920 | 
                        + monkeypatch=monkeypatch,  | 
                    |
| 921 | 
                        + runner=runner,  | 
                    |
| 922 | 
                        +            config={'services': {}},
                       | 
                    |
| 923 | 
                        + ):  | 
                    |
| 891 | 924 | 
                        result = runner.invoke(  | 
                    
| 892 | 925 | 
                        cli.derivepassphrase, [], catch_exceptions=False  | 
                    
| 893 | 926 | 
                        )  | 
                    
| ... | ... | 
                      @@ -897,8 +930,13 @@ contents go here  | 
                  
| 897 | 930 | 
                        b'SERVICE is required' in result.stderr_bytes  | 
                    
| 898 | 931 | 
                        ), 'expected error message missing'  | 
                    
| 899 | 932 | 
                         | 
                    
| 900 | 
                        - def test_226a_no_passphrase_or_key(self) -> None:  | 
                    |
| 933 | 
                        + def test_226a_no_passphrase_or_key(self, monkeypatch: Any) -> None:  | 
                    |
| 901 | 934 | 
                        runner = click.testing.CliRunner(mix_stderr=False)  | 
                    
| 935 | 
                        + with tests.isolated_config(  | 
                    |
| 936 | 
                        + monkeypatch=monkeypatch,  | 
                    |
| 937 | 
                        + runner=runner,  | 
                    |
| 938 | 
                        +            config={'services': {}},
                       | 
                    |
| 939 | 
                        + ):  | 
                    |
| 902 | 940 | 
                        result = runner.invoke(  | 
                    
| 903 | 941 | 
                        cli.derivepassphrase, [DUMMY_SERVICE], catch_exceptions=False  | 
                    
| 904 | 942 | 
                        )  |