mirror of
https://github.com/edg-l/edlang.git
synced 2024-11-22 07:58:24 +00:00
fix: fix tests
This commit is contained in:
parent
84c2274221
commit
b4e89578c8
2
.github/workflows/release.yml
vendored
2
.github/workflows/release.yml
vendored
|
@ -42,7 +42,7 @@ jobs:
|
|||
uses: orhun/git-cliff-action@v3
|
||||
id: git-cliff
|
||||
with:
|
||||
args: -vv --latest --strip header
|
||||
args: -vv --current --strip header
|
||||
env:
|
||||
OUTPUT: CHANGES.md
|
||||
- name: Release
|
||||
|
|
52
CHANGELOG.md
52
CHANGELOG.md
|
@ -2,12 +2,21 @@
|
|||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
## [unreleased]
|
||||
## [0.0.1-alpha.15] - 2024-03-13
|
||||
|
||||
### 🚀 Features
|
||||
|
||||
- Module file declarations, fixes
|
||||
|
||||
### 🐛 Bug Fixes
|
||||
|
||||
- Fix
|
||||
|
||||
- Fix multi file function resolution
|
||||
|
||||
- Fix scope
|
||||
|
||||
|
||||
## [0.0.1-alpha.14] - 2024-03-11
|
||||
|
||||
### 🐛 Bug Fixes
|
||||
|
@ -28,6 +37,8 @@ All notable changes to this project will be documented in this file.
|
|||
|
||||
- Fix span in lalrpop
|
||||
- Fix on type qualifier lowering
|
||||
- Fix ci2
|
||||
|
||||
|
||||
### ⚙️ Miscellaneous Tasks
|
||||
|
||||
|
@ -97,6 +108,11 @@ All notable changes to this project will be documented in this file.
|
|||
|
||||
- Struct support
|
||||
|
||||
### 🧪 Testing
|
||||
|
||||
- Test
|
||||
|
||||
|
||||
## [0.0.1-alpha.7] - 2024-02-17
|
||||
|
||||
### 🚀 Features
|
||||
|
@ -114,6 +130,8 @@ All notable changes to this project will be documented in this file.
|
|||
### 🐛 Bug Fixes
|
||||
|
||||
- Fix a miscompilation
|
||||
- Fixes
|
||||
|
||||
|
||||
## [0.0.1-alpha.5] - 2024-02-14
|
||||
|
||||
|
@ -121,6 +139,8 @@ All notable changes to this project will be documented in this file.
|
|||
|
||||
- *(linker)* Fix linker on distros like ubuntu
|
||||
- *(ci)* Ci improvements
|
||||
- Fix ci
|
||||
|
||||
|
||||
## [0.0.1-alpha.4] - 2024-02-14
|
||||
|
||||
|
@ -156,6 +176,11 @@ All notable changes to this project will be documented in this file.
|
|||
|
||||
- Compile ifs
|
||||
|
||||
### 🐛 Bug Fixes
|
||||
|
||||
- Fix
|
||||
|
||||
|
||||
### 🎨 Styling
|
||||
|
||||
- Format
|
||||
|
@ -166,4 +191,29 @@ All notable changes to this project will be documented in this file.
|
|||
- Update deps
|
||||
- Update version
|
||||
|
||||
## [0.0.1-alpha.1] - 2024-02-09
|
||||
|
||||
### 🐛 Bug Fixes
|
||||
|
||||
- Fix double return
|
||||
|
||||
- Fixes
|
||||
|
||||
- Fix
|
||||
|
||||
- Fix
|
||||
|
||||
|
||||
### 🎨 Styling
|
||||
|
||||
- Style
|
||||
|
||||
|
||||
### ⚙️ Miscellaneous Tasks
|
||||
|
||||
- Ci
|
||||
|
||||
- Ci
|
||||
|
||||
|
||||
<!-- generated by git-cliff -->
|
||||
|
|
89
cliff.toml
Normal file
89
cliff.toml
Normal file
|
@ -0,0 +1,89 @@
|
|||
# git-cliff ~ default configuration file
|
||||
# https://git-cliff.org/docs/configuration
|
||||
#
|
||||
# Lines starting with "#" are comments.
|
||||
# Configuration options are organized into tables and keys.
|
||||
# See documentation for more information on available options.
|
||||
|
||||
[changelog]
|
||||
# changelog header
|
||||
header = """
|
||||
# Changelog\n
|
||||
All notable changes to this project will be documented in this file.\n
|
||||
"""
|
||||
# template for the changelog body
|
||||
# https://keats.github.io/tera/docs/#introduction
|
||||
body = """
|
||||
{% if version %}\
|
||||
## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }}
|
||||
{% else %}\
|
||||
## [unreleased]
|
||||
{% endif %}\
|
||||
{% for group, commits in commits | group_by(attribute="group") %}
|
||||
### {{ group | striptags | trim | upper_first }}
|
||||
{% for commit in commits %}
|
||||
- {% if commit.scope %}*({{ commit.scope }})* {% endif %}\
|
||||
{% if commit.breaking %}[**breaking**] {% endif %}\
|
||||
{{ commit.message | upper_first }}\
|
||||
{% endfor %}
|
||||
{% endfor %}\n
|
||||
"""
|
||||
# template for the changelog footer
|
||||
footer = """
|
||||
<!-- generated by git-cliff -->
|
||||
"""
|
||||
# remove the leading and trailing s
|
||||
trim = true
|
||||
# postprocessors
|
||||
postprocessors = [
|
||||
# { pattern = '<REPO>', replace = "https://github.com/orhun/git-cliff" }, # replace repository URL
|
||||
]
|
||||
|
||||
[git]
|
||||
# parse the commits based on https://www.conventionalcommits.org
|
||||
conventional_commits = true
|
||||
# filter out the commits that are not conventional
|
||||
filter_unconventional = false
|
||||
# process each line of a commit as an individual commit
|
||||
split_commits = false
|
||||
# regex for preprocessing the commit messages
|
||||
commit_preprocessors = [
|
||||
# Replace issue numbers
|
||||
#{ pattern = '\((\w+\s)?#([0-9]+)\)', replace = "([#${2}](<REPO>/issues/${2}))"},
|
||||
# Check spelling of the commit with https://github.com/crate-ci/typos
|
||||
# If the spelling is incorrect, it will be automatically fixed.
|
||||
#{ pattern = '.*', replace_command = 'typos --write-changes -' },
|
||||
]
|
||||
# regex for parsing and grouping commits
|
||||
commit_parsers = [
|
||||
{ message = "^feat", group = "<!-- 0 -->🚀 Features" },
|
||||
{ message = "^fix", group = "<!-- 1 -->🐛 Bug Fixes" },
|
||||
{ message = "^doc", group = "<!-- 3 -->📚 Documentation" },
|
||||
{ message = "^perf", group = "<!-- 4 -->⚡ Performance" },
|
||||
{ message = "^refactor", group = "<!-- 2 -->🚜 Refactor" },
|
||||
{ message = "^style", group = "<!-- 5 -->🎨 Styling" },
|
||||
{ message = "^test", group = "<!-- 6 -->🧪 Testing" },
|
||||
{ message = "^chore\\(release\\): prepare for", skip = true },
|
||||
{ message = "^chore\\(deps.*\\)", skip = true },
|
||||
{ message = "^chore\\(pr\\)", skip = true },
|
||||
{ message = "^chore\\(pull\\)", skip = true },
|
||||
{ message = "^chore|^ci", group = "<!-- 7 -->⚙️ Miscellaneous Tasks" },
|
||||
{ body = ".*security", group = "<!-- 8 -->🛡️ Security" },
|
||||
{ message = "^revert", group = "<!-- 9 -->◀️ Revert" },
|
||||
]
|
||||
# protect breaking changes from being skipped due to matching a skipping commit_parser
|
||||
protect_breaking_commits = false
|
||||
# filter out the commits that are not matched by commit parsers
|
||||
filter_commits = false
|
||||
# regex for matching git tags
|
||||
# tag_pattern = "v[0-9].*"
|
||||
# regex for skipping tags
|
||||
# skip_tags = ""
|
||||
# regex for ignoring tags
|
||||
# ignore_tags = ""
|
||||
# sort the tags topologically
|
||||
topo_order = false
|
||||
# sort the commits inside sections by oldest/newest order
|
||||
sort_commits = "oldest"
|
||||
# limit the number of commits included in the changelog.
|
||||
# limit_commits = 42
|
|
@ -11,18 +11,19 @@ mod common;
|
|||
#[test_case(include_str!("programs/refs.ed"), "refs", false, 2, &[] ; "refs")]
|
||||
#[test_case(include_str!("programs/struct.ed"), "struct", false, 5, &[] ; "r#struct")]
|
||||
#[test_case(include_str!("programs/casts.ed"), "casts", false, 2, &[] ; "casts")]
|
||||
#[test_case(TEST_ADD, "TEST_ADD", false, 2, &[] ; "TEST_ADD")]
|
||||
#[test_case(TEST_SUB, "TEST_SUB", false, 1, &[] ; "TEST_SUB")]
|
||||
#[test_case(TEST_MUL, "TEST_MUL", false, 4, &[] ; "TEST_MUL")]
|
||||
#[test_case(TEST_DIV, "TEST_DIV", false, 2, &[] ; "TEST_DIV")]
|
||||
#[test_case(TEST_REM, "TEST_REM", false, 0, &[] ; "TEST_REM")]
|
||||
#[test_case(TEST_IF_BOTH, "TEST_IF_BOTH", false, 1, &[] ; "TEST_IF_BOTH")]
|
||||
#[test_case(TEST_IF_BOTH, "TEST_IF_BOTH", false, 2, &["a"] ; "TEST_IF_BOTH args")]
|
||||
#[test_case(TEST_IF_NO_ELSE, "TEST_IF_NO_ELSE", false, 1, &[] ; "TEST_IF_NO_ELSE")]
|
||||
#[test_case(TEST_IF_NO_ELSE, "TEST_IF_NO_ELSE", false, 2, &["a"] ; "TEST_IF_NO_ELSE args")]
|
||||
#[test_case(TEST_ADD, "test_add", false, 2, &[] ; "test_add")]
|
||||
#[test_case(TEST_SUB, "test_sub", false, 1, &[] ; "test_sub")]
|
||||
#[test_case(TEST_MUL, "test_mul", false, 4, &[] ; "TEST_MUL")]
|
||||
#[test_case(TEST_DIV, "test_div", false, 2, &[] ; "TEST_DIV")]
|
||||
#[test_case(TEST_REM, "test_rem", false, 0, &[] ; "TEST_REM")]
|
||||
#[test_case(TEST_IF_BOTH, "test_if_both", false, 1, &[] ; "test_if_both")]
|
||||
#[test_case(TEST_IF_BOTH, "test_if_both", false, 2, &["a"] ; "test_if_both_args")]
|
||||
#[test_case(TEST_IF_NO_ELSE, "test_if_no_else", false, 1, &[] ; "test_if_no_else")]
|
||||
#[test_case(TEST_IF_NO_ELSE, "test_if_no_else", false, 2, &["a"] ; "test_if_no_else_args")]
|
||||
fn example_tests(source: &str, name: &str, is_library: bool, status_code: i32, args: &[&str]) {
|
||||
let program = compile_program(source, name, is_library).unwrap();
|
||||
|
||||
dbg!(&program);
|
||||
assert!(program.binary_file.exists(), "program not compiled");
|
||||
let mut result = run_program(&program.binary_file, args).unwrap();
|
||||
let status = result.wait().unwrap();
|
||||
|
@ -35,47 +36,47 @@ fn example_tests(source: &str, name: &str, is_library: bool, status_code: i32, a
|
|||
}
|
||||
|
||||
const TEST_ADD: &str = r#"
|
||||
mod Main {
|
||||
|
||||
pub fn main() -> i32 {
|
||||
let b: i32 = 1 + 1;
|
||||
return b;
|
||||
}
|
||||
}
|
||||
|
||||
"#;
|
||||
const TEST_SUB: &str = r#"
|
||||
mod Main {
|
||||
|
||||
pub fn main() -> i32 {
|
||||
let b: i32 = 2 - 1;
|
||||
return b;
|
||||
}
|
||||
}
|
||||
|
||||
"#;
|
||||
const TEST_MUL: &str = r#"
|
||||
mod Main {
|
||||
|
||||
pub fn main() -> i32 {
|
||||
let b: i32 = 2 * 2;
|
||||
return b;
|
||||
}
|
||||
}
|
||||
|
||||
"#;
|
||||
const TEST_DIV: &str = r#"
|
||||
mod Main {
|
||||
|
||||
pub fn main() -> i32 {
|
||||
let b: i32 = 4 / 2;
|
||||
return b;
|
||||
}
|
||||
}
|
||||
|
||||
"#;
|
||||
const TEST_REM: &str = r#"
|
||||
mod Main {
|
||||
|
||||
pub fn main() -> i32 {
|
||||
let b: i32 = 4 % 2;
|
||||
return b;
|
||||
}
|
||||
}
|
||||
|
||||
"#;
|
||||
const TEST_IF_BOTH: &str = r#"
|
||||
mod Main {
|
||||
|
||||
pub fn main(argc: i32) -> i32 {
|
||||
if argc == 1 {
|
||||
return 1;
|
||||
|
@ -83,15 +84,15 @@ mod Main {
|
|||
return 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
"#;
|
||||
const TEST_IF_NO_ELSE: &str = r#"
|
||||
mod Main {
|
||||
|
||||
pub fn main(argc: i32) -> i32 {
|
||||
if argc == 1 {
|
||||
return 1;
|
||||
}
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
|
||||
"#;
|
||||
|
|
|
@ -1,19 +1,18 @@
|
|||
mod Main {
|
||||
fn add(a: i32, b: i32) -> i32 {
|
||||
return a + b;
|
||||
}
|
||||
|
||||
fn check(a: i32) -> i32 {
|
||||
if a == 2 {
|
||||
return a;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
fn add(a: i32, b: i32) -> i32 {
|
||||
return a + b;
|
||||
}
|
||||
|
||||
pub fn main() -> i32 {
|
||||
let x: i32 = 2 + 3;
|
||||
let y: i32 = add(x, 4);
|
||||
return y;
|
||||
fn check(a: i32) -> i32 {
|
||||
if a == 2 {
|
||||
return a;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
pub fn main() -> i32 {
|
||||
let x: i32 = 2 + 3;
|
||||
let y: i32 = add(x, 4);
|
||||
return y;
|
||||
}
|
||||
|
|
|
@ -1,8 +1,5 @@
|
|||
mod Main {
|
||||
|
||||
pub fn main(argc: i32, argv: *const *const u8) -> i64 {
|
||||
let a: i32 = 2;
|
||||
let b: i64 = a as i64;
|
||||
return b;
|
||||
}
|
||||
pub fn main(argc: i32, argv: *const *const u8) -> i64 {
|
||||
let a: i32 = 2;
|
||||
let b: i64 = a as i64;
|
||||
return b;
|
||||
}
|
||||
|
|
|
@ -1,14 +1,13 @@
|
|||
mod Main {
|
||||
pub fn main() -> i32 {
|
||||
let b: i32 = factorial(4);
|
||||
return b;
|
||||
}
|
||||
|
||||
fn factorial(n: i32) -> i32 {
|
||||
if n == 1 {
|
||||
return n;
|
||||
} else {
|
||||
return n * factorial(n - 1);
|
||||
}
|
||||
pub fn main() -> i32 {
|
||||
let b: i32 = factorial(4);
|
||||
return b;
|
||||
}
|
||||
|
||||
fn factorial(n: i32) -> i32 {
|
||||
if n == 1 {
|
||||
return n;
|
||||
} else {
|
||||
return n * factorial(n - 1);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,13 +1,12 @@
|
|||
mod Main {
|
||||
pub fn main() -> i64 {
|
||||
let mut a: i64 = 0;
|
||||
|
||||
hello(&mut a);
|
||||
pub fn main() -> i64 {
|
||||
let mut a: i64 = 0;
|
||||
|
||||
return a;
|
||||
}
|
||||
hello(&mut a);
|
||||
|
||||
pub fn hello(a: &mut i32) {
|
||||
*a = 2;
|
||||
}
|
||||
return a;
|
||||
}
|
||||
|
||||
pub fn hello(a: &mut i32) {
|
||||
*a = 2;
|
||||
}
|
||||
|
|
|
@ -1,11 +1,9 @@
|
|||
mod Main {
|
||||
pub fn main(argc: i64) -> i64 {
|
||||
let mut a: i64 = 0;
|
||||
pub fn main(argc: i64) -> i64 {
|
||||
let mut a: i64 = 0;
|
||||
|
||||
if argc > 2 {
|
||||
a = 1;
|
||||
}
|
||||
|
||||
return a;
|
||||
if argc > 2 {
|
||||
a = 1;
|
||||
}
|
||||
|
||||
return a;
|
||||
}
|
||||
|
|
|
@ -1,20 +1,18 @@
|
|||
mod Main {
|
||||
|
||||
struct Hello {
|
||||
a: i32,
|
||||
b: i64,
|
||||
}
|
||||
|
||||
pub fn main() -> i64 {
|
||||
let x: Hello = Hello {
|
||||
a: 2,
|
||||
b: 3,
|
||||
};
|
||||
hello(&mut x);
|
||||
return x.b;
|
||||
}
|
||||
|
||||
pub fn hello(a: &mut Hello) {
|
||||
a.b = 5;
|
||||
}
|
||||
struct Hello {
|
||||
a: i32,
|
||||
b: i64,
|
||||
}
|
||||
|
||||
pub fn main() -> i64 {
|
||||
let x: Hello = Hello {
|
||||
a: 2,
|
||||
b: 3,
|
||||
};
|
||||
hello(&mut x);
|
||||
return x.b;
|
||||
}
|
||||
|
||||
pub fn hello(a: &mut Hello) {
|
||||
a.b = 5;
|
||||
}
|
||||
|
|
|
@ -1,11 +1,9 @@
|
|||
mod Main {
|
||||
pub fn main(argc: i64) -> i64 {
|
||||
let mut a: i64 = 0;
|
||||
pub fn main(argc: i64) -> i64 {
|
||||
let mut a: i64 = 0;
|
||||
|
||||
while a < 10 {
|
||||
a = a + 1;
|
||||
}
|
||||
|
||||
return a;
|
||||
while a < 10 {
|
||||
a = a + 1;
|
||||
}
|
||||
|
||||
return a;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue