cliutil: Add date_arg() function.
Meant to be used as an argument type.
This commit is contained in:
parent
4a28596db2
commit
7660700e6c
2 changed files with 25 additions and 0 deletions
|
@ -17,6 +17,7 @@ You should have received a copy of the GNU Affero General Public License
|
||||||
along with this program. If not, see <https://www.gnu.org/licenses/>."""
|
along with this program. If not, see <https://www.gnu.org/licenses/>."""
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
|
import datetime
|
||||||
import enum
|
import enum
|
||||||
import io
|
import io
|
||||||
import logging
|
import logging
|
||||||
|
@ -231,6 +232,9 @@ def add_version_argument(parser: argparse.ArgumentParser) -> argparse.Action:
|
||||||
help="Show program version and license information",
|
help="Show program version and license information",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def date_arg(arg: str) -> datetime.date:
|
||||||
|
return datetime.datetime.strptime(arg, '%Y-%m-%d').date()
|
||||||
|
|
||||||
def make_entry_point(mod_name: str, prog_name: str=sys.argv[0]) -> Callable[[], int]:
|
def make_entry_point(mod_name: str, prog_name: str=sys.argv[0]) -> Callable[[], int]:
|
||||||
"""Create an entry_point function for a tool
|
"""Create an entry_point function for a tool
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
|
import datetime
|
||||||
import errno
|
import errno
|
||||||
import io
|
import io
|
||||||
import inspect
|
import inspect
|
||||||
|
@ -74,6 +75,26 @@ def test_bytes_output_stream(path):
|
||||||
actual = cliutil.bytes_output(path, stream)
|
actual = cliutil.bytes_output(path, stream)
|
||||||
assert actual is stream
|
assert actual is stream
|
||||||
|
|
||||||
|
@pytest.mark.parametrize('year,month,day', [
|
||||||
|
(2000, 1, 1),
|
||||||
|
(2016, 2, 29),
|
||||||
|
(2020, 12, 31),
|
||||||
|
])
|
||||||
|
def test_date_arg_valid(year, month, day):
|
||||||
|
arg = f'{year}-{month}-{day}'
|
||||||
|
expected = datetime.date(year, month, day)
|
||||||
|
assert cliutil.date_arg(arg) == expected
|
||||||
|
|
||||||
|
@pytest.mark.parametrize('arg', [
|
||||||
|
'2000',
|
||||||
|
'20-02-12',
|
||||||
|
'2019-02-29',
|
||||||
|
'two thousand',
|
||||||
|
])
|
||||||
|
def test_date_arg_invalid(arg):
|
||||||
|
with pytest.raises(ValueError):
|
||||||
|
cliutil.date_arg(arg)
|
||||||
|
|
||||||
@pytest.mark.parametrize('func_name', [
|
@pytest.mark.parametrize('func_name', [
|
||||||
'bytes_output',
|
'bytes_output',
|
||||||
'text_output',
|
'text_output',
|
||||||
|
|
Loading…
Reference in a new issue