Skip to content

Commit 965d15b

Browse files
✨ Add Erlang as a language (#4406)
Signed-off-by: Kiko Fernandez-Reyes <[email protected]>
1 parent 2f6a76c commit 965d15b

File tree

6 files changed

+51
-0
lines changed

6 files changed

+51
-0
lines changed

checks/raw/fuzzing.go

+8
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,14 @@ var languageFuzzSpecs = map[clients.LanguageName]languageFuzzConfig{
5656
Desc: asPointer(
5757
"Go fuzzing intelligently walks through the source code to report failures and find vulnerabilities."),
5858
},
59+
// Fuzz patterns for Erlang based on property-based testing.
60+
clients.Erlang: {
61+
filePatterns: []string{"*.erl", "*.hrl"},
62+
// Look for direct imports of QuickCheck or Proper,
63+
funcPattern: `-include_lib\("(eqc|proper)/include/(eqc|proper).hrl"\)\.`,
64+
Name: fuzzers.PropertyBasedErlang,
65+
Desc: propertyBasedDescription("Erlang"),
66+
},
5967
// Fuzz patterns for Haskell based on property-based testing.
6068
//
6169
// Based on the import of one of these packages:

checks/raw/fuzzing_test.go

+37
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,43 @@ func Test_checkFuzzFunc(t *testing.T) {
260260
},
261261
fileContent: "func TestFoo (t *testing.T)",
262262
},
263+
{
264+
name: "Erlang QuickCheck",
265+
want: true,
266+
fileName: []string{"erlang-eqc.hs"},
267+
langs: []clients.Language{
268+
{
269+
Name: clients.Erlang,
270+
NumLines: 50,
271+
},
272+
},
273+
fileContent: "-include_lib(\"eqc/include/eqc.hrl\").",
274+
},
275+
{
276+
name: "Erlang Proper",
277+
want: true,
278+
fileName: []string{"erlang-proper.hs"},
279+
langs: []clients.Language{
280+
{
281+
Name: clients.Erlang,
282+
NumLines: 50,
283+
},
284+
},
285+
fileContent: "-include_lib(\"proper/include/proper.hrl\").",
286+
},
287+
{
288+
name: "Erlang with no property-based testing",
289+
want: false,
290+
fileName: []string{"erlang-ct.erl"},
291+
wantErr: true,
292+
langs: []clients.Language{
293+
{
294+
Name: clients.Erlang,
295+
NumLines: 50,
296+
},
297+
},
298+
fileContent: "-include_lib(\"common_test/include/ct.hrl\").",
299+
},
263300
{
264301
name: "Haskell QuickCheck",
265302
want: true,

clients/languages.go

+3
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,9 @@ const (
7474
// Dockerfile: https://docs.docker.com/engine/reference/builder/
7575
Dockerfile LanguageName = "dockerfile"
7676

77+
// Erlang: https://www.erlang.org/
78+
Erlang LanguageName = "erlang"
79+
7780
// Haskell: https://www.haskell.org/
7881
Haskell LanguageName = "haskell"
7982

docs/checks.md

+1
Original file line numberDiff line numberDiff line change
@@ -343,6 +343,7 @@ This check tries to determine if the project uses
343343
- currently only supports [Go fuzzing](https://go.dev/doc/fuzz/),
344344
- a limited set of property-based testing libraries for Haskell including [QuickCheck](https://hackage.haskell.org/package/QuickCheck), [Hedgehog](https://hedgehog.qa/), [validity](https://hackage.haskell.org/package/validity) or [SmallCheck](https://hackage.haskell.org/package/smallcheck),
345345
- a limited set of property-based testing libraries for JavaScript and TypeScript including [fast-check](https://fast-check.dev/).
346+
- a limited set of property-based testing libraries for Erlang, including proper and quickcheck.
346347

347348
Fuzzing, or fuzz testing, is the practice of feeding unexpected or random data
348349
into a program to expose bugs. Regular fuzzing is important to detect

docs/checks/internal/checks.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -403,6 +403,7 @@ checks:
403403
- currently only supports [Go fuzzing](https://go.dev/doc/fuzz/),
404404
- a limited set of property-based testing libraries for Haskell including [QuickCheck](https://hackage.haskell.org/package/QuickCheck), [Hedgehog](https://hedgehog.qa/), [validity](https://hackage.haskell.org/package/validity) or [SmallCheck](https://hackage.haskell.org/package/smallcheck),
405405
- a limited set of property-based testing libraries for JavaScript and TypeScript including [fast-check](https://fast-check.dev/).
406+
- a limited set of property-based testing libraries for Erlang, including proper and quickcheck.
406407
407408
Fuzzing, or fuzz testing, is the practice of feeding unexpected or random data
408409
into a program to expose bugs. Regular fuzzing is important to detect

internal/fuzzers/fuzzers.go

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ const (
1919
OSSFuzz = "OSSFuzz"
2020
ClusterFuzzLite = "ClusterFuzzLite"
2121
BuiltInGo = "GoBuiltInFuzzer"
22+
PropertyBasedErlang = "ErlangPropertyBasedTesting"
2223
PropertyBasedHaskell = "HaskellPropertyBasedTesting"
2324
PropertyBasedJavaScript = "JavaScriptPropertyBasedTesting"
2425
PropertyBasedTypeScript = "TypeScriptPropertyBasedTesting"

0 commit comments

Comments
 (0)