Skip to content

Commit

Permalink
Tests related to loading settings from a given file
Browse files Browse the repository at this point in the history
  • Loading branch information
lbiaggi committed Mar 21, 2024
1 parent 379e445 commit 4f1b757
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 1 deletion.
65 changes: 65 additions & 0 deletions doorstop/cli/tests/files/settings_modified.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# SPDX-License-Identifier: LGPL-3.0-only

"""Settings for the Doorstop package."""

import logging
import os

# Logging settings
DEFAULT_LOGGING_FORMAT = "%(message)s"
LEVELED_LOGGING_FORMAT = "%(levelname)s: %(message)s"
VERBOSE_LOGGING_FORMAT = "[%(levelname)-8s] %(message)s"
VERBOSE2_LOGGING_FORMAT = "[%(levelname)-8s] (%(name)s @%(lineno)4d) %(message)s"
QUIET_LOGGING_LEVEL = logging.WARNING
TIMED_LOGGING_FORMAT = "%(asctime)s" + " " + VERBOSE_LOGGING_FORMAT
DEFAULT_LOGGING_LEVEL = logging.WARNING
VERBOSE_LOGGING_LEVEL = logging.INFO
VERBOSE2_LOGGING_LEVEL = logging.DEBUG
VERBOSE3_LOGGING_LEVEL = logging.DEBUG - 1

# Value constants
SEP_CHARS = "-_." # valid prefix/number separators
SKIP_EXTS = [".yml", ".csv", ".tsv"] # extensions skipped in reference search
RESERVED_WORDS = ["all"] # keywords that cannot be used for prefixes
PLACEHOLDER = "..." # placeholder for new item UIDs on export/import
PLACEHOLDER_COUNT = 1 # number of placeholders to include on export

# Formatting settings
MAX_LINE_LENGTH = 20 # line length to trigger multiline on extended attributes

# Validation settings
REFORMAT = True # reformat item files during validation
REORDER = False # reorder document levels during validation
CHECK_LEVELS = True # validate document levels during validation
CHECK_REF = True # validate external file references
CHECK_CHILD_LINKS = True # validate reverse links
CHECK_CHILD_LINKS_STRICT = False # require child (reverse) links from every document
CHECK_SUSPECT_LINKS = True # check stamps on links
CHECK_REVIEW_STATUS = True # check stamps on items
WARN_ALL = False # display info-level issues as warnings
ERROR_ALL = False # display warning-level issues as errors

# Review settings
REVIEW_NEW_ITEMS = True # automatically review new items during validation

# Stamping settings
STAMP_NEW_LINKS = True # automatically stamp links upon creation

# Publishing settings
PUBLISH_CHILD_LINKS = True # include child links when publishing
PUBLISH_BODY_LEVELS = True # include levels on non-header items
PUBLISH_HEADING_LEVELS = True # include levels on header items
ENABLE_HEADERS = True # use headers if defined
WRITE_LINESEPERATOR = os.linesep

# Version control settings
ADDREMOVE_FILES = True # automatically add/remove new/changed files

# Caching settings
CACHE_ITEMS = True # cache items in documents and trees
CACHE_DOCUMENTS = True # cache documents in trees
CACHE_PATHS = True # cache file/directory paths and contents

# Server settings
SERVER_HOST = None # '' = server not specified, None = no server in use
SERVER_PORT = 7867
11 changes: 10 additions & 1 deletion doorstop/cli/tests/test_main.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

from doorstop import settings
from doorstop.cli import main
from doorstop.cli.tests import SettingsTestCase
from doorstop.cli.tests import FILES, SettingsTestCase


class TestMain(SettingsTestCase):
Expand Down Expand Up @@ -84,3 +84,12 @@ def test_main(self):
spec.loader.exec_module(runpy)
# Assert
self.assertIsNotNone(runpy)

@patch("doorstop.cli.commands.run", Mock())
def test_run_modified_settings_through_file(self):
"""Verify --settings has override settings."""
main.main(args=["--settings", f"{FILES}/settings_modified.py"])
self.assertEqual(settings.MAX_LINE_LENGTH, 20)
# rollback to the original value to not impact an item test
settings.MAX_LINE_LENGTH = 79
self.assertEqual(settings.MAX_LINE_LENGTH, 79)

0 comments on commit 4f1b757

Please sign in to comment.