mirror of
https://github.com/roc-lang/roc.git
synced 2025-11-01 21:40:58 +00:00
Fix broken CLI tests
This commit is contained in:
parent
50f6e11423
commit
f9008c3af0
4 changed files with 44 additions and 37 deletions
|
|
@ -38,7 +38,7 @@ loop = \state, step ->
|
|||
\res ->
|
||||
when res is
|
||||
Ok (Step newState) -> Step newState
|
||||
Ok (Done result) -> Done (Ok result)
|
||||
Ok (Done res2) -> Done (Ok res2)
|
||||
Err e -> Done (Err e)
|
||||
|
||||
Effect.loop state looper
|
||||
|
|
@ -55,8 +55,8 @@ after : Task a err, (a -> Task b err) -> Task b err
|
|||
after = \effect, transform ->
|
||||
Effect.after
|
||||
effect
|
||||
\result ->
|
||||
when result is
|
||||
\res ->
|
||||
when res is
|
||||
Ok a -> transform a
|
||||
Err err -> Task.fail err
|
||||
|
||||
|
|
@ -64,8 +64,8 @@ await : Task a err, (a -> Task b err) -> Task b err
|
|||
await = \effect, transform ->
|
||||
Effect.after
|
||||
effect
|
||||
\result ->
|
||||
when result is
|
||||
\res ->
|
||||
when res is
|
||||
Ok a -> transform a
|
||||
Err err -> Task.fail err
|
||||
|
||||
|
|
@ -73,8 +73,8 @@ attempt : Task a b, (Result a b -> Task c d) -> Task c d
|
|||
attempt = \task, transform ->
|
||||
Effect.after
|
||||
task
|
||||
\result ->
|
||||
when result is
|
||||
\res ->
|
||||
when res is
|
||||
Ok ok -> transform (Ok ok)
|
||||
Err err -> transform (Err err)
|
||||
|
||||
|
|
@ -82,8 +82,8 @@ map : Task a err, (a -> b) -> Task b err
|
|||
map = \effect, transform ->
|
||||
Effect.map
|
||||
effect
|
||||
\result ->
|
||||
when result is
|
||||
\res ->
|
||||
when res is
|
||||
Ok a -> Ok (transform a)
|
||||
Err err -> Err err
|
||||
|
||||
|
|
@ -91,7 +91,7 @@ result : Task ok err -> Task (Result ok err) *
|
|||
result = \effect ->
|
||||
Effect.after
|
||||
effect
|
||||
\result -> Task.succeed result
|
||||
\res -> Task.succeed res
|
||||
|
||||
putLine : Str -> Task {} *
|
||||
putLine = \line -> Effect.map (Effect.putLine line) (\_ -> Ok {})
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ mod cli_run {
|
|||
use serial_test::serial;
|
||||
use std::iter;
|
||||
use std::path::Path;
|
||||
use std::process::ExitStatus;
|
||||
|
||||
#[cfg(all(unix, not(target_os = "macos")))]
|
||||
const ALLOW_VALGRIND: bool = true;
|
||||
|
|
@ -106,6 +107,11 @@ mod cli_run {
|
|||
assert_multiline_str_eq!(err.as_str(), expected);
|
||||
}
|
||||
|
||||
fn assert_valid_roc_check_status(status: ExitStatus) {
|
||||
// 0 means no errors or warnings, 2 means just warnings
|
||||
assert!(status.code().is_some_and(|code| code == 0 || code == 2))
|
||||
}
|
||||
|
||||
fn check_format_check_as_expected(file: &Path, expects_success_exit_code: bool) {
|
||||
let out = run_roc([CMD_FORMAT, file.to_str().unwrap(), CHECK_FLAG], &[], &[]);
|
||||
|
||||
|
|
@ -803,7 +809,7 @@ mod cli_run {
|
|||
fn check_virtual_dom_server() {
|
||||
let path = file_path_from_root("examples/virtual-dom-wip", "example-server.roc");
|
||||
let out = run_roc([CMD_CHECK, path.to_str().unwrap()], &[], &[]);
|
||||
assert!(out.status.success());
|
||||
assert_valid_roc_check_status(out.status);
|
||||
}
|
||||
|
||||
// TODO: write a new test once mono bugs are resolved in investigation
|
||||
|
|
@ -812,7 +818,7 @@ mod cli_run {
|
|||
fn check_virtual_dom_client() {
|
||||
let path = file_path_from_root("examples/virtual-dom-wip", "example-client.roc");
|
||||
let out = run_roc([CMD_CHECK, path.to_str().unwrap()], &[], &[]);
|
||||
assert!(out.status.success());
|
||||
assert_valid_roc_check_status(out.status);
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
@ -821,7 +827,7 @@ mod cli_run {
|
|||
fn cli_countdown_check() {
|
||||
let path = file_path_from_root("crates/cli/tests/cli", "countdown.roc");
|
||||
let out = run_roc([CMD_CHECK, path.to_str().unwrap()], &[], &[]);
|
||||
assert!(out.status.success());
|
||||
assert_valid_roc_check_status(out.status);
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
@ -830,7 +836,7 @@ mod cli_run {
|
|||
fn cli_echo_check() {
|
||||
let path = file_path_from_root("crates/cli/tests/cli", "echo.roc");
|
||||
let out = run_roc([CMD_CHECK, path.to_str().unwrap()], &[], &[]);
|
||||
assert!(out.status.success());
|
||||
assert_valid_roc_check_status(out.status);
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
@ -839,7 +845,7 @@ mod cli_run {
|
|||
fn cli_file_check() {
|
||||
let path = file_path_from_root("crates/cli/tests/cli", "fileBROKEN.roc");
|
||||
let out = run_roc([CMD_CHECK, path.to_str().unwrap()], &[], &[]);
|
||||
assert!(out.status.success());
|
||||
assert_valid_roc_check_status(out.status);
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
@ -848,7 +854,8 @@ mod cli_run {
|
|||
fn cli_form_check() {
|
||||
let path = file_path_from_root("crates/cli/tests/cli", "form.roc");
|
||||
let out = run_roc([CMD_CHECK, path.to_str().unwrap()], &[], &[]);
|
||||
assert!(out.status.success());
|
||||
dbg!(out.stdout, out.stderr);
|
||||
assert_valid_roc_check_status(out.status);
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
@ -857,7 +864,7 @@ mod cli_run {
|
|||
fn cli_http_get_check() {
|
||||
let path = file_path_from_root("crates/cli/tests/cli", "http-get.roc");
|
||||
let out = run_roc([CMD_CHECK, path.to_str().unwrap()], &[], &[]);
|
||||
assert!(out.status.success());
|
||||
assert_valid_roc_check_status(out.status);
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
@ -1482,9 +1489,9 @@ mod cli_run {
|
|||
|
||||
Something is off with the body of the main definition:
|
||||
|
||||
6│ main : Str -> Task {} []
|
||||
7│ main = /_ ->
|
||||
8│ "this is a string, not a Task {} [] function like the platform expects."
|
||||
5│ main : Str -> Task {} []
|
||||
6│ main = /_ ->
|
||||
7│ "this is a string, not a Task {} [] function like the platform expects."
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
The body is a string of type:
|
||||
|
|
|
|||
|
|
@ -1,8 +1,7 @@
|
|||
app "type-error"
|
||||
packages { pf: "../../../../examples/cli/false-interpreter/platform/main.roc" }
|
||||
imports [pf.Task.{ Task }]
|
||||
provides [main] to pf
|
||||
app [main] { pf: platform "../../../../examples/cli/false-interpreter/platform/main.roc" }
|
||||
|
||||
import pf.Task exposing [Task]
|
||||
|
||||
main : Str -> Task {} []
|
||||
main = \_ ->
|
||||
"this is a string, not a Task {} [] function like the platform expects."
|
||||
"this is a string, not a Task {} [] function like the platform expects."
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ module [
|
|||
map,
|
||||
onFail,
|
||||
attempt,
|
||||
result,
|
||||
fromResult,
|
||||
loop,
|
||||
]
|
||||
|
|
@ -22,7 +23,7 @@ loop = \state, step ->
|
|||
\res ->
|
||||
when res is
|
||||
Ok (Step newState) -> Step newState
|
||||
Ok (Done result) -> Done (Ok result)
|
||||
Ok (Done res2) -> Done (Ok res2)
|
||||
Err e -> Done (Err e)
|
||||
|
||||
Effect.loop state looper
|
||||
|
|
@ -36,8 +37,8 @@ fail = \val ->
|
|||
Effect.always (Err val)
|
||||
|
||||
fromResult : Result a e -> Task a e
|
||||
fromResult = \result ->
|
||||
when result is
|
||||
fromResult = \res ->
|
||||
when res is
|
||||
Ok a -> succeed a
|
||||
Err e -> fail e
|
||||
|
||||
|
|
@ -45,8 +46,8 @@ attempt : Task a b, (Result a b -> Task c d) -> Task c d
|
|||
attempt = \effect, transform ->
|
||||
Effect.after
|
||||
effect
|
||||
\result ->
|
||||
when result is
|
||||
\res ->
|
||||
when res is
|
||||
Ok ok -> transform (Ok ok)
|
||||
Err err -> transform (Err err)
|
||||
|
||||
|
|
@ -54,8 +55,8 @@ await : Task a err, (a -> Task b err) -> Task b err
|
|||
await = \effect, transform ->
|
||||
Effect.after
|
||||
effect
|
||||
\result ->
|
||||
when result is
|
||||
\res ->
|
||||
when res is
|
||||
Ok a -> transform a
|
||||
Err err -> Task.fail err
|
||||
|
||||
|
|
@ -63,8 +64,8 @@ onFail : Task ok a, (a -> Task ok b) -> Task ok b
|
|||
onFail = \effect, transform ->
|
||||
Effect.after
|
||||
effect
|
||||
\result ->
|
||||
when result is
|
||||
\res ->
|
||||
when res is
|
||||
Ok a -> Task.succeed a
|
||||
Err err -> transform err
|
||||
|
||||
|
|
@ -72,8 +73,8 @@ map : Task a err, (a -> b) -> Task b err
|
|||
map = \effect, transform ->
|
||||
Effect.after
|
||||
effect
|
||||
\result ->
|
||||
when result is
|
||||
\res ->
|
||||
when res is
|
||||
Ok a -> Task.succeed (transform a)
|
||||
Err err -> Task.fail err
|
||||
|
||||
|
|
@ -81,4 +82,4 @@ result : Task ok err -> Task (Result ok err) *
|
|||
result = \effect ->
|
||||
Effect.after
|
||||
effect
|
||||
\result -> Task.succeed result
|
||||
\res -> Task.succeed res
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue