## Common test patterns for Nimcheck tests.
## This module provides code snippets used across test suites.
## Import it, then reference the const values directly.
import std/[strutils, json]
const
NimGoodCode* = """proc add*(a, b: int): int =
## Add two numbers.
result = a + b
"""
NimBadCode* = """proc add*(a, b: int): int =
## Add two numbers.
result = a + b
let x = "
"""
BashGoodCode* = """#!/usr/bin/env bash
echo "Hello, world!"
for i in 1 2 3; do
echo $i
done
"""
BashBadCode* = """#!/usr/bin/env bash
echo ${unclosed
"""
PythonGoodCode* = """def hello(name: str) -> str:
return f"Hello, {name}!"
class Greeter:
def __init__(self, prefix: str):
self.prefix = prefix
"""
PythonBadCode* = """def broken():
x = "
"""
JsGoodCode* = """function greet(name) {
return `Hello, ${name}!`;
}
const nums = [1, 2, 3];
"""
JsBadCode* = """function broken() {
const x = `
"""
PhpGoodCode* = """
Test
Hello
"""
HtmlBadCode* = """
Unclosed tag
"""
JinjaGoodCode* = """{% extends "base.html" %}
{% block content %}
{{ title }}
{{ content }}
{% endblock %}
"""
JsonGoodCode* = """{"name": "test", "value": 42}"""
JsonBadCode* = """{"name": "test", "value": }"""
YamlGoodCode* = """name: test
version: 1.0
dependencies:
- lib1
- lib2
"""
YamlBadCode* = """name: test
: invalid
"""
TomlGoodCode* = """[package]
name = "test"
version = "1.0.0"
[[dependencies]]
name = "lib"
version = "2.0"
"""
TomlBadCode* = """[package]
name = "test"
invalid line
"""
# ---------------------------------------------------------------------------
# C
# ---------------------------------------------------------------------------
CGoodCode* = """#include
int main(void) {
printf("Hello, world!\\n");
return 0;
}
"""
CBadCode* = """#include
int main(void) {
printf("Hello, world!\\n")
return 0
"""
# ---------------------------------------------------------------------------
# C++
# ---------------------------------------------------------------------------
CppGoodCode* = """#include
#include
int main() {
std::vector nums = {1, 2, 3};
for (auto n : nums) {
std::cout << n << std::endl;
}
return 0;
}
"""
CppBadCode* = """#include
int main() {
std::cout << "unclosed
return 0;
"""
# ---------------------------------------------------------------------------
# C#
# ---------------------------------------------------------------------------
CSharpGoodCode* = """using System;
class Program {
static void Main(string[] args) {
Console.WriteLine("Hello, world!");
}
}
"""
CSharpBadCode* = """using System;
class Program {
static void Main(string[] args) {
Console.WriteLine("unclosed
"""
# ---------------------------------------------------------------------------
# Java
# ---------------------------------------------------------------------------
JavaGoodCode* = """public class Hello {
public static void main(String[] args) {
System.out.println("Hello, world!");
}
}
"""
JavaBadCode* = """public class Hello {
public static void main(String[] args) {
System.out.println("unclosed
"""
# ---------------------------------------------------------------------------
# Kotlin
# ---------------------------------------------------------------------------
KotlinGoodCode* = """fun main() {
println("Hello, world!")
}
"""
KotlinBadCode* = """fun main() {
println("unclosed
"""
# ---------------------------------------------------------------------------
# Lua
# ---------------------------------------------------------------------------
LuaGoodCode* = """function hello(name)
print("Hello, " .. name .. "!")
end
"""
LuaBadCode* = """function hello(name)
print("unclosed
"""
# ---------------------------------------------------------------------------
# Swift
# ---------------------------------------------------------------------------
SwiftGoodCode* = """import Foundation
func hello(name: String) -> String {
return "Hello, \\(name)!"
}
print(hello(name: "world"))
"""
SwiftBadCode* = """import Foundation
func hello(name: String) -> String {
return "unclosed
"""
# ---------------------------------------------------------------------------
# TypeScript
# ---------------------------------------------------------------------------
TsGoodCode* = """function greet(name: string): string {
return `Hello, ${name}!`;
}
"""
TsBadCode* = """function greet(name: string): string {
return `unclosed
"""
# ---------------------------------------------------------------------------
# XML
# ---------------------------------------------------------------------------
XmlGoodCode* = """
Content
"""
XmlBadCode* = """
Unclosed
"""
# ---------------------------------------------------------------------------
# Go
# ---------------------------------------------------------------------------
GoGoodCode* = """package main
import "fmt"
func main() {
fmt.Println("Hello, world!")
}
"""
GoBadCode* = """package main
import "fmt"
func main() {
fmt.Println("unclosed
"""
# ---------------------------------------------------------------------------
# Rust
# ---------------------------------------------------------------------------
RustGoodCode* = """fn main() {
println!("Hello, world!");
}
"""
RustBadCode* = """fn main() {
println!("unclosed
"""
# ---------------------------------------------------------------------------
# Ruby
# ---------------------------------------------------------------------------
RubyGoodCode* = """def hello
puts "Hello, world!"
end
"""
RubyBadCode* = """def hello
puts "unclosed
"""
# ---------------------------------------------------------------------------
# CSS
# ---------------------------------------------------------------------------
CssGoodCode* = """body {
color: red;
background: blue;
}
h1 {
font-size: 2em;
}
"""
CssBadCode* = """body {
color: red;
background: "unclosed
"""
# ---------------------------------------------------------------------------
# SQL
# ---------------------------------------------------------------------------
SqlGoodCode* = """SELECT * FROM users
WHERE id = 1
ORDER BY name;
"""
SqlBadCode* = """SELECT * FROM users
WHERE name = 'unclosed
"""
# ---------------------------------------------------------------------------
# Markdown
# ---------------------------------------------------------------------------
MdGoodCode* = """# Hello World
This is a **markdown** file.
- Item 1
- Item 2
```python
print("hi")
```
"""
MdBadCode* = """# Hello World
```python
print("unclosed
"""
# ---------------------------------------------------------------------------
# Dockerfile
# ---------------------------------------------------------------------------
DockerGoodCode* = """FROM ubuntu:latest
RUN apt-get update
CMD ["echo", "hello"]
"""
DockerBadCode* = """FROM ubuntu:latest
RUN echo "
"""
# ---------------------------------------------------------------------------
# Makefile
# ---------------------------------------------------------------------------
MakefileGoodCode* = """CC = gcc
CFLAGS = -Wall -O2
all: hello
hello: hello.c
""" & "\t" & """$(CC) $(CFLAGS) -o hello hello.c
.PHONY: clean
clean:
""" & "\t" & "rm -f hello\n"
MakefileBadCode* = """CC = gcc
all:
""" & "\t" & "echo \"\n"
# ---------------------------------------------------------------------------
# Garbage/false positive check patterns
# ---------------------------------------------------------------------------
FalsePositiveDetectionSamples* = """abc def ghi
hello
42 123 456
... --- !!!
"""