mirror of
https://github.com/gleam-lang/gleam.git
synced 2024-10-04 02:18:03 +03:00
Language tests across Erlang and JavaScript
This commit is contained in:
parent
03b5365852
commit
d616aac672
8
.github/workflows/ci.yaml
vendored
8
.github/workflows/ci.yaml
vendored
@ -126,6 +126,14 @@ jobs:
|
||||
sed -i 's/cargo run --/gleam/' */rebar.config */Makefile
|
||||
working-directory: ./test
|
||||
|
||||
- name: test/language Erlang
|
||||
run: make clean erlang
|
||||
working-directory: ./test/language
|
||||
|
||||
- name: test/language JavaScript
|
||||
run: make clean javascript
|
||||
working-directory: ./test/language
|
||||
|
||||
- name: test/build_with_gleam
|
||||
run: gleam eunit
|
||||
working-directory: ./test/build_with_gleam
|
||||
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -4,3 +4,4 @@
|
||||
/tmp
|
||||
.idea/
|
||||
.idea/*
|
||||
erl_crash.dump
|
||||
|
2
test/language/.gitignore
vendored
Normal file
2
test/language/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
erlang
|
||||
javascript
|
17
test/language/Makefile
Normal file
17
test/language/Makefile
Normal file
@ -0,0 +1,17 @@
|
||||
.phony: build
|
||||
build: clean erlang javascript
|
||||
|
||||
.phony: clean
|
||||
clean:
|
||||
rm -rf target-*
|
||||
|
||||
.phony: erlang
|
||||
erlang:
|
||||
cargo run -- compile-package --name language --src src --out target-erlang --target erlang
|
||||
cd target-erlang && erlc *.erl
|
||||
escript main_erlang.erl
|
||||
|
||||
.phony: javascript
|
||||
javascript:
|
||||
cargo run -- compile-package --name language --src src --out target-javascript --target javascript
|
||||
node main_javascript.js
|
13
test/language/main_erlang.erl
Normal file
13
test/language/main_erlang.erl
Normal file
@ -0,0 +1,13 @@
|
||||
!/usr/bin/env escript
|
||||
%% -*- erlang -*-
|
||||
%%! -pa target-erlang
|
||||
|
||||
-module(democtl).
|
||||
|
||||
main(_) ->
|
||||
Print = fun(S) ->
|
||||
io:format("~s", [S]),
|
||||
S
|
||||
end,
|
||||
Status = main:main(Print),
|
||||
halt(Status).
|
9
test/language/main_javascript.js
Normal file
9
test/language/main_javascript.js
Normal file
@ -0,0 +1,9 @@
|
||||
import { main } from "./target-javascript/main.js";
|
||||
|
||||
function print(string) {
|
||||
process.stdout.write(string);
|
||||
return string;
|
||||
}
|
||||
|
||||
let status = main(print);
|
||||
process.exit(status);
|
3
test/language/package.json
Normal file
3
test/language/package.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"type": "module"
|
||||
}
|
4
test/language/src/main.gleam
Normal file
4
test/language/src/main.gleam
Normal file
@ -0,0 +1,4 @@
|
||||
pub fn main(print: fn(String) -> String) -> Int {
|
||||
print("Hello, world!\n")
|
||||
0
|
||||
}
|
9
test/language/target-erlang/main.erl
Normal file
9
test/language/target-erlang/main.erl
Normal file
@ -0,0 +1,9 @@
|
||||
-module(main).
|
||||
-compile(no_auto_import).
|
||||
|
||||
-export([main/1]).
|
||||
|
||||
-spec main(fun((binary()) -> binary())) -> integer().
|
||||
main(Print) ->
|
||||
Print(<<"Hello, world!\n"/utf8>>),
|
||||
0.
|
BIN
test/language/target-erlang/main.gleam_module
Normal file
BIN
test/language/target-erlang/main.gleam_module
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user