# type: test
# title: alternative syntaxes
# description: other comment types
# version: 0.7.8
#
# Kinda have to do snippets here.
import pytest
import re
import textwrap
import pluginconf
def _parse(text):
text = re.sub(r"\A\n", "", text)
text = textwrap.dedent(text)
return pluginconf.plugin_meta(src=text)
def multiline_c():
c_style= """
/**
* api: c
* title: example
* version: 3.5.1
* category: multiline
*
* Do we get a comment?
*/
"""
assert _parse(c_style).version == "3.5.1"
assert _parse(c_style).doc == "Do we get a comment?"
def multiline_ps1():
ps1_style= """
<#
# api: cpp
# title: second
# version: 2.1
# category: nonpython
#
# Didn't work without hashes
#>
"""
print(_parse(ps1_style))
assert _parse(ps1_style).version == "2.1"
# Required adapting the continuation line detection (including spaced points).
# Multiline enclosures contents are now captured, thus trailign #> or */ stripped.
ps1_style= """
<#
api: cpp
title: second
version: 2.2
category: nonpython
config: {name:x}
{name:y}
priority: bad
Didn't work without hashes
#>
"""
# Notably will only work with up to 3 spaces. Acceptable format constraint,
# but makes continuation less readable
print(_parse(ps1_style))
assert _parse(ps1_style).version == "2.2"
assert len(_parse(ps1_style).config) == 2
assert _parse(ps1_style).priority == "bad"
# should still migrate to hash() detection and regex generation
def indent_cpp():
cpp_style= """
// api: cpp
// title: third
// version: 3.3
// category: doubleprefix
//
// Basically just // instead of #
"""
assert _parse(cpp_style).version == "3.3"