InvokeAI/tests/test_config.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

89 lines
2.5 KiB
Python
Raw Normal View History

2023-05-04 04:45:52 +00:00
import os
import pytest
2023-05-25 03:57:15 +00:00
import sys
2023-05-04 04:45:52 +00:00
from omegaconf import OmegaConf
from pathlib import Path
os.environ['INVOKEAI_ROOT']='/tmp'
2023-05-25 03:57:15 +00:00
from invokeai.app.services.config import InvokeAIAppConfig
2023-05-25 03:57:15 +00:00
2023-05-04 04:45:52 +00:00
init1 = OmegaConf.create(
'''
InvokeAI:
Features:
nsfw_checker: False
Memory/Performance:
2023-07-11 21:37:02 +00:00
max_cache_size: 5
2023-05-04 04:45:52 +00:00
'''
)
init2 = OmegaConf.create(
'''
InvokeAI:
Features:
nsfw_checker: true
Memory/Performance:
2023-07-11 21:37:02 +00:00
max_cache_size: 2
2023-05-04 04:45:52 +00:00
'''
)
def test_use_init():
# note that we explicitly set omegaconf dict and argv here
# so that the values aren't read from ~invokeai/invokeai.yaml and
# sys.argv respectively.
conf1 = InvokeAIAppConfig.get_config()
2023-05-04 04:45:52 +00:00
assert conf1
2023-06-20 17:22:39 +00:00
conf1.parse_args(conf=init1,argv=[])
2023-07-11 21:37:02 +00:00
assert conf1.max_cache_size==5
2023-05-04 04:45:52 +00:00
assert not conf1.nsfw_checker
conf2 = InvokeAIAppConfig.get_config()
2023-05-04 04:45:52 +00:00
assert conf2
2023-06-20 17:22:39 +00:00
conf2.parse_args(conf=init2,argv=[])
2023-05-04 04:45:52 +00:00
assert conf2.nsfw_checker
2023-07-11 21:37:02 +00:00
assert conf2.max_cache_size==2
2023-05-04 04:45:52 +00:00
assert not hasattr(conf2,'invalid_attribute')
def test_argv_override():
conf = InvokeAIAppConfig.get_config()
2023-07-11 21:37:02 +00:00
conf.parse_args(conf=init1,argv=['--nsfw_checker','--max_cache=10'])
2023-05-04 04:45:52 +00:00
assert conf.nsfw_checker
2023-07-11 21:37:02 +00:00
assert conf.max_cache_size==10
2023-05-04 04:45:52 +00:00
assert conf.outdir==Path('outputs') # this is the default
def test_env_override():
# argv overrides
conf = InvokeAIAppConfig()
2023-07-11 21:37:02 +00:00
conf.parse_args(conf=init1,argv=['--max_cache=10'])
2023-05-04 04:45:52 +00:00
assert conf.nsfw_checker==False
os.environ['INVOKEAI_nsfw_checker'] = 'True'
2023-07-11 21:37:02 +00:00
conf.parse_args(conf=init1,argv=['--max_cache=10'])
2023-05-04 04:45:52 +00:00
assert conf.nsfw_checker==True
# environment variables should be case insensitive
2023-07-11 21:37:02 +00:00
os.environ['InvokeAI_Max_Cache_Size'] = '15'
conf = InvokeAIAppConfig()
2023-06-20 17:22:39 +00:00
conf.parse_args(conf=init1,argv=[])
2023-07-11 21:37:02 +00:00
assert conf.max_cache_size == 15
conf = InvokeAIAppConfig()
2023-07-11 21:37:02 +00:00
conf.parse_args(conf=init1,argv=['--no-nsfw_checker','--max_cache=10'])
2023-05-04 04:45:52 +00:00
assert conf.nsfw_checker==False
2023-07-11 21:37:02 +00:00
assert conf.max_cache_size==10
2023-05-04 04:45:52 +00:00
2023-07-11 21:37:02 +00:00
conf = InvokeAIAppConfig.get_config(max_cache_size=20)
conf.parse_args(conf=init1,argv=[])
2023-07-11 21:37:02 +00:00
assert conf.max_cache_size==20
2023-05-04 04:45:52 +00:00
def test_type_coercion():
conf = InvokeAIAppConfig().get_config()
conf.parse_args(argv=['--root=/tmp/foobar'])
2023-05-04 04:45:52 +00:00
assert conf.root==Path('/tmp/foobar')
assert isinstance(conf.root,Path)
conf = InvokeAIAppConfig.get_config(root='/tmp/different')
conf.parse_args(argv=['--root=/tmp/foobar'])
2023-05-04 04:45:52 +00:00
assert conf.root==Path('/tmp/different')
assert isinstance(conf.root,Path)