fix: fix tests

This commit is contained in:
Edgar 2024-03-13 12:24:40 +01:00
parent 84c2274221
commit b4e89578c8
No known key found for this signature in database
GPG key ID: 70ADAE8F35904387
11 changed files with 229 additions and 101 deletions

View file

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

View file

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

View file

@ -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;
}
}
"#;

View file

@ -1,4 +1,4 @@
mod Main {
fn add(a: i32, b: i32) -> i32 {
return a + b;
}
@ -16,4 +16,3 @@ mod Main {
let y: i32 = add(x, 4);
return y;
}
}

View file

@ -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;
}
}

View file

@ -1,4 +1,4 @@
mod Main {
pub fn main() -> i32 {
let b: i32 = factorial(4);
return b;
@ -11,4 +11,3 @@ mod Main {
return n * factorial(n - 1);
}
}
}

View file

@ -1,4 +1,4 @@
mod Main {
pub fn main() -> i64 {
let mut a: i64 = 0;
@ -10,4 +10,3 @@ mod Main {
pub fn hello(a: &mut i32) {
*a = 2;
}
}

View file

@ -1,4 +1,3 @@
mod Main {
pub fn main(argc: i64) -> i64 {
let mut a: i64 = 0;
@ -8,4 +7,3 @@ mod Main {
return a;
}
}

View file

@ -1,4 +1,3 @@
mod Main {
struct Hello {
a: i32,
@ -17,4 +16,3 @@ mod Main {
pub fn hello(a: &mut Hello) {
a.b = 5;
}
}

View file

@ -1,4 +1,3 @@
mod Main {
pub fn main(argc: i64) -> i64 {
let mut a: i64 = 0;
@ -8,4 +7,3 @@ mod Main {
return a;
}
}