Skip to content

Commit 3766b57

Browse files
committed
Fix gas tests
Closes #3078 commit-id:5e47ad12 # Conflicts: # crates/forge/tests/integration/gas.rs # Conflicts: # crates/forge/tests/integration/gas.rs
1 parent 83a2477 commit 3766b57

File tree

4 files changed

+223
-269
lines changed

4 files changed

+223
-269
lines changed

crates/forge/test_utils/src/running_tests.rs

Lines changed: 39 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,27 @@ use std::sync::Arc;
2020
use tempfile::tempdir;
2121
use tokio::runtime::Runtime;
2222

23-
#[must_use]
24-
pub fn run_test_case(
23+
fn run(
2524
test: &TestCase,
2625
tracked_resource: ForgeTrackedResource,
26+
use_release_profile: bool,
2727
) -> Vec<TestTargetSummary> {
28-
ScarbCommand::new_with_stdio()
29-
.current_dir(test.path().unwrap())
30-
.arg("build")
31-
.arg("--test")
32-
.run()
33-
.unwrap();
28+
if use_release_profile {
29+
ScarbCommand::new_with_stdio()
30+
.args(["--profile", "release"])
31+
.current_dir(test.path().unwrap())
32+
.arg("build")
33+
.arg("--test")
34+
.run()
35+
.unwrap();
36+
} else {
37+
ScarbCommand::new_with_stdio()
38+
.current_dir(test.path().unwrap())
39+
.arg("build")
40+
.arg("--test")
41+
.run()
42+
.unwrap();
43+
}
3444

3545
let metadata = ScarbCommand::metadata()
3646
.current_dir(test.path().unwrap())
@@ -44,8 +54,11 @@ pub fn run_test_case(
4454
.unwrap();
4555

4656
let rt = Runtime::new().expect("Could not instantiate Runtime");
47-
let raw_test_targets =
48-
load_test_artifacts(&test.path().unwrap().join("target/dev"), package).unwrap();
57+
let raw_test_targets = if use_release_profile {
58+
load_test_artifacts(&test.path().unwrap().join("target/release"), package).unwrap()
59+
} else {
60+
load_test_artifacts(&test.path().unwrap().join("target/dev"), package).unwrap()
61+
};
4962

5063
let ui = Arc::new(UI::default());
5164
rt.block_on(run_for_package(
@@ -89,3 +102,19 @@ pub fn run_test_case(
89102
.expect("Runner fail")
90103
.summaries()
91104
}
105+
106+
#[must_use]
107+
pub fn run_test_case_with_release_profile(
108+
test: &TestCase,
109+
tracked_resource: ForgeTrackedResource,
110+
) -> Vec<TestTargetSummary> {
111+
run(test, tracked_resource, true)
112+
}
113+
114+
#[must_use]
115+
pub fn run_test_case(
116+
test: &TestCase,
117+
tracked_resource: ForgeTrackedResource,
118+
) -> Vec<TestTargetSummary> {
119+
run(test, tracked_resource, false)
120+
}

crates/forge/tests/data/contracts/gas_checker.cairo

Lines changed: 65 additions & 140 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ trait IGasChecker<TContractState> {
1515
#[starknet::contract]
1616
mod GasChecker {
1717
use core::{ec, ec::{EcPoint, EcPointTrait}};
18+
use core::starknet::ContractAddress;
1819

1920
#[storage]
2021
struct Storage {
@@ -32,152 +33,76 @@ mod GasChecker {
3233
}
3334

3435
fn range_check(self: @ContractState) {
35-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
36-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
37-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
38-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
39-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
40-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
41-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
42-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
43-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
44-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
45-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
46-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
47-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
48-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
49-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
50-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
51-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
52-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
53-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
54-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
55-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
56-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
57-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
58-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
59-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
60-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
61-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
62-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
63-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
64-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
65-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
66-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
67-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
68-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
69-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
70-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
71-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
72-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
73-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
74-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
75-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
76-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
77-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
78-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
79-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
80-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
81-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
82-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
83-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
84-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
85-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
86-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
87-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
88-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
89-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
90-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
91-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
92-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
93-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
94-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
95-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
96-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
97-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
98-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
99-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
100-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
101-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
102-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
103-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
104-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
105-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
106-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
107-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
108-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
109-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
110-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
111-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
112-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
113-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
114-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
115-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
116-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
117-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
118-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
119-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
120-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
121-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
122-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
123-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
124-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
125-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
126-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
127-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
128-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
129-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
130-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
131-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
132-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
133-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
134-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
135-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
136-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
137-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
138-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
139-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
140-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
141-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
142-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
143-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
144-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
145-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
146-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
147-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
148-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
149-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
150-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
151-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
152-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
153-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
154-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
155-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
156-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
157-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
158-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
159-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
160-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
161-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
162-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
163-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
164-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
165-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
166-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
167-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
168-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
169-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
170-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
171-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
172-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
173-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
174-
assert((1_u8 + 1_u8) >= 1_u8, 'error message');
36+
// Felt into ContractAddress conversion uses RangeCheck as implicit argument
37+
let x: ContractAddress = 1234.try_into().unwrap();
38+
let x: ContractAddress = 1234.try_into().unwrap();
39+
let x: ContractAddress = 1234.try_into().unwrap();
40+
let x: ContractAddress = 1234.try_into().unwrap();
41+
let x: ContractAddress = 1234.try_into().unwrap();
42+
let x: ContractAddress = 1234.try_into().unwrap();
43+
let x: ContractAddress = 1234.try_into().unwrap();
44+
let x: ContractAddress = 1234.try_into().unwrap();
45+
let x: ContractAddress = 1234.try_into().unwrap();
46+
let x: ContractAddress = 1234.try_into().unwrap();
47+
let x: ContractAddress = 1234.try_into().unwrap();
48+
let x: ContractAddress = 1234.try_into().unwrap();
49+
let x: ContractAddress = 1234.try_into().unwrap();
50+
let x: ContractAddress = 1234.try_into().unwrap();
51+
let x: ContractAddress = 1234.try_into().unwrap();
52+
let x: ContractAddress = 1234.try_into().unwrap();
53+
let x: ContractAddress = 1234.try_into().unwrap();
54+
let x: ContractAddress = 1234.try_into().unwrap();
55+
let x: ContractAddress = 1234.try_into().unwrap();
56+
let x: ContractAddress = 1234.try_into().unwrap();
57+
let x: ContractAddress = 1234.try_into().unwrap();
58+
let x: ContractAddress = 1234.try_into().unwrap();
59+
let x: ContractAddress = 1234.try_into().unwrap();
60+
let x: ContractAddress = 1234.try_into().unwrap();
61+
let x: ContractAddress = 1234.try_into().unwrap();
62+
let x: ContractAddress = 1234.try_into().unwrap();
63+
let x: ContractAddress = 1234.try_into().unwrap();
64+
let x: ContractAddress = 1234.try_into().unwrap();
65+
let x: ContractAddress = 1234.try_into().unwrap();
66+
let x: ContractAddress = 1234.try_into().unwrap();
67+
let x: ContractAddress = 1234.try_into().unwrap();
68+
let x: ContractAddress = 1234.try_into().unwrap();
69+
let x: ContractAddress = 1234.try_into().unwrap();
70+
let x: ContractAddress = 1234.try_into().unwrap();
71+
let x: ContractAddress = 1234.try_into().unwrap();
72+
let x: ContractAddress = 1234.try_into().unwrap();
73+
let x: ContractAddress = 1234.try_into().unwrap();
74+
let x: ContractAddress = 1234.try_into().unwrap();
75+
let x: ContractAddress = 1234.try_into().unwrap();
76+
let x: ContractAddress = 1234.try_into().unwrap();
77+
let x: ContractAddress = 1234.try_into().unwrap();
78+
let x: ContractAddress = 1234.try_into().unwrap();
79+
let x: ContractAddress = 1234.try_into().unwrap();
80+
let x: ContractAddress = 1234.try_into().unwrap();
81+
let x: ContractAddress = 1234.try_into().unwrap();
82+
let x: ContractAddress = 1234.try_into().unwrap();
83+
let x: ContractAddress = 1234.try_into().unwrap();
84+
let x: ContractAddress = 1234.try_into().unwrap();
85+
let x: ContractAddress = 1234.try_into().unwrap();
86+
let x: ContractAddress = 1234.try_into().unwrap();
87+
let x: ContractAddress = 1234.try_into().unwrap();
88+
let x: ContractAddress = 1234.try_into().unwrap();
89+
let x: ContractAddress = 1234.try_into().unwrap();
90+
let x: ContractAddress = 1234.try_into().unwrap();
91+
let x: ContractAddress = 1234.try_into().unwrap();
92+
let x: ContractAddress = 1234.try_into().unwrap();
93+
let x: ContractAddress = 1234.try_into().unwrap();
94+
let x: ContractAddress = 1234.try_into().unwrap();
95+
let x: ContractAddress = 1234.try_into().unwrap();
96+
let x: ContractAddress = 1234.try_into().unwrap();
97+
let x: ContractAddress = 1234.try_into().unwrap();
98+
let x: ContractAddress = 1234.try_into().unwrap();
17599
}
176100

177101
fn bitwise(self: @ContractState, repetitions: u32) {
178102
let mut i: u32 = 0;
179103
while i < repetitions {
180104
1_u8 & 1_u8;
105+
2_u8 & 2_u8;
181106
i += 1;
182107
}
183108
}

0 commit comments

Comments
 (0)