mirror of
https://github.com/edg-l/edlang.git
synced 2024-11-22 16:08: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
|
uses: orhun/git-cliff-action@v3
|
||||||
id: git-cliff
|
id: git-cliff
|
||||||
with:
|
with:
|
||||||
args: -vv --latest --strip header
|
args: -vv --current --strip header
|
||||||
env:
|
env:
|
||||||
OUTPUT: CHANGES.md
|
OUTPUT: CHANGES.md
|
||||||
- name: Release
|
- name: Release
|
||||||
|
|
52
CHANGELOG.md
52
CHANGELOG.md
|
@ -2,12 +2,21 @@
|
||||||
|
|
||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
## [unreleased]
|
## [0.0.1-alpha.15] - 2024-03-13
|
||||||
|
|
||||||
### 🚀 Features
|
### 🚀 Features
|
||||||
|
|
||||||
- Module file declarations, fixes
|
- Module file declarations, fixes
|
||||||
|
|
||||||
|
### 🐛 Bug Fixes
|
||||||
|
|
||||||
|
- Fix
|
||||||
|
|
||||||
|
- Fix multi file function resolution
|
||||||
|
|
||||||
|
- Fix scope
|
||||||
|
|
||||||
|
|
||||||
## [0.0.1-alpha.14] - 2024-03-11
|
## [0.0.1-alpha.14] - 2024-03-11
|
||||||
|
|
||||||
### 🐛 Bug Fixes
|
### 🐛 Bug Fixes
|
||||||
|
@ -28,6 +37,8 @@ All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
- Fix span in lalrpop
|
- Fix span in lalrpop
|
||||||
- Fix on type qualifier lowering
|
- Fix on type qualifier lowering
|
||||||
|
- Fix ci2
|
||||||
|
|
||||||
|
|
||||||
### ⚙️ Miscellaneous Tasks
|
### ⚙️ Miscellaneous Tasks
|
||||||
|
|
||||||
|
@ -97,6 +108,11 @@ All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
- Struct support
|
- Struct support
|
||||||
|
|
||||||
|
### 🧪 Testing
|
||||||
|
|
||||||
|
- Test
|
||||||
|
|
||||||
|
|
||||||
## [0.0.1-alpha.7] - 2024-02-17
|
## [0.0.1-alpha.7] - 2024-02-17
|
||||||
|
|
||||||
### 🚀 Features
|
### 🚀 Features
|
||||||
|
@ -114,6 +130,8 @@ All notable changes to this project will be documented in this file.
|
||||||
### 🐛 Bug Fixes
|
### 🐛 Bug Fixes
|
||||||
|
|
||||||
- Fix a miscompilation
|
- Fix a miscompilation
|
||||||
|
- Fixes
|
||||||
|
|
||||||
|
|
||||||
## [0.0.1-alpha.5] - 2024-02-14
|
## [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
|
- *(linker)* Fix linker on distros like ubuntu
|
||||||
- *(ci)* Ci improvements
|
- *(ci)* Ci improvements
|
||||||
|
- Fix ci
|
||||||
|
|
||||||
|
|
||||||
## [0.0.1-alpha.4] - 2024-02-14
|
## [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
|
- Compile ifs
|
||||||
|
|
||||||
|
### 🐛 Bug Fixes
|
||||||
|
|
||||||
|
- Fix
|
||||||
|
|
||||||
|
|
||||||
### 🎨 Styling
|
### 🎨 Styling
|
||||||
|
|
||||||
- Format
|
- Format
|
||||||
|
@ -166,4 +191,29 @@ All notable changes to this project will be documented in this file.
|
||||||
- Update deps
|
- Update deps
|
||||||
- Update version
|
- 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 -->
|
<!-- 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/refs.ed"), "refs", false, 2, &[] ; "refs")]
|
||||||
#[test_case(include_str!("programs/struct.ed"), "struct", false, 5, &[] ; "r#struct")]
|
#[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(include_str!("programs/casts.ed"), "casts", false, 2, &[] ; "casts")]
|
||||||
#[test_case(TEST_ADD, "TEST_ADD", false, 2, &[] ; "TEST_ADD")]
|
#[test_case(TEST_ADD, "test_add", false, 2, &[] ; "test_add")]
|
||||||
#[test_case(TEST_SUB, "TEST_SUB", false, 1, &[] ; "TEST_SUB")]
|
#[test_case(TEST_SUB, "test_sub", false, 1, &[] ; "test_sub")]
|
||||||
#[test_case(TEST_MUL, "TEST_MUL", false, 4, &[] ; "TEST_MUL")]
|
#[test_case(TEST_MUL, "test_mul", false, 4, &[] ; "TEST_MUL")]
|
||||||
#[test_case(TEST_DIV, "TEST_DIV", false, 2, &[] ; "TEST_DIV")]
|
#[test_case(TEST_DIV, "test_div", false, 2, &[] ; "TEST_DIV")]
|
||||||
#[test_case(TEST_REM, "TEST_REM", false, 0, &[] ; "TEST_REM")]
|
#[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, 1, &[] ; "test_if_both")]
|
||||||
#[test_case(TEST_IF_BOTH, "TEST_IF_BOTH", false, 2, &["a"] ; "TEST_IF_BOTH args")]
|
#[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, 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_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]) {
|
fn example_tests(source: &str, name: &str, is_library: bool, status_code: i32, args: &[&str]) {
|
||||||
let program = compile_program(source, name, is_library).unwrap();
|
let program = compile_program(source, name, is_library).unwrap();
|
||||||
|
|
||||||
|
dbg!(&program);
|
||||||
assert!(program.binary_file.exists(), "program not compiled");
|
assert!(program.binary_file.exists(), "program not compiled");
|
||||||
let mut result = run_program(&program.binary_file, args).unwrap();
|
let mut result = run_program(&program.binary_file, args).unwrap();
|
||||||
let status = result.wait().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#"
|
const TEST_ADD: &str = r#"
|
||||||
mod Main {
|
|
||||||
pub fn main() -> i32 {
|
pub fn main() -> i32 {
|
||||||
let b: i32 = 1 + 1;
|
let b: i32 = 1 + 1;
|
||||||
return b;
|
return b;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
"#;
|
"#;
|
||||||
const TEST_SUB: &str = r#"
|
const TEST_SUB: &str = r#"
|
||||||
mod Main {
|
|
||||||
pub fn main() -> i32 {
|
pub fn main() -> i32 {
|
||||||
let b: i32 = 2 - 1;
|
let b: i32 = 2 - 1;
|
||||||
return b;
|
return b;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
"#;
|
"#;
|
||||||
const TEST_MUL: &str = r#"
|
const TEST_MUL: &str = r#"
|
||||||
mod Main {
|
|
||||||
pub fn main() -> i32 {
|
pub fn main() -> i32 {
|
||||||
let b: i32 = 2 * 2;
|
let b: i32 = 2 * 2;
|
||||||
return b;
|
return b;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
"#;
|
"#;
|
||||||
const TEST_DIV: &str = r#"
|
const TEST_DIV: &str = r#"
|
||||||
mod Main {
|
|
||||||
pub fn main() -> i32 {
|
pub fn main() -> i32 {
|
||||||
let b: i32 = 4 / 2;
|
let b: i32 = 4 / 2;
|
||||||
return b;
|
return b;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
"#;
|
"#;
|
||||||
const TEST_REM: &str = r#"
|
const TEST_REM: &str = r#"
|
||||||
mod Main {
|
|
||||||
pub fn main() -> i32 {
|
pub fn main() -> i32 {
|
||||||
let b: i32 = 4 % 2;
|
let b: i32 = 4 % 2;
|
||||||
return b;
|
return b;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
"#;
|
"#;
|
||||||
const TEST_IF_BOTH: &str = r#"
|
const TEST_IF_BOTH: &str = r#"
|
||||||
mod Main {
|
|
||||||
pub fn main(argc: i32) -> i32 {
|
pub fn main(argc: i32) -> i32 {
|
||||||
if argc == 1 {
|
if argc == 1 {
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -83,15 +84,15 @@ mod Main {
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
"#;
|
"#;
|
||||||
const TEST_IF_NO_ELSE: &str = r#"
|
const TEST_IF_NO_ELSE: &str = r#"
|
||||||
mod Main {
|
|
||||||
pub fn main(argc: i32) -> i32 {
|
pub fn main(argc: i32) -> i32 {
|
||||||
if argc == 1 {
|
if argc == 1 {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
"#;
|
"#;
|
||||||
|
|
|
@ -1,19 +1,18 @@
|
||||||
mod Main {
|
|
||||||
fn add(a: i32, b: i32) -> i32 {
|
|
||||||
return a + b;
|
|
||||||
}
|
|
||||||
|
|
||||||
fn check(a: i32) -> i32 {
|
fn add(a: i32, b: i32) -> i32 {
|
||||||
|
return a + b;
|
||||||
|
}
|
||||||
|
|
||||||
|
fn check(a: i32) -> i32 {
|
||||||
if a == 2 {
|
if a == 2 {
|
||||||
return a;
|
return a;
|
||||||
} else {
|
} else {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn main() -> i32 {
|
pub fn main() -> i32 {
|
||||||
let x: i32 = 2 + 3;
|
let x: i32 = 2 + 3;
|
||||||
let y: i32 = add(x, 4);
|
let y: i32 = add(x, 4);
|
||||||
return y;
|
return y;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,5 @@
|
||||||
mod Main {
|
pub fn main(argc: i32, argv: *const *const u8) -> i64 {
|
||||||
|
|
||||||
pub fn main(argc: i32, argv: *const *const u8) -> i64 {
|
|
||||||
let a: i32 = 2;
|
let a: i32 = 2;
|
||||||
let b: i64 = a as i64;
|
let b: i64 = a as i64;
|
||||||
return b;
|
return b;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,13 @@
|
||||||
mod Main {
|
|
||||||
pub fn main() -> i32 {
|
pub fn main() -> i32 {
|
||||||
let b: i32 = factorial(4);
|
let b: i32 = factorial(4);
|
||||||
return b;
|
return b;
|
||||||
}
|
}
|
||||||
|
|
||||||
fn factorial(n: i32) -> i32 {
|
fn factorial(n: i32) -> i32 {
|
||||||
if n == 1 {
|
if n == 1 {
|
||||||
return n;
|
return n;
|
||||||
} else {
|
} else {
|
||||||
return n * factorial(n - 1);
|
return n * factorial(n - 1);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,12 @@
|
||||||
mod Main {
|
|
||||||
pub fn main() -> i64 {
|
pub fn main() -> i64 {
|
||||||
let mut a: i64 = 0;
|
let mut a: i64 = 0;
|
||||||
|
|
||||||
hello(&mut a);
|
hello(&mut a);
|
||||||
|
|
||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn hello(a: &mut i32) {
|
pub fn hello(a: &mut i32) {
|
||||||
*a = 2;
|
*a = 2;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
mod Main {
|
pub fn main(argc: i64) -> i64 {
|
||||||
pub fn main(argc: i64) -> i64 {
|
|
||||||
let mut a: i64 = 0;
|
let mut a: i64 = 0;
|
||||||
|
|
||||||
if argc > 2 {
|
if argc > 2 {
|
||||||
|
@ -7,5 +6,4 @@ mod Main {
|
||||||
}
|
}
|
||||||
|
|
||||||
return a;
|
return a;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,20 +1,18 @@
|
||||||
mod Main {
|
|
||||||
|
|
||||||
struct Hello {
|
struct Hello {
|
||||||
a: i32,
|
a: i32,
|
||||||
b: i64,
|
b: i64,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn main() -> i64 {
|
pub fn main() -> i64 {
|
||||||
let x: Hello = Hello {
|
let x: Hello = Hello {
|
||||||
a: 2,
|
a: 2,
|
||||||
b: 3,
|
b: 3,
|
||||||
};
|
};
|
||||||
hello(&mut x);
|
hello(&mut x);
|
||||||
return x.b;
|
return x.b;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn hello(a: &mut Hello) {
|
pub fn hello(a: &mut Hello) {
|
||||||
a.b = 5;
|
a.b = 5;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
mod Main {
|
pub fn main(argc: i64) -> i64 {
|
||||||
pub fn main(argc: i64) -> i64 {
|
|
||||||
let mut a: i64 = 0;
|
let mut a: i64 = 0;
|
||||||
|
|
||||||
while a < 10 {
|
while a < 10 {
|
||||||
|
@ -7,5 +6,4 @@ mod Main {
|
||||||
}
|
}
|
||||||
|
|
||||||
return a;
|
return a;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue