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…
	
	Add table
		
		Reference in a new issue