summaryrefslogtreecommitdiffstats
path: root/tests/syntax-tests/source
diff options
context:
space:
mode:
Diffstat (limited to 'tests/syntax-tests/source')
-rw-r--r--tests/syntax-tests/source/D/test.d44
-rw-r--r--tests/syntax-tests/source/EtcGroup/test.group67
-rw-r--r--tests/syntax-tests/source/Git Attributes/example.gitattributes16
-rw-r--r--tests/syntax-tests/source/Git Config/LICENSE.md1
-rw-r--r--tests/syntax-tests/source/Git Config/text.gitconfig107
-rw-r--r--tests/syntax-tests/source/Graphviz DOT/LICENSE.md22
-rw-r--r--tests/syntax-tests/source/Graphviz DOT/test_digraph.dot41
-rw-r--r--tests/syntax-tests/source/Graphviz DOT/test_graph.dot3
-rw-r--r--tests/syntax-tests/source/MATLAB/LICENSE.md27
-rw-r--r--tests/syntax-tests/source/MATLAB/test.matlab34
-rwxr-xr-xtests/syntax-tests/source/PowerShell/test.ps1bin0 -> 1430 bytes
-rw-r--r--tests/syntax-tests/source/QML/BatSyntaxTest.qml219
-rw-r--r--tests/syntax-tests/source/SLS/test.sls57
-rw-r--r--tests/syntax-tests/source/Svelte/App.svelte57
-rw-r--r--tests/syntax-tests/source/Svelte/LICENSE14
-rw-r--r--tests/syntax-tests/source/Vue/example.vue55
-rw-r--r--tests/syntax-tests/source/nginx/nginx.conf140
-rw-r--r--tests/syntax-tests/source/nix/test.nix15
-rw-r--r--tests/syntax-tests/source/orgmode/test.org38
19 files changed, 957 insertions, 0 deletions
diff --git a/tests/syntax-tests/source/D/test.d b/tests/syntax-tests/source/D/test.d
new file mode 100644
index 00000000..534132f5
--- /dev/null
+++ b/tests/syntax-tests/source/D/test.d
@@ -0,0 +1,44 @@
+// selective import
+import std.stdio : writeln, writefln;
+// non-selective import
+import std.algorithm;
+
+/* a multiline comment
+*
+* this function is safe because it doesn't use pointer arithmetic
+*/
+int the_ultimate_answer() @safe {
+ // assert1on
+ assert(1 != 2);
+ // now we can safely return our answer
+ return 42;
+}
+
+void main()
+{
+ // function call with string literal
+ writeln("Hello World!");
+
+ // an int array declaration
+ int[] arr1 = [1, 2, 3];
+ // an immutable double
+ immutable double pi = 3.14;
+ // a mutable double
+ double d1 = pi;
+ // a pointer
+ double* dp1 = &d1;
+ // another pointer to the same thingy
+ auto a1 = &d1;
+ // a constant bool
+ const bool b1 = true;
+ if (b1) {
+ // another function call
+ writefln("%s\n%s\n%s\n", arr1, d1, the_ultimate_answer());
+ }
+ else if (!b1) {
+ writeln("this seems wrong");
+ }
+ else {
+ writeln("I'm giving up, this is too crazy for me");
+ }
+}
diff --git a/tests/syntax-tests/source/EtcGroup/test.group b/tests/syntax-tests/source/EtcGroup/test.group
new file mode 100644
index 00000000..68331d73
--- /dev/null
+++ b/tests/syntax-tests/source/EtcGroup/test.group
@@ -0,0 +1,67 @@
+root:x:0:root
+sys:x:3:bin
+mem:x:8:
+ftp:x:11:
+mail:x:12:
+log:x:19:
+smmsp:x:25:
+proc:x:26:polkitd
+games:x:50:
+lock:x:54:
+network:x:90:
+floppy:x:94:
+scanner:x:96:
+power:x:98:
+adm:x:999:daemon
+wheel:x:998:username
+kmem:x:997:
+tty:x:5:
+utmp:x:996:
+audio:x:995:mpd,username
+disk:x:994:
+input:x:993:
+kvm:x:992:
+lp:x:991:
+optical:x:990:username
+render:x:989:
+storage:x:988:username
+uucp:x:987:
+video:x:986:username
+users:x:985:
+systemd-journal:x:984:
+rfkill:x:983:
+bin:x:1:daemon
+daemon:x:2:bin
+http:x:33:
+nobody:x:65534:
+dbus:x:81:
+systemd-journal-remote:x:982:
+systemd-network:x:981:
+systemd-resolve:x:980:
+systemd-timesync:x:979:
+systemd-coredump:x:978:
+uuidd:x:68:
+username:x:1000:
+git:x:977:
+avahi:x:976:
+colord:x:975:
+polkitd:x:102:
+mpd:x:45:
+rtkit:x:133:
+transmission:x:169:
+wireshark:x:150:username
+lightdm:x:974:
+geoclue:x:973:
+usbmux:x:140:
+dhcpcd:x:972:
+brlapi:x:971:
+gdm:x:120:
+libvirt:x:970:
+flatpak:x:969:
+gluster:x:968:
+rpc:x:32:
+tor:x:43:
+rslsync:x:967:
+docker:x:966:username
+sambashare:x:1002:username
+named:x:40:
diff --git a/tests/syntax-tests/source/Git Attributes/example.gitattributes b/tests/syntax-tests/source/Git Attributes/example.gitattributes
new file mode 100644
index 00000000..9b8e58b8
--- /dev/null
+++ b/tests/syntax-tests/source/Git Attributes/example.gitattributes
@@ -0,0 +1,16 @@
+#
+# Comment
+
+[attr]binary -diff -merge -text
+
+* text=auto
+*.c diff=c
+*.cc text diff=cpp
+*.o binary
+*.bat text eol=crlf
+*.lock text -diff
+*.*ignore text
+*.patch -text
+
+.gitattributes linguist-language=gitattributes
+.gitkeep export-ignore \ No newline at end of file
diff --git a/tests/syntax-tests/source/Git Config/LICENSE.md b/tests/syntax-tests/source/Git Config/LICENSE.md
new file mode 100644
index 00000000..4d51ec63
--- /dev/null
+++ b/tests/syntax-tests/source/Git Config/LICENSE.md
@@ -0,0 +1 @@
+The `test.gitconfig` file has been added from https://github.com/sharkdp/bat/pull/1336#issuecomment-715905807. Its "free to use". \ No newline at end of file
diff --git a/tests/syntax-tests/source/Git Config/text.gitconfig b/tests/syntax-tests/source/Git Config/text.gitconfig
new file mode 100644
index 00000000..45de0fe5
--- /dev/null
+++ b/tests/syntax-tests/source/Git Config/text.gitconfig
@@ -0,0 +1,107 @@
+[alias]
+ br = branch
+ branch = branch -a
+ c = clone --recursive
+ ci = commit
+ cl = clone
+ co = checkout
+ contributors = shortlog --summary --numbered
+ lg = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)'
+ remote = remote -v
+ st = status
+ tag = tag -l
+[apply]
+ whitespace = fix
+[color]
+ ui = true
+[color "branch"]
+ current = yellow
+ local = yellow
+ remote = green
+[color "diff"]
+ commit = yellow bold
+ frag = magenta bold
+ meta = yellow
+ new = green bold
+ old = red bold
+ whitespace = red reverse
+[color "diff-highlight"]
+ newHighlight = green bold 22
+ newNormal = green bold
+ oldHighlight = red bold 52
+ oldNormal = red bold
+[color "status"]
+ added = green
+ changed = yellow
+ untracked = cyan
+[commit]
+ gpgsign = true
+[core]
+ editor = /usr/bin/vim
+ # global exclude
+ excludesfile = /home/frank/.config/git/ignore
+ pager = delta
+ ; broken on old machines
+ untrackedCache = true
+[credential]
+ helper = store
+[delta]
+ features = line-numbers decorations
+ max-line-length = 1024
+ whitespace-error-style = 22 reverse
+[delta "decorations"]
+ commit-decoration-style = bold yellow box ul
+ file-decoration-style = none
+ file-style = bold yellow
+ syntax-theme = gruvbox
+[diff]
+ submodule = diff
+ algorithm = histogram
+ renames = copies
+[difftool]
+ prompt = false
+[difftool "wrapper"]
+ binary = true
+ cmd = git-difftool-wrapper \"$LOCAL\" \"$REMOTE\"
+[diff "pdfconv"]
+ textconv = pdftohtml -stdout
+[fetch]
+ negotiationAlgorithm = skipping
+ parallel = 0
+[help]
+ autocorrect = 1
+[index]
+ version = 4
+[interactive]
+ diffFilter = delta --color-only
+[merge]
+ log = true
+[protocol]
+ version = 2
+[pull]
+ rebase = true
+[push]
+ default = current
+ recurseSubmodules = on-demand
+[rebase]
+ autoStash = true
+[rerere]
+ autoUpdate = true
+ enabled = true
+[sequence]
+ editor = interactive-rebase-tool
+[submodule]
+ fetchJobs = 0
+[tag]
+ gpgSign = true
+ sort = -version:refname
+[url "git@gist.github.com:"]
+ insteadOf = gist:
+ pushInsteadOf = https://gist.github.com/
+[url "git@github.com:"]
+ insteadOf = gh:
+ pushInsteadOf = https://github.com/
+[user]
+ email = f.nord@example.com
+ name = Frank Nord
+ signingkey = AAAAAAAAAAAAAAAA \ No newline at end of file
diff --git a/tests/syntax-tests/source/Graphviz DOT/LICENSE.md b/tests/syntax-tests/source/Graphviz DOT/LICENSE.md
new file mode 100644
index 00000000..3f166cbe
--- /dev/null
+++ b/tests/syntax-tests/source/Graphviz DOT/LICENSE.md
@@ -0,0 +1,22 @@
+The files `test_digraph.dot` and `test_graph.dot` are modified versions the files from https://github.com/scriptum/graphviz-examples/tree/a7762875efa32f90f6f1a37d866b2c26d362202a under the following license:
+
+The MIT License (MIT)
+
+Copyright (c) 2014 Pavel Roschin
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file
diff --git a/tests/syntax-tests/source/Graphviz DOT/test_digraph.dot b/tests/syntax-tests/source/Graphviz DOT/test_digraph.dot
new file mode 100644
index 00000000..11e383b4
--- /dev/null
+++ b/tests/syntax-tests/source/Graphviz DOT/test_digraph.dot
@@ -0,0 +1,41 @@
+digraph {
+ label = <Label <font color='red'><b>formating</b></font>,<br/> test <font point-size='20'>is</font> done<br/> here <i>now.</i>>;
+
+ node [shape=box]
+ rankdir=LR
+ margin=0.1
+ a->b
+
+ // http://www.graphviz.org/doc/info/colors.html
+ // note: style=filled!
+ node [shape=box colorscheme=paired12 style=filled]
+ margin=0.1
+ a2[fillcolor=1]
+ b2[fillcolor=3]
+ a2->b2->x2
+
+ // http://www.graphviz.org/doc/info/colors.html
+ // note: style=filled!
+ node [shape=box colorscheme=paired12 style=filled]
+ rankdir=LR
+ margin=0.1
+ c1[fillcolor=1]
+ c2[fillcolor=2]
+ c3[fillcolor=3]
+ c4[fillcolor=4]
+ c5[fillcolor=5]
+ c6[fillcolor=6]
+ c7[fillcolor=7]
+ c8[fillcolor=8]
+ c9[fillcolor=9]
+ c10[fillcolor=10]
+ c11[fillcolor=11]
+ c12[fillcolor=12]
+ c->{c1 c3 c5 c7 c9 c11}
+ c1->c2
+ c3->c4
+ c5->c6
+ c7->c8
+ c9->c10
+ c11->c12
+}
diff --git a/tests/syntax-tests/source/Graphviz DOT/test_graph.dot b/tests/syntax-tests/source/Graphviz DOT/test_graph.dot
new file mode 100644
index 00000000..34eb0c57
--- /dev/null
+++ b/tests/syntax-tests/source/Graphviz DOT/test_graph.dot
@@ -0,0 +1,3 @@
+graph {
+ a--b
+}
diff --git a/tests/syntax-tests/source/MATLAB/LICENSE.md b/tests/syntax-tests/source/MATLAB/LICENSE.md
new file mode 100644
index 00000000..be753683
--- /dev/null
+++ b/tests/syntax-tests/source/MATLAB/LICENSE.md
@@ -0,0 +1,27 @@
+The `test.matlab` file is a modified version of https://github.com/pygments/pygments/blob/3e1b79c82d2df318f63f24984d875fd2a3400808/tests/test_matlab.py under the following license:
+
+Copyright (c) 2006-2020 by the respective authors (see AUTHORS file).
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/tests/syntax-tests/source/MATLAB/test.matlab b/tests/syntax-tests/source/MATLAB/test.matlab
new file mode 100644
index 00000000..f27cde62
--- /dev/null
+++ b/tests/syntax-tests/source/MATLAB/test.matlab
@@ -0,0 +1,34 @@
+function zz=sample(aa)
+%%%%%%%%%%%%%%%%%%
+% some comments
+%%%%%%%%%%%%%%%%%%
+
+x = 'a string'; % some 'ticks' in a comment
+y = 'a string with ''interal'' quotes';
+
+for i=1:20
+ disp(i);
+end
+
+a = rand(30);
+b = rand(30);
+
+c = a .* b ./ a \ ... comment at end of line and continuation
+ (b .* a + b - a);
+
+c = a' * b'; % note: these ticks are for transpose, not quotes.
+
+disp('a comment symbol, %, in a string');
+
+!echo abc % this isn't a comment - it's passed to system command
+
+function y=myfunc(x)
+y = exp(x);
+
+%{
+ a block comment
+%}
+
+function no_arg_func
+fprintf('%s\n', 'function with no args')
+end
diff --git a/tests/syntax-tests/source/PowerShell/test.ps1 b/tests/syntax-tests/source/PowerShell/test.ps1
new file mode 100755
index 00000000..434414df
--- /dev/null
+++ b/tests/syntax-tests/source/PowerShell/test.ps1
Binary files differ
diff --git a/tests/syntax-tests/source/QML/BatSyntaxTest.qml b/tests/syntax-tests/source/QML/BatSyntaxTest.qml
new file mode 100644
index 00000000..175e48eb
--- /dev/null
+++ b/tests/syntax-tests/source/QML/BatSyntaxTest.qml
@@ -0,0 +1,219 @@
+import QtQuick 2.0
+import "../components"
+
+Page {
+ id: page
+
+ // properties
+
+ property bool startup: true
+ readonly property var var1: null
+ readonly property QtObject var2: null
+
+ allowedOrientations: Orientation.All
+
+ /* components */
+
+ DBusServiceWatcher {
+ id: dbusService
+ service: "org.bat.service"
+
+ onRegisteredChanged: {
+ if (dbusService.registered) {
+ announcedNameField.text = daemon.announcedName()
+ }
+ }
+ }
+
+ Component.onCompleted: {
+ console.debug("completed")
+ }
+
+ Flickable {
+ anchors.fill: parent
+ contentHeight: column.height
+ visible: dbusService.registered
+
+ ViewPlaceholder {
+ enabled: !startup
+ && trustedDevices.count == 0
+ && nearDevices.count == 0
+ text: qsTr("Install Bat.")
+ }
+
+ Column {
+ id: column
+
+ width: page.width
+ spacing: Theme.paddingLarge
+
+ PageHeader {
+ title: qsTr("Syntax Test")
+ }
+
+ TextField {
+ id: announcedNameField
+ width: parent.width
+ label: qsTr("Device Name")
+ text: dbusService.registered ? daemon.announcedName() : ""
+
+ onActiveFocusChanged: {
+ if (activeFocus)
+ return
+
+ if (text.length === 0) {
+ text = daemon.announcedName()
+ } else {
+ daemon.setAnnouncedName(text)
+ placeholderText = text
+ }
+ }
+
+ EnterKey.onClicked: announcedNameField.focus = false
+ EnterKey.iconSource: "image://theme/icon-m-enter-close"
+ }
+
+
+ Component {
+ id: deviceDelegate
+
+ ListItem {
+ id: listItem
+
+ property bool showStatus: deviceStatusLabel.text.length
+
+ width: page.width
+ height: Theme.itemSizeMedium
+
+ Image {
+ id: icon
+ source: iconUrl
+
+ x: Theme.horizontalPageMargin
+ anchors.verticalCenter: parent.verticalCenter
+ sourceSize.width: Theme.iconSizeMedium
+ sourceSize.height: Theme.iconSizeMedium
+ }
+
+ Label {
+ id: deviceNameLabel
+ anchors {
+ left: icon.right
+ leftMargin: Theme.paddingLarge
+ right: parent.right
+ rightMargin: Theme.horizontalPageMargin
+ }
+ y: listItem.contentHeight / 2 - implicitHeight / 2
+ - showStatus * (deviceStatusLabel.implicitHeight / 2)
+
+ text: name
+ color: listItem.highlighted
+ ? Theme.highlightColor
+ : Theme.primaryColor
+ truncationMode: TruncationMode.Fade
+ textFormat: Text.PlainText
+
+ Behavior on y { NumberAnimation {} }
+ }
+
+ Label {
+ id: deviceStatusLabel
+ anchors {
+ left: deviceNameLabel.left
+ top: deviceNameLabel.bottom
+ right: parent.right
+ rightMargin: Theme.horizontalPageMargin
+ }
+
+ text: (trusted && reachable)
+ ? qsTr("Connected")
+ : (hasPairingRequests || waitsForPairing
+ ? qsTr("Pending pairing request ...") : "")
+ color: listItem.highlighted
+ ? Theme.secondaryHighlightColor
+ : Theme.secondaryColor
+ truncationMode: TruncationMode.Fade
+ font.pixelSize: Theme.fontSizeExtraSmall
+ opacity: showStatus ? 1.0 : 0.0
+ width: parent.width
+ textFormat: Text.PlainText
+
+ Behavior on opacity { FadeAnimation {} }
+ }
+
+ onClicked: {
+ pageStack.push(
+ Qt.resolvedUrl("DevicePage.qml"),
+ { deviceId: id })
+ }
+ }
+ }
+
+ DeviceListModel {
+ id: devicelistModel
+ }
+
+ ColumnView {
+ id: devicesView
+ width: page.width
+ itemHeight: Theme.itemSizeMedium
+
+
+ model: trustedDevicesModel
+ delegate: deviceDelegate
+ visible: devicesView.count > 0
+ }
+ }
+
+ PullDownMenu {
+// MenuItem {
+// text: qsTr("About ...")
+// onClicked: pageStack.push(Qt.resolvedUrl("AboutPage.qml"))
+// }
+
+ MenuItem {
+ text: qsTr("Settings ...")
+ onClicked: pageStack.push(Qt.resolvedUrl("SettingsPage.qml"))
+ }
+ }
+
+ VerticalScrollDecorator {}
+ }
+
+ /*
+ Connections {
+ target: ui
+ onOpeningDevicePage: openDevicePage(deviceId)
+ }*/
+
+ Timer {
+ interval: 1000
+ running: true
+ repeat: false
+ onTriggered: startup = false
+ }
+
+ function openDevicePage(deviceId) {
+ if (typeof pageStack === "undefined")
+ return;
+
+ console.log("opening device " + deviceId)
+
+ window.activate()
+
+ var devicePage = pageStack.find(function(page) {
+ return page.objectName === "DevicePage"
+ })
+ if (devicePage !== null && devicePage.deviceId === deviceId) {
+ pageStack.pop(devicePage)
+ ui.showMainWindow()
+ return
+ }
+
+ pageStack.pop(page, PageStackAction.Immediate)
+ pageStack.push(
+ Qt.resolvedUrl("DevicePage.qml"),
+ { deviceId: deviceId },
+ PageStackAction.Immediate)
+ }
+}
diff --git a/tests/syntax-tests/source/SLS/test.sls b/tests/syntax-tests/source/SLS/test.sls
new file mode 100644
index 00000000..a116e6d7
--- /dev/null
+++ b/tests/syntax-tests/source/SLS/test.sls
@@ -0,0 +1,57 @@
+required_packages:
+ pkg.installed:
+ - pkgs:
+ - git
+ - perl
+ - fortune
+
+cowsay_source:
+ git.latest:
+ - name: https://github.com/jasonm23/cowsay.git
+ - target: /root/cowsay
+
+run_installer:
+ cmd.run:
+ - name: ./install.sh /usr/local
+ - cwd: /root/cowsay
+ - onchanges:
+ - git: cowsay_source
+
+{% set cowfiles = salt.cmd.run('cowsay -l').split('\n')[1:] %}
+{% set ascii_arts = cowfiles | join(' ') %}
+
+{% for ascii_art in ascii_arts.split(' ') %}
+run_cowsay_{{ ascii_art }}: # name must be unique
+ cmd.run:
+ {% if ascii_art is in ['head-in', 'sodomized', 'telebears'] %}
+ - name: echo cowsay -f {{ ascii_art }} should not be used
+ {% else %}
+ - name: fortune | cowsay -f {{ ascii_art }}
+ {% endif %}
+{% endfor %}
+
+echo_pillar_demo_1:
+ cmd.run:
+ - name: "echo {{ pillar.demo_text | default('pillar not defined') }}"
+
+echo_pillar_demo_2:
+ cmd.run:
+ - name: "echo {{ pillar.demo.text | default('pillar not defined') }}"
+
+# Comment
+{% set rand = salt['random.get_str'](20) %}
+{% set IP_Address = pillar['IP_Address'] %}
+
+wait:
+ cmd.run:
+ - name: sleep 210 # another comment
+
+create_roster_file:
+ file.managed:
+ - name: /tmp/salt-roster-{{ rand }}
+ - contents:
+ - 'switch:'
+ - ' host: {{ IP_Address }}'
+ - " user: test"
+ - " passwd: {{ passwd }}"
+
diff --git a/tests/syntax-tests/source/Svelte/App.svelte b/tests/syntax-tests/source/Svelte/App.svelte
new file mode 100644
index 00000000..0ede0a00
--- /dev/null
+++ b/tests/syntax-tests/source/Svelte/App.svelte
@@ -0,0 +1,57 @@
+<script>
+ import { onMount } from 'svelte';
+ import List from './List.svelte';
+ import Item from './Item.svelte';
+
+ let item;
+ let page;
+
+ async function hashchange() {
+ // the poor man's router!
+ const path = window.location.hash.slice(1);
+
+ if (path.startsWith('/item')) {
+ const id = path.slice(6);
+ item = await fetch(`https://node-hnapi.herokuapp.com/item/${id}`).then(r => r.json());
+
+ window.scrollTo(0,0);
+ } else if (path.startsWith('/top')) {
+ page = +path.slice(5);
+ item = null;
+ } else {
+ window.location.hash = '/top/1';
+ }
+ }
+
+ onMount(hashchange);
+</script>
+
+<style>
+ main {
+ position: relative;
+ max-width: 800px;
+ margin: 0 auto;
+ min-height: 101vh;
+ padding: 1em;
+ }
+
+ main :global(.meta) {
+ color: #999;
+ font-size: 12px;
+ margin: 0 0 1em 0;
+ }
+
+ main :global(a) {
+ color: rgb(0,0,150);
+ }
+</style>
+
+<svelte:window on:hashchange={hashchange}/>
+
+<main>
+ {#if item}
+ <Item {item} returnTo="#/top/{page}"/>
+ {:else if page}
+ <List {page}/>
+ {/if}
+</main>
diff --git a/tests/syntax-tests/source/Svelte/LICENSE b/tests/syntax-tests/source/Svelte/LICENSE
new file mode 100644
index 00000000..91bf34d4
--- /dev/null
+++ b/tests/syntax-tests/source/Svelte/LICENSE
@@ -0,0 +1,14 @@
+The `App.svelte` file has been added from:
+
+https://github.com/sveltejs/svelte/blob/master/site/content/examples/21-miscellaneous/01-hacker-news/App.svelte
+
+Under the following license:
+
+
+Copyright (c) 2016-20 [these people](https://github.com/sveltejs/svelte/graphs/contributors)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tests/syntax-tests/source/Vue/example.vue b/tests/syntax-tests/source/Vue/example.vue
new file mode 100644
index 00000000..5e0467f1
--- /dev/null
+++ b/tests/syntax-tests/source/Vue/example.vue
@@ -0,0 +1,55 @@
+<template>
+ <div id="app" class="container-fluid">
+ <AppHeader></AppHeader>
+ <transition name="page" mode="out-in" v-if="!isLoading">
+ <router-view></router-view>
+ </transition>
+ <AppLoadingIndicator></AppLoadingIndicator>
+ </div>
+</template>
+
+<script>
+import AppHeader from "@/components/AppHeader";
+import AppLoadingIndicator from "@/components/AppLoadingIndicator";
+import { mapGetters } from "vuex";
+
+export default {
+ name: "App",
+ components: {
+ AppHeader,
+ AppLoadingIndicator,
+ },
+ beforeCreate() {
+ this.$store.dispatch("fetchData");
+ },
+ data: {
+ message: "Hello!"
+ },
+ computed: {
+ ...mapGetters({
+ isLoading: "isLoading",
+ }),
+ },
+};
+</script>
+
+<style>
+body {
+ background-color: rgba(72, 163, 184, 0.05) !important;
+}
+
+.page-enter-active,
+.page-leave-active {
+ transition: opacity 0.2s;
+}
+
+.page-enter,
+.page-leave-active {
+ opacity: 0;
+}
+
+.page-enter:hover {
+ opacity: 1;
+}
+
+</style>
diff --git a/tests/syntax-tests/source/nginx/nginx.conf b/tests/syntax-tests/source/nginx/nginx.conf
new file mode 100644
index 00000000..02ee8a4b
--- /dev/null
+++ b/tests/syntax-tests/source/nginx/nginx.conf
@@ -0,0 +1,140 @@
+#user nobody;
+worker_processes 1;
+#pid logs/nginx.pid;
+
+load_module "/usr/local/libexec/nginx/ngx_http_xslt_filter_module.so";
+load_module "/usr/local/libexec/nginx/ngx_rtmp_module.so";
+
+events {
+ worker_connections 1024;
+}
+
+http {
+ include mime.types;
+ default_type application/octet-stream;
+ sendfile on;
+ keepalive_timeout 65;
+ gzip on;
+ gzip_disable "msie6";
+
+ include /usr/local/etc/nginx/sites.d/*;
+}
+
+rtmp {
+ server {
+ listen 1935;
+ max_message 10M;
+
+ application wnob {
+ live on;
+ record off;
+ }
+
+ application strim {
+ live on;
+ hls on;
+
+ hls_path /usr/local/www/hls/;
+
+ hls_variant _low BANDWIDTH=250000;
+ hls_variant _mid BANDWIDTH=500000;
+ hls_variant _high BANDWIDTH=1000000;
+ hls_variant _hd720 BANDWIDTH=1500000;
+ hls_variant _src BANDWIDTH=2000000;
+ }
+ }
+}
+
+server {
+ listen 443 ssl;
+ server_name host.example.com
+ root /usr/local/www/host.example.com/;
+ error_page 404 /404.html;
+
+ index index.html;
+ autoindex on;
+ autoindex_localtime off;
+ autoindex_format xml;
+
+ location / {
+ xslt_stylesheet /usr/local/www/host.example.com/index.xslt;
+ }
+
+ location ~ /\..* {
+ return 404;
+ }
+
+ location ~ /.+/ {
+ xslt_stylesheet /usr/local/www/host.example.com/project.xslt;
+ }
+
+ location ~ /.*\.xslt/ {
+ return 404;
+ }
+
+ location ~ \.thumb\.png$ {
+ error_page 404 /404.thumb.png;
+ }
+ ssl_certificate /usr/local/etc/letsencrypt/live/host.example.com/fullchain.pem; # managed by Certbot
+ ssl_certificate_key /usr/local/etc/letsencrypt/live/host.example.com/privkey.pem; # managed by Certbot
+
+ include /usr/local/etc/letsencrypt/options-ssl-nginx.conf;
+ ssl_dhparam /usr/local/etc/letsencrypt/ssl-dhparams.pem;
+
+ add_header Strict-Transport-Security "max-age=31536000" always;
+
+}
+
+server {
+ listen 80;
+ server_name host.example.com;
+
+ if ($host = host.example.com) {
+ return 301 https://$host$request_uri;
+ }
+
+ return 404;
+}
+
+server {
+ listen 443 ssl;
+ server_name other.example.com;
+
+ ssl_certificate /usr/local/etc/letsencrypt/live/other.example.com/fullchain.pem;
+ ssl_certificate_key /usr/local/etc/letsencrypt/live/other.example.com/privkey.pem;
+
+ include /usr/local/etc/letsencrypt/options-ssl-nginx.conf;
+ ssl_dhparam /usr/local/etc/letsencrypt/ssl-dhparams.pem;
+
+ add_header Strict-Transport-Security "max-age=31536000" always;
+
+ access_log /home/otherapp/logs/access.log;
+ error_log /home/otherapp/logs/error.log;
+
+ client_max_body_size 5M;
+
+ location / {
+ root /home/otherapp/app/static;
+ index man.txt;
+ try_files $uri @proxy;
+ }
+
+ location @proxy {
+ proxy_set_header Host $http_host;
+ proxy_set_header X-Forwarded-Host $host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_pass http://unix:/var/run/otherapp/sock:;
+ }
+}
+
+server {