From 4cb4da4eed76ead6c74ead2cd1bc5e043b258bb3 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Wed, 27 Nov 2019 11:11:39 -0500 Subject: [PATCH] Add tests capturing UI expectation for non-interactive argument. Ref #548. --- tests/test_settings.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/tests/test_settings.py b/tests/test_settings.py index 0e3beec4..bafa3abb 100644 --- a/tests/test_settings.py +++ b/tests/test_settings.py @@ -14,6 +14,7 @@ # limitations under the License. import os.path import textwrap +import argparse from twine import exceptions from twine import settings @@ -81,3 +82,25 @@ def test_client_cert_is_set_and_password_not_if_both_given(entered_password): username='fakeuser', password='anything', client_cert=client_cert) assert not settings_obj.password assert settings_obj.client_cert == client_cert + + +@pytest.fixture +def parser(): + parser = argparse.ArgumentParser() + settings.Settings.register_argparse_arguments(parser) + return parser + + +class TestArgumentParsing: + + def test_non_interactive_flag(self, parser): + args = parser.parse_args(['--non-interactive']) + assert args.non_interactive + + def test_non_interactive_environment(self, parser, monkeypatch): + monkeypatch.setenv(TWINE_NON_INTERACTIVE="1") + args = parser.parse_args([]) + assert args.non_interactive + monkeypatch.setenv(TWINE_NON_INTERACTIVE="0") + args = parser.parse_args([]) + assert not args.non_interactive