47 lines
1.2 KiB
Gleam
47 lines
1.2 KiB
Gleam
import gleam/list
|
|
import gleam/string
|
|
import gltoml
|
|
import simplifile
|
|
import startest
|
|
import startest/expect
|
|
|
|
pub fn main() -> Nil {
|
|
startest.run(startest.default_config())
|
|
}
|
|
|
|
// gleeunit test functions end in `_test`
|
|
pub fn files_tests() {
|
|
let assert Ok(test_file) =
|
|
simplifile.read("./toml-test/tests/files-toml-1.1.0")
|
|
let files =
|
|
string.split(test_file, "\n")
|
|
|> list.filter(fn(filename) { string.ends_with(filename, ".toml") })
|
|
// We need to omit the encoding tests because these generally require a different method to
|
|
// load as simplifile doesn't appear to open non-valid utf 8/16 files
|
|
|> list.filter(fn(filename) {
|
|
!string.starts_with(filename, "invalid/encoding")
|
|
})
|
|
files |> list.length |> echo
|
|
|
|
list.map(files, fn(filename) {
|
|
startest.it(filename, fn() {
|
|
let toml =
|
|
simplifile.read("./toml-test/tests/" <> filename) |> expect.to_be_ok
|
|
|
|
let tom = gltoml.parse(toml)
|
|
case filename {
|
|
"valid/" <> _ -> {
|
|
expect.to_be_ok(tom)
|
|
Nil
|
|
}
|
|
"invalid/" <> _ -> {
|
|
expect.to_be_error(tom)
|
|
Nil
|
|
}
|
|
_ -> Nil
|
|
}
|
|
})
|
|
})
|
|
|> startest.describe("files test", _)
|
|
}
|