mirror of https://github.com/chriskiehl/Gooey.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
98 lines
3.0 KiB
98 lines
3.0 KiB
import unittest
|
|
|
|
from gooey import GooeyParser
|
|
from gooey.tests import *
|
|
|
|
class TestConstraints(unittest.TestCase):
|
|
|
|
def test_listbox_constraints(self):
|
|
"""
|
|
Listbox widgets must be provided a nargs option
|
|
"""
|
|
|
|
# Trying to create a listbox widget without specifying nargs
|
|
# throws an error
|
|
with self.assertRaises(ValueError):
|
|
parser = GooeyParser()
|
|
parser.add_argument('one', choices=['one', 'two'], widget='Listbox')
|
|
|
|
# Listbox with an invalid nargs value throws an error
|
|
with self.assertRaises(ValueError):
|
|
parser = GooeyParser()
|
|
parser.add_argument(
|
|
'one', choices=['one', 'two'], widget='Listbox', nargs='?')
|
|
|
|
# Listbox with an invalid nargs value throws an error
|
|
with self.assertRaises(ValueError):
|
|
parser = GooeyParser()
|
|
parser.add_argument(
|
|
'one', choices=['one', 'two'], widget='Listbox', nargs=3)
|
|
|
|
# valid nargs throw no errors
|
|
for narg in ['*', '+']:
|
|
parser = GooeyParser()
|
|
parser.add_argument(
|
|
'one', choices=['one', 'two'], widget='Listbox', nargs=narg)
|
|
|
|
|
|
|
|
def test_visibility_constraint(self):
|
|
"""
|
|
When visible=False in Gooey config, the user MUST supply either
|
|
a custom validator or a default value.
|
|
"""
|
|
# added without issue
|
|
parser = GooeyParser()
|
|
parser.add_argument('one')
|
|
|
|
# still fine
|
|
parser = GooeyParser()
|
|
parser.add_argument('one', gooey_options={'visible': True})
|
|
|
|
# trying to hide an input without a default or custom validator
|
|
# results in an error
|
|
with self.assertRaises(ValueError):
|
|
parser = GooeyParser()
|
|
parser.add_argument('one', gooey_options={'visible': False})
|
|
|
|
# explicit default=None; still error
|
|
with self.assertRaises(ValueError):
|
|
parser = GooeyParser()
|
|
parser.add_argument(
|
|
'one',
|
|
default=None,
|
|
gooey_options={'visible': False})
|
|
|
|
# default = empty string. Still error
|
|
with self.assertRaises(ValueError):
|
|
parser = GooeyParser()
|
|
parser.add_argument(
|
|
'one',
|
|
default='',
|
|
gooey_options={'visible': False})
|
|
|
|
# default = valid string. No Error
|
|
parser = GooeyParser()
|
|
parser.add_argument(
|
|
'one',
|
|
default='Hello',
|
|
gooey_options={'visible': False})
|
|
|
|
# No default, but custom validator: Success
|
|
parser = GooeyParser()
|
|
parser.add_argument(
|
|
'one',
|
|
gooey_options={
|
|
'visible': False,
|
|
'validator': {'test': 'true'}
|
|
})
|
|
|
|
# default AND validator, still fine
|
|
parser = GooeyParser()
|
|
parser.add_argument(
|
|
'one',
|
|
default='Hai',
|
|
gooey_options={
|
|
'visible': False,
|
|
'validator': {'test': 'true'}
|
|
})
|