diff --git a/Makefile b/Makefile index bacb72a15..14f1f162e 100644 --- a/Makefile +++ b/Makefile @@ -9,7 +9,7 @@ CONFIG := $(wildcard *.py) MODULES := $(wildcard $(PACKAGE)/*.py) # Virtual environment paths -VIRTUAL_ENV ?= .venv +VIRTUAL_ENV ?= $(PWD)/.venv # MAIN TASKS ################################################################## @@ -83,7 +83,7 @@ NOSE_OPTIONS += --with-cov --cov=$(PACKAGE) --cov-report=html --cov-report=term- endif .PHONY: test -test: test-all ## Run unit and integration tests +test: test-all test-lit ## Run unit and integration tests .PHONY: test-unit test-unit: install @@ -93,6 +93,16 @@ test-unit: install .PHONY: test-int test-int: test-all +.PHONY: test-lit +DOORSTOP_EXEC=$(VIRTUAL_ENV)/bin/doorstop +test-lit: install ## Run LIT integration tests + cd tests/integration && make clean + CURRENT_DIR=$(PWD) \ + DOORSTOP_EXEC=$(DOORSTOP_EXEC) \ + PATH=$(PWD)/tests/integration/tools/FileCheck:$(PWD)/tests/integration/tools:$$PATH \ + poetry run lit \ + -vv $(PWD)/tests/integration + .PHONY: test-all test-all: install TEST_INTEGRATION=true poetry run nosetests $(PACKAGES) $(NOSE_OPTIONS) --show-skipped diff --git a/poetry.lock b/poetry.lock index ea538735a..909aa3cc6 100644 --- a/poetry.lock +++ b/poetry.lock @@ -39,12 +39,6 @@ optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" version = "19.3.0" -[package.extras] -azure-pipelines = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "pytest-azurepipelines"] -dev = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "sphinx", "pre-commit"] -docs = ["sphinx", "zope.interface"] -tests = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"] - [[package]] category = "dev" description = "A backport of the get_terminal_size function from Python 3.3's shutil." @@ -67,9 +61,6 @@ attrs = ">=18.1.0" click = ">=6.5" toml = ">=0.9.4" -[package.extras] -d = ["aiohttp (>=3.3.2)", "aiohttp-cors"] - [[package]] category = "main" description = "Fast and simple WSGI-framework for small web-applications." @@ -192,12 +183,6 @@ optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" version = "4.3.21" -[package.extras] -pipfile = ["pipreqs", "requirementslib"] -pyproject = ["toml"] -requirements = ["pipreqs", "pip-api"] -xdg_home = ["appdirs (>=1.4.0)"] - [[package]] category = "main" description = "Julian dates from proleptic Gregorian and Julian calendars." @@ -217,16 +202,21 @@ version = "2.10.3" [package.dependencies] MarkupSafe = ">=0.23" -[package.extras] -i18n = ["Babel (>=0.8)"] - [[package]] category = "dev" description = "A fast and thorough lazy object proxy." name = "lazy-object-proxy" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "1.4.2" +version = "1.4.3" + +[[package]] +category = "dev" +description = "A Software Testing Tool" +name = "lit" +optional = false +python-versions = "*" +version = "0.9.0" [[package]] category = "dev" @@ -313,9 +303,6 @@ mypy-extensions = ">=0.4.0,<0.5.0" typed-ast = ">=1.4.0,<1.5.0" typing-extensions = ">=3.7.4" -[package.extras] -dmypy = ["psutil (>=4.0)"] - [[package]] category = "dev" description = "Experimental type system extensions for programs checked with the mypy typechecker." @@ -523,10 +510,6 @@ chardet = ">=3.0.2,<3.1.0" idna = ">=2.5,<2.9" urllib3 = ">=1.21.1,<1.25.0 || >1.25.0,<1.25.1 || >1.25.1,<1.26" -[package.extras] -security = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)"] -socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7)", "win-inet-pton"] - [[package]] category = "dev" description = "a python refactoring library..." @@ -556,12 +539,6 @@ colorama = "*" nose = "*" python-termstyle = "*" -[package.extras] -growl = ["gntp (0.7)"] -libnotify = ["py-notify (0.3.1)"] -linux = ["pyinotify (0.9.0)"] -osx = ["MacFSEvents (0.2.8)"] - [[package]] category = "dev" description = "This package provides 26 stemmers for 25 languages generated from Snowball algorithms." @@ -594,24 +571,13 @@ optional = false python-versions = "*" version = "1.4.0" -[[package]] -category = "dev" -description = "Type Hints for Python" -name = "typing" -optional = false -python-versions = "*" -version = "3.7.4.1" - [[package]] category = "dev" description = "Backported and Experimental Type Hints for Python 3.5+" name = "typing-extensions" optional = false python-versions = "*" -version = "3.7.4" - -[package.dependencies] -typing = ">=3.7.4" +version = "3.7.4.1" [[package]] category = "main" @@ -621,11 +587,6 @@ optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4" version = "1.25.6" -[package.extras] -brotli = ["brotlipy (>=0.6.0)"] -secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] -socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7,<2.0)"] - [[package]] category = "dev" description = "Module for decorators, wrappers and monkey patching." @@ -635,7 +596,7 @@ python-versions = "*" version = "1.11.2" [metadata] -content-hash = "25066e0712f2692e4a3c9a8d6974275fed4869002504247bd570634130828614" +content-hash = "634ae649b37485be9e6f558df77a875178c87634f84132620be5a7b4c7f3599a" python-versions = "^3.6" [metadata.hashes] @@ -661,7 +622,8 @@ idna = ["c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407", "ea8 isort = ["54da7e92468955c4fceacd0c86bd0ec997b0e1ee80d97f67c35a78b719dccab1", "6e811fcb295968434526407adb8796944f1988c5b65e8139058f2014cbe100fd"] jdcal = ["1abf1305fce18b4e8aa248cf8fe0c56ce2032392bc64bbd61b5dff2a19ec8bba", "472872e096eb8df219c23f2689fc336668bdb43d194094b5cc1707e1640acfc8"] jinja2 = ["74320bb91f31270f9551d46522e33af46a80c3d619f4a4bf42b3164d30b5911f", "9fe95f19286cfefaa917656583d020be14e7859c6b0252588391e47db34527de"] -lazy-object-proxy = ["02b260c8deb80db09325b99edf62ae344ce9bc64d68b7a634410b8e9a568edbf", "18f9c401083a4ba6e162355873f906315332ea7035803d0fd8166051e3d402e3", "1f2c6209a8917c525c1e2b55a716135ca4658a3042b5122d4e3413a4030c26ce", "2f06d97f0ca0f414f6b707c974aaf8829c2292c1c497642f63824119d770226f", "616c94f8176808f4018b39f9638080ed86f96b55370b5a9463b2ee5c926f6c5f", "63b91e30ef47ef68a30f0c3c278fbfe9822319c15f34b7538a829515b84ca2a0", "77b454f03860b844f758c5d5c6e5f18d27de899a3db367f4af06bec2e6013a8e", "83fe27ba321e4cfac466178606147d3c0aa18e8087507caec78ed5a966a64905", "84742532d39f72df959d237912344d8a1764c2d03fe58beba96a87bfa11a76d8", "874ebf3caaf55a020aeb08acead813baf5a305927a71ce88c9377970fe7ad3c2", "9f5caf2c7436d44f3cec97c2fa7791f8a675170badbfa86e1992ca1b84c37009", "a0c8758d01fcdfe7ae8e4b4017b13552efa7f1197dd7358dc9da0576f9d0328a", "a4def978d9d28cda2d960c279318d46b327632686d82b4917516c36d4c274512", "ad4f4be843dace866af5fc142509e9b9817ca0c59342fdb176ab6ad552c927f5", "ae33dd198f772f714420c5ab698ff05ff900150486c648d29951e9c70694338e", "b4a2b782b8a8c5522ad35c93e04d60e2ba7f7dcb9271ec8e8c3e08239be6c7b4", "c462eb33f6abca3b34cdedbe84d761f31a60b814e173b98ede3c81bb48967c4f", "fd135b8d35dfdcdb984828c84d695937e58cc5f49e1c854eb311c4d6aa03f4f1"] +lazy-object-proxy = ["0c4b206227a8097f05c4dbdd323c50edf81f15db3b8dc064d08c62d37e1a504d", "194d092e6f246b906e8f70884e620e459fc54db3259e60cf69a4d66c3fda3449", "1be7e4c9f96948003609aa6c974ae59830a6baecc5376c25c92d7d697e684c08", "4677f594e474c91da97f489fea5b7daa17b5517190899cf213697e48d3902f5a", "48dab84ebd4831077b150572aec802f303117c8cc5c871e182447281ebf3ac50", "5541cada25cd173702dbd99f8e22434105456314462326f06dba3e180f203dfd", "59f79fef100b09564bc2df42ea2d8d21a64fdcda64979c0fa3db7bdaabaf6239", "8d859b89baf8ef7f8bc6b00aa20316483d67f0b1cbf422f5b4dc56701c8f2ffb", "9254f4358b9b541e3441b007a0ea0764b9d056afdeafc1a5569eee1cc6c1b9ea", "9651375199045a358eb6741df3e02a651e0330be090b3bc79f6d0de31a80ec3e", "97bb5884f6f1cdce0099f86b907aa41c970c3c672ac8b9c8352789e103cf3156", "9b15f3f4c0f35727d3a0fba4b770b3c4ebbb1fa907dbcc046a1d2799f3edd142", "a2238e9d1bb71a56cd710611a1614d1194dc10a175c1e08d75e1a7bcc250d442", "a6ae12d08c0bf9909ce12385803a543bfe99b95fe01e752536a60af2b7797c62", "ca0a928a3ddbc5725be2dd1cf895ec0a254798915fb3a36af0964a0a4149e3db", "cb2c7c57005a6804ab66f106ceb8482da55f5314b7fcb06551db1edae4ad1531", "d74bb8693bf9cf75ac3b47a54d716bbb1a92648d5f781fc799347cfc95952383", "d945239a5639b3ff35b70a88c5f2f491913eb94871780ebfabb2568bd58afc5a", "eba7011090323c1dadf18b3b689845fd96a61ba0a1dfbd7f24b921398affc357", "efa1909120ce98bbb3777e8b6f92237f5d5c8ea6758efea36a473e1d38f7d3e4", "f3900e8a5de27447acbf900b4750b0ddfd7ec1ea7fbaf11dfa911141bc522af0"] +lit = ["c035aa0a233633f7046745164a153a57d8bbcaf9b833232438cf4d2923d8786e"] livereload = ["78d55f2c268a8823ba499305dcac64e28ddeb9a92571e12d543cd304faf5817b", "89254f78d7529d7ea0a3417d224c34287ebfe266b05e67e51facaf82c27f0f66"] macfsevents = ["1324b66b356051de662ba87d84f73ada062acd42b047ed1246e60a449f833e10"] markdown = ["9ba587db9daee7ec761cfc656272be6aabe2ed300fece21208e4aab2e457bc8f", "a856869c7ff079ad84a3e19cd87a64998350c2b94e9e08e44270faef33400f81"] @@ -695,8 +657,7 @@ sniffer = ["b37665053fb83d7790bf9e51d616c11970863d14b5ea5a51155a4e95759d1529", " snowballstemmer = ["209f257d7533fdb3cb73bdbd24f436239ca3b2fa67d56f6ff88e86be08cc5ef0", "df3bac3df4c2c01363f3dd2cfa78cce2840a79b9f1c2d2de9ce8d31683992f52"] toml = ["229f81c57791a41d65e399fc06bf0848bab550a9dfd5ed66df18ce5f05e73d5c", "235682dd292d5899d361a811df37e04a8828a5b1da3115886b73cf81ebc9100e", "f1db651f9657708513243e61e6cc67d101a39bad662eaa9b5546f789338e07a3"] tornado = ["349884248c36801afa19e342a77cc4458caca694b0eda633f5878e458a44cb2c", "398e0d35e086ba38a0427c3b37f4337327231942e731edaa6e9fd1865bbd6f60", "4e73ef678b1a859f0cb29e1d895526a20ea64b5ffd510a2307b5998c7df24281", "559bce3d31484b665259f50cd94c5c28b961b09315ccd838f284687245f416e5", "abbe53a39734ef4aba061fca54e30c6b4639d3e1f59653f0da37a0003de148c7", "c845db36ba616912074c5b1ee897f8e0124df269468f25e4fe21fe72f6edd7a9", "c9399267c926a4e7c418baa5cbe91c7d1cf362d505a1ef898fde44a07c9dd8a5"] -typed-ast = ["18511a0b3e7922276346bcb47e2ef9f38fb90fd31cb9223eed42c85d1312344e", "262c247a82d005e43b5b7f69aff746370538e176131c32dda9cb0f324d27141e", "2b907eb046d049bcd9892e3076c7a6456c93a25bebfe554e931620c90e6a25b0", "354c16e5babd09f5cb0ee000d54cfa38401d8b8891eefa878ac772f827181a3c", "4e0b70c6fc4d010f8107726af5fd37921b666f5b31d9331f0bd24ad9a088e631", "630968c5cdee51a11c05a30453f8cd65e0cc1d2ad0d9192819df9978984529f4", "66480f95b8167c9c5c5c87f32cf437d585937970f3fc24386f313a4c97b44e34", "71211d26ffd12d63a83e079ff258ac9d56a1376a25bc80b1cdcdf601b855b90b", "95bd11af7eafc16e829af2d3df510cecfd4387f6453355188342c3e79a2ec87a", "bc6c7d3fa1325a0c6613512a093bc2a2a15aeec350451cbdf9e1d4bffe3e3233", "cc34a6f5b426748a507dd5d1de4c1978f2eb5626d51326e43280941206c209e1", "d755f03c1e4a51e9b24d899561fec4ccaf51f210d52abdf8c07ee2849b212a36", "d7c45933b1bdfaf9f36c579671fec15d25b06c8398f113dab64c18ed1adda01d", "d896919306dd0aa22d0132f62a1b78d11aaf4c9fc5b3410d3c666b818191630a", "ffde2fbfad571af120fcbfbbc61c72469e72f550d676c3342492a9dfdefb8f12"] -typing = ["91dfe6f3f706ee8cc32d38edbbf304e9b7583fb37108fef38229617f8b3eba23", "c8cabb5ab8945cd2f54917be357d134db9cc1eb039e59d1606dc1e60cb1d9d36", "f38d83c5a7a7086543a0f649564d661859c5146a85775ab90c0d2f93ffaa9714"] -typing-extensions = ["2ed632b30bb54fc3941c382decfd0ee4148f5c591651c9272473fea2c6397d95", "b1edbbf0652660e32ae780ac9433f4231e7339c7f9a8057d0f042fcbcea49b87", "d8179012ec2c620d3791ca6fe2bf7979d979acdbef1fca0bc56b37411db682ed"] +typed-ast = ["1170afa46a3799e18b4c977777ce137bb53c7485379d9706af8a59f2ea1aa161", "18511a0b3e7922276346bcb47e2ef9f38fb90fd31cb9223eed42c85d1312344e", "262c247a82d005e43b5b7f69aff746370538e176131c32dda9cb0f324d27141e", "2b907eb046d049bcd9892e3076c7a6456c93a25bebfe554e931620c90e6a25b0", "354c16e5babd09f5cb0ee000d54cfa38401d8b8891eefa878ac772f827181a3c", "48e5b1e71f25cfdef98b013263a88d7145879fbb2d5185f2a0c79fa7ebbeae47", "4e0b70c6fc4d010f8107726af5fd37921b666f5b31d9331f0bd24ad9a088e631", "630968c5cdee51a11c05a30453f8cd65e0cc1d2ad0d9192819df9978984529f4", "66480f95b8167c9c5c5c87f32cf437d585937970f3fc24386f313a4c97b44e34", "71211d26ffd12d63a83e079ff258ac9d56a1376a25bc80b1cdcdf601b855b90b", "7954560051331d003b4e2b3eb822d9dd2e376fa4f6d98fee32f452f52dd6ebb2", "838997f4310012cf2e1ad3803bce2f3402e9ffb71ded61b5ee22617b3a7f6b6e", "95bd11af7eafc16e829af2d3df510cecfd4387f6453355188342c3e79a2ec87a", "bc6c7d3fa1325a0c6613512a093bc2a2a15aeec350451cbdf9e1d4bffe3e3233", "cc34a6f5b426748a507dd5d1de4c1978f2eb5626d51326e43280941206c209e1", "d755f03c1e4a51e9b24d899561fec4ccaf51f210d52abdf8c07ee2849b212a36", "d7c45933b1bdfaf9f36c579671fec15d25b06c8398f113dab64c18ed1adda01d", "d896919306dd0aa22d0132f62a1b78d11aaf4c9fc5b3410d3c666b818191630a", "fdc1c9bbf79510b76408840e009ed65958feba92a88833cdceecff93ae8fff66", "ffde2fbfad571af120fcbfbbc61c72469e72f550d676c3342492a9dfdefb8f12"] +typing-extensions = ["091ecc894d5e908ac75209f10d5b4f118fbdb2eb1ede6a63544054bb1edb41f2", "910f4656f54de5993ad9304959ce9bb903f90aadc7c67a0bef07e678014e892d", "cf8b63fedea4d89bab840ecbb93e75578af28f76f66c35889bd7065f5af88575"] urllib3 = ["3de946ffbed6e6746608990594d08faac602528ac7015ac28d33cee6a45b7398", "9a107b99a5393caf59c7aa3c1249c16e6879447533d0887f4336dde834c7be86"] wrapt = ["565a021fd19419476b9362b05eeaa094178de64f8361e44468f9e9d7843901e1"] diff --git a/pyproject.toml b/pyproject.toml index 311720ac9..2b430f3c0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -69,6 +69,7 @@ nose-cov = "*" nose-capturestderr = "*" nose-show-skipped = "*" expecter = "*" +lit = "*" # Reports coveragespace = "*" diff --git a/tests/.doorstop.skip-all b/tests/.doorstop.skip-all new file mode 100644 index 000000000..e69de29bb diff --git a/tests/integration/.gitignore b/tests/integration/.gitignore new file mode 100644 index 000000000..34c47a9ee --- /dev/null +++ b/tests/integration/.gitignore @@ -0,0 +1,7 @@ +# Files produced by LLVM LIT +**/Output/** +*.script + +# Files produced by the test cases +**/Sandbox/** + diff --git a/tests/integration/Makefile b/tests/integration/Makefile new file mode 100644 index 000000000..f3aab1abd --- /dev/null +++ b/tests/integration/Makefile @@ -0,0 +1,24 @@ +# Self-Documented Makefile +# http://marmelab.com/blog/2016/02/29/auto-documented-makefile.html +.PHONY: help +help: ## Show this help message. + @grep -E '^[a-zA-Z0-9_\.-\%]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}' + +CLEAN_FIND_CMD=find \ + . \ + -type f \( \ + -name '*.script' \ + \) \ + -or -type d \( \ + -name '*.dSYM' -or \ + -name 'Sandbox' -or \ + -name 'Output' \ + \) \ + -not -path "**Expected**" \ + -not -path "**Input**" + +CLEAN_FILES=$(shell $(CLEAN_FIND_CMD)) +clean: ## Clean all temporary artefacts + echo $(CLEAN_FILES) | \ + xargs rm -rfv + diff --git a/tests/integration/lit.cfg b/tests/integration/lit.cfg new file mode 100644 index 000000000..758dfd7f8 --- /dev/null +++ b/tests/integration/lit.cfg @@ -0,0 +1,15 @@ +import lit.formats + +config.name = "Doorstop integration tests" +config.test_format = lit.formats.ShTest("0") + +# LLVM LIT: Is it possible to pass user defined parameter into a test script? +# https://stackoverflow.com/a/39861848/598057 +current_dir = os.environ.get('CURRENT_DIR', '') +doorstop_exec = os.environ.get('DOORSTOP_EXEC', '') + +config.substitutions.append(('%CURRENT_DIR', current_dir)) +config.substitutions.append(('%DOORSTOP_EXEC', doorstop_exec)) +config.substitutions.append(('%COMPARE_EXEC', "{}/tests/integration/tools/compare_dirs".format(current_dir))) + +config.suffixes = ['.itest'] diff --git a/tests/integration/tests/basic_functionality/create/01_creating_parent/Expected/.doorstop.yml b/tests/integration/tests/basic_functionality/create/01_creating_parent/Expected/.doorstop.yml new file mode 100644 index 000000000..8c26d0ecc --- /dev/null +++ b/tests/integration/tests/basic_functionality/create/01_creating_parent/Expected/.doorstop.yml @@ -0,0 +1,4 @@ +settings: + digits: 3 + prefix: TST + sep: '' diff --git a/tests/integration/tests/basic_functionality/create/01_creating_parent/sample.itest b/tests/integration/tests/basic_functionality/create/01_creating_parent/sample.itest new file mode 100644 index 000000000..613ad9682 --- /dev/null +++ b/tests/integration/tests/basic_functionality/create/01_creating_parent/sample.itest @@ -0,0 +1,7 @@ +; RUN: rm -rf %S/Sandbox +; RUN: /bin/mkdir -p %S/Sandbox && cd %S/Sandbox +; RUN: git init . +; RUN: %DOORSTOP_EXEC create TST . | FileCheck %s +; RUN: %COMPARE_EXEC %S/Sandbox %S/Expected +; CHECK: building tree... +; CHECK-NEXT: created document: TST (@/.) diff --git a/tests/integration/tests/basic_functionality/create/02_creating_item/Expected/.doorstop.yml b/tests/integration/tests/basic_functionality/create/02_creating_item/Expected/.doorstop.yml new file mode 100644 index 000000000..8c26d0ecc --- /dev/null +++ b/tests/integration/tests/basic_functionality/create/02_creating_item/Expected/.doorstop.yml @@ -0,0 +1,4 @@ +settings: + digits: 3 + prefix: TST + sep: '' diff --git a/tests/integration/tests/basic_functionality/create/02_creating_item/Expected/TST001.yml b/tests/integration/tests/basic_functionality/create/02_creating_item/Expected/TST001.yml new file mode 100644 index 000000000..3a8297f82 --- /dev/null +++ b/tests/integration/tests/basic_functionality/create/02_creating_item/Expected/TST001.yml @@ -0,0 +1,9 @@ +active: true +derived: false +header: '' +level: 1.0 +links: [] +normative: true +ref: '' +reviewed: null +text: '' diff --git a/tests/integration/tests/basic_functionality/create/02_creating_item/sample.itest b/tests/integration/tests/basic_functionality/create/02_creating_item/sample.itest new file mode 100644 index 000000000..4d9d0a13b --- /dev/null +++ b/tests/integration/tests/basic_functionality/create/02_creating_item/sample.itest @@ -0,0 +1,8 @@ +; RUN: rm -rf %S/Sandbox +; RUN: /bin/mkdir -p %S/Sandbox && cd %S/Sandbox +; RUN: git init . +; RUN: %DOORSTOP_EXEC create TST . +; RUN: %DOORSTOP_EXEC add TST | FileCheck %s +; RUN: %COMPARE_EXEC %S/Sandbox %S/Expected +; CHECK: building tree... +; CHECK-NEXT: added item: TST001 (@/TST001.yml) diff --git a/tests/integration/tests/basic_functionality/create/03_creating_3_items/Expected/.doorstop.yml b/tests/integration/tests/basic_functionality/create/03_creating_3_items/Expected/.doorstop.yml new file mode 100644 index 000000000..8c26d0ecc --- /dev/null +++ b/tests/integration/tests/basic_functionality/create/03_creating_3_items/Expected/.doorstop.yml @@ -0,0 +1,4 @@ +settings: + digits: 3 + prefix: TST + sep: '' diff --git a/tests/integration/tests/basic_functionality/create/03_creating_3_items/Expected/TST001.yml b/tests/integration/tests/basic_functionality/create/03_creating_3_items/Expected/TST001.yml new file mode 100644 index 000000000..3a8297f82 --- /dev/null +++ b/tests/integration/tests/basic_functionality/create/03_creating_3_items/Expected/TST001.yml @@ -0,0 +1,9 @@ +active: true +derived: false +header: '' +level: 1.0 +links: [] +normative: true +ref: '' +reviewed: null +text: '' diff --git a/tests/integration/tests/basic_functionality/create/03_creating_3_items/Expected/TST002.yml b/tests/integration/tests/basic_functionality/create/03_creating_3_items/Expected/TST002.yml new file mode 100644 index 000000000..0c8b24915 --- /dev/null +++ b/tests/integration/tests/basic_functionality/create/03_creating_3_items/Expected/TST002.yml @@ -0,0 +1,9 @@ +active: true +derived: false +header: '' +level: 1.1 +links: [] +normative: true +ref: '' +reviewed: null +text: '' diff --git a/tests/integration/tests/basic_functionality/create/03_creating_3_items/Expected/TST003.yml b/tests/integration/tests/basic_functionality/create/03_creating_3_items/Expected/TST003.yml new file mode 100644 index 000000000..44e3da24b --- /dev/null +++ b/tests/integration/tests/basic_functionality/create/03_creating_3_items/Expected/TST003.yml @@ -0,0 +1,9 @@ +active: true +derived: false +header: '' +level: 1.2 +links: [] +normative: true +ref: '' +reviewed: null +text: '' diff --git a/tests/integration/tests/basic_functionality/create/03_creating_3_items/Input/.doorstop.yml b/tests/integration/tests/basic_functionality/create/03_creating_3_items/Input/.doorstop.yml new file mode 100644 index 000000000..8c26d0ecc --- /dev/null +++ b/tests/integration/tests/basic_functionality/create/03_creating_3_items/Input/.doorstop.yml @@ -0,0 +1,4 @@ +settings: + digits: 3 + prefix: TST + sep: '' diff --git a/tests/integration/tests/basic_functionality/create/03_creating_3_items/sample.itest b/tests/integration/tests/basic_functionality/create/03_creating_3_items/sample.itest new file mode 100644 index 000000000..5b1f4104e --- /dev/null +++ b/tests/integration/tests/basic_functionality/create/03_creating_3_items/sample.itest @@ -0,0 +1,14 @@ +; RUN: rm -rf %S/Sandbox +; RUN: cp -r %S/Input %S/Sandbox && cd %S/Sandbox +; RUN: git init . +; RUN: %DOORSTOP_EXEC add TST \ +; RUN: | FileCheck %s -check-prefix=CHECK-COMMAND1 +; RUN: %DOORSTOP_EXEC add TST \ +; RUN: | FileCheck %s -check-prefix=CHECK-COMMAND2 +; RUN: %DOORSTOP_EXEC add TST \ +; RUN: | FileCheck %s -check-prefix=CHECK-COMMAND3 +; RUN: %COMPARE_EXEC %S/Sandbox %S/Expected + +; CHECK-COMMAND1: added item: TST001 (@/TST001.yml) +; CHECK-COMMAND2: added item: TST002 (@/TST002.yml) +; CHECK-COMMAND3: added item: TST003 (@/TST003.yml) diff --git a/tests/integration/tests/basic_functionality/no_command/01_empty_folder/sample.itest b/tests/integration/tests/basic_functionality/no_command/01_empty_folder/sample.itest new file mode 100644 index 000000000..482ff88c3 --- /dev/null +++ b/tests/integration/tests/basic_functionality/no_command/01_empty_folder/sample.itest @@ -0,0 +1,11 @@ +; RUN: rm -rf %S/Sandbox +; RUN: /bin/mkdir -p %S/Sandbox && cd %S/Sandbox +; +; Note: We must pass -j %S/Sandbox otherwise Doorstop walks up and finds +; irrelevant files from the reqs folder outside of tests/ folder. +; RUN: %DOORSTOP_EXEC -j %S/Sandbox 2>&1 | FileCheck %s +; +; CHECK: building tree... +; CHECK-NEXT: loading documents... +; CHECK-NEXT: validating items... +; CHECK-NEXT: WARNING: no documents diff --git a/tests/integration/tests/basic_functionality/no_command/02_empty_folder_with_git_init/sample.itest b/tests/integration/tests/basic_functionality/no_command/02_empty_folder_with_git_init/sample.itest new file mode 100644 index 000000000..b7b9377c4 --- /dev/null +++ b/tests/integration/tests/basic_functionality/no_command/02_empty_folder_with_git_init/sample.itest @@ -0,0 +1,8 @@ +; RUN: rm -rf %S/Sandbox +; RUN: /bin/mkdir -p %S/Sandbox && cd %S/Sandbox +; RUN: git init . +; RUN: %DOORSTOP_EXEC -j %S/Sandbox 2>&1 | FileCheck %s +; CHECK: building tree... +; CHECK-NEXT: loading documents... +; CHECK-NEXT: validating items... +; CHECK-NEXT: WARNING: no documents diff --git a/tests/integration/tools/FileCheck/FileCheck b/tests/integration/tools/FileCheck/FileCheck new file mode 100755 index 000000000..39643226a --- /dev/null +++ b/tests/integration/tools/FileCheck/FileCheck @@ -0,0 +1,13 @@ +#!/bin/bash + +file_check_path=`echo $(cd $(dirname "$0") && pwd -P)` + +echo $file_check_path + +if [[ "$OSTYPE" == "linux-gnu" ]]; then + $file_check_path/FileCheck-Linux "$@" +elif [[ "$OSTYPE" == "darwin"* ]]; then + $file_check_path/FileCheck-macOS "$@" +else + exit 1 +fi diff --git a/tests/integration/tools/FileCheck/FileCheck-Linux b/tests/integration/tools/FileCheck/FileCheck-Linux new file mode 100755 index 000000000..db9722d88 Binary files /dev/null and b/tests/integration/tools/FileCheck/FileCheck-Linux differ diff --git a/tests/integration/tools/FileCheck/FileCheck-macOS b/tests/integration/tools/FileCheck/FileCheck-macOS new file mode 100755 index 000000000..87a143d60 Binary files /dev/null and b/tests/integration/tools/FileCheck/FileCheck-macOS differ diff --git a/tests/integration/tools/compare_dirs b/tests/integration/tools/compare_dirs new file mode 100755 index 000000000..6eeaf6a88 --- /dev/null +++ b/tests/integration/tools/compare_dirs @@ -0,0 +1,24 @@ +#!/bin/bash + +lhs=$1 +rhs=$2 + +lhs_files=$(cd $lhs; find . -type f -not -path *.git*) +rhs_files=$(cd $rhs; find . -type f -not -path *.git*) +echo $lhs_files +echo $rhs_files + +if [[ $lhs_files != $rhs_files ]]; then + echo "folders do not have the same set of files"; + exit 1; +fi + +lhs_md5=$(cd $lhs; cat $lhs_files | md5) +rhs_md5=$(cd $rhs; cat $rhs_files | md5) + +if [[ $lhs_md5 != $rhs_md5 ]]; then + echo "folders do not have the same content"; + exit 1; +fi + +exit 0;