Language tests across Erlang and JavaScript

This commit is contained in:
Louis Pilfold 2021-05-01 19:25:36 +01:00
parent 03b5365852
commit d616aac672
10 changed files with 66 additions and 0 deletions

View File

@ -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
View File

@ -4,3 +4,4 @@
/tmp
.idea/
.idea/*
erl_crash.dump

2
test/language/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
erlang
javascript

17
test/language/Makefile Normal file
View 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

View 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).

View 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);

View File

@ -0,0 +1,3 @@
{
"type": "module"
}

View File

@ -0,0 +1,4 @@
pub fn main(print: fn(String) -> String) -> Int {
print("Hello, world!\n")
0
}

View 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.

Binary file not shown.