26 Commits
Author SHA1 Message Date
r5dandBrad Warren d2c16fcb62 certbot: Flush output after write in IDisplay methods. (#5164)
- Update `notification`, `yesno`, `checklist`, `_print_menu`, and
  `_get_valid_int_ans` methods in `certbot.display.util.FileDisplay`.
- Update `notification` method in
  `certbot.display.util.NoninteractiveDisplay`.

Addresses issue #4879.
2017-10-04 18:06:57 -07:00
Zach ShepherdandBrad Warren f51d345d5b Low-impact cleanup of IDisplay (#4818)
Remove unused help-related display code. When NcursesDisplay was
removed[1], help was deprecated. This change removes the remaining
bits and pieces of code.

Remove unused escape-related display code. When NcursesDisplay was
removed[1], escape was deprecated. This change removes the remaining
bits and pieces of code.

Remove uses of unused menu parameters.

Remove unused default_status/default_state argument from checklist.
(This seems safe because not only is it unused, the parameter has
different names in the interface and implementation)

1 - d54cb76432

Resolves #4795.
2017-06-15 17:14:38 -07:00
Brad Warren 2ebd8e9763 Add trailing space to prompt. 2017-06-09 10:50:21 -07:00
Brad Warren 1871f0d1b9 Deduplicate code using textwrap.fill. 2017-06-09 10:46:51 -07:00
Brad WarrenandGitHub 13c88f1c02 Properly handle EOF in input (#4612)
* properly handle eof

* cleanup InputWithTimeoutTest

* add test_eof

* add comment about mimicking getpass
2017-05-03 14:44:15 -07:00
Brad WarrenandGitHub 79d5c890c3 Add a timeout to prompts (#4601)
* Add input_with_timeout

* use input_with_timeout
2017-05-01 14:55:31 -07:00
Zach ShepherdandBrad Warren b41472afce Enhance display.util to support input validation (#4372)
* display: support validation of user input

To avoid each caller of `display.input` and `display.directory_select`
needing to implement validation logic, this allows for a validator to be
supplied as a part of the call.

Following the existing pattern from `webroot`, this validator is expected
to throw a `Error` when it encounters invalid input. The user then
receives a `notification` is re-prompted.

Testing Done:
 * tox -e py27
 * tox -e lint

* plugins: update webroot to use display's validation functionality

This change updates the webroot plugin to use the now-built-in validation
functionality in display, reducing duplicated code.

Testing Done:
 * tox -e py27
 * tox -e lint

* display: move validation logic to ops

To avoid adding complexity to `IDisplay` methods, move validation logic
to helper methods in `display.ops`.

Testing Done:
 * tox -e py27
 * tox -e lint
2017-04-24 17:36:00 -07:00
Peter EckersleyandBrad Warren aa389cf8aa Revert "uncomment assertion (#4072)" (#4110)
Revert "uncomment assertion (#4072)"
2017-02-01 09:32:24 -08:00
Brad WarrenandPeter Eckersley 578815a20a uncomment assertion (#4072) 2017-01-24 14:39:27 -08:00
Brad WarrenandGitHub 9c9004aff1 Stop IDisplay AssertionErrors (#4010)
Fixes #3996.

I'm pretty confident this PR solves the problem. I've audited all calls to IDisplay methods and the assertions done in certbot.display.util are now done in all our unit tests.

With that said, it wouldn't hurt to have someone else double check I didn't miss anything. The easiest way to do this is to grep for IDisplay in our code and ensure all calls to IDisplay methods are valid. This means every method call other than notification (because a notification call is always OK) either provides a value for default or force_interactive. This is defined in interfaces.py.

I've also been considering removing the assertion that's been causing us trouble here from our release. The only argument I have for not doing so is it may hinder 3rd party plugin development. When they use IDisplay, they have the same problem as we do with prompting users without a TTY. Not keeping this assertion in makes it more likely they won't notice the issue and Certbot will crash on an unsuspecting user.

With that said, none of our known 3rd party plugins use IDisplay at all.

* Provide force_interactive in _get_certname

* Use force_interactive when asking for webroot

* Factor IDisplay assertion into it's own function

* Add util.patch_get_utility()

* Allow custom path to patch_get_utiity

* Change GetEmailTest to use patch_get_utility

* Use new_callable to create new objects

* Modify tests to use patch_get_utility

* Improve FreezableMock documentation

* Add user facing error to TTY magic

* Comment out assert_valid_call

* Add test_input_assertion_fail2()
2017-01-10 16:25:33 -08:00
Brad WarrenandPeter Eckersley 12edbb53db Fixes #3954 and adds a test to prevent regressions (#3957)
* fixes #3954 and adds test to prevent regressions

* assure pylint I know what I'm doing

* Test FileDisplay methods take force_interactive
2016-12-23 10:49:51 -08:00
Brad WarrenandPeter Eckersley f92254769b I promise checklists are OK (fixes #3934) (#3940)
* TIL checklist calls input

* full coverage on certbot/display/util.py

* improve no double warning test
2016-12-20 14:34:12 -08:00
Brad WarrenandPeter Eckersley ae379568b1 Mitigate problems for people who run without -n (#3916)
* CLI flag for forcing interactivity

* add --force-interactive

* Add force_interactive error checking and tests

* Add force_interactive parameter to FileDisplay

* add _can_interact

* Add _return_default

* Add **unused_kwargs to NoninteractiveDisplay

* improve _return_default assertion

* Change IDisplay calls and write tests

* Document force_interactive in interfaces.py

* Don't force_interactive with a new prompt

* Warn when skipping an interaction for the first time

* add specific logger.debug message
2016-12-19 12:45:40 -08:00
Erica Portnoyandschoen 2b229d4b9d Allow notification interface to not wrap text (#3728) 2016-11-07 16:14:09 -08:00
Erica PortnoyandGitHub 4b5db7aec4 Allow user to select all domains by typing empty string at checklist (#3693)
* Allow user to select all domains by typing empty string at checklist
2016-10-26 15:43:40 -07:00
Erica PortnoyandBrad Warren d54cb76432 Remove the curses dialog, thereby deprecating the --help and --dialog command line options (#3665)
* Remove the curses dialog, thereby deprecating the --help and --dialog command line options

* Deprecate --dialog and suppress --text
2016-10-21 15:45:57 -07:00
Noah SwartzandGitHub ed6b6e2286 Merge pull request #3268 from jsachs/dialog-autosize
Set dialog widgets to use autowidgetsize
2016-08-15 15:03:12 -07:00
Yen Chi Hsuan fe76d558ed Enable unit tests of certbot core on Python 3 2016-08-06 21:09:43 +08:00
Jacob Sachs 64012a6053 set dialog widgets to use autowidgetsize 2016-07-09 09:18:16 -03:00
Peter Eckersley 4b84538c8c Address review comments 2016-07-06 12:57:16 -07:00
Peter Eckersley 23f0ccbc8e Address review issues 2016-06-25 12:28:47 -07:00
Peter Eckersley 8a28cb7352 Implement Brad's more systematic solution for this 2016-06-22 15:50:21 -07:00
Peter Eckersley e231dae2c1 Merge remote-tracking branch 'origin/master' into dialog-escape 2016-06-22 15:35:07 -07:00
Amjad Mashaal 0999705691 Fixing wrapping for messages with URLs 2016-05-25 22:58:16 +02:00
Brad Warren 1b565ef74a s/Let's Encrypt/Certbot 2016-04-13 16:13:50 -07:00
Brad Warren 3961b70deb s/letsencrypt/certbot 2016-04-13 16:03:59 -07:00