Skip to content

Commit 4d838d5

Browse files
authored
Add hello-solana example source files to SVM folder (#361)
1 parent dff99d0 commit 4d838d5

File tree

6 files changed

+43
-27
lines changed

6 files changed

+43
-27
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ members = [
121121
"zk-token-sdk",
122122
]
123123

124-
exclude = ["programs/sbf"]
124+
exclude = ["programs/sbf", "svm/tests/example-programs"]
125125

126126
# This prevents a Travis CI error when building for Windows.
127127
resolver = "2"

svm/src/transaction_processor.rs

Lines changed: 13 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1195,19 +1195,26 @@ mod tests {
11951195
}
11961196
}
11971197

1198-
#[test]
1199-
fn test_load_program_from_bytes() {
1198+
fn load_test_program() -> Vec<u8> {
12001199
let mut dir = env::current_dir().unwrap();
12011200
dir.push("tests");
1201+
dir.push("example-programs");
1202+
dir.push("hello-solana");
12021203
dir.push("hello_solana_program.so");
12031204
let mut file = File::open(dir.clone()).expect("file not found");
12041205
let metadata = fs::metadata(dir).expect("Unable to read metadata");
12051206
let mut buffer = vec![0; metadata.len() as usize];
12061207
file.read_exact(&mut buffer).expect("Buffer overflow");
1208+
buffer
1209+
}
1210+
1211+
#[test]
1212+
fn test_load_program_from_bytes() {
1213+
let buffer = load_test_program();
12071214

12081215
let mut metrics = LoadProgramMetrics::default();
12091216
let loader = bpf_loader_upgradeable::id();
1210-
let size = metadata.len() as usize;
1217+
let size = buffer.len();
12111218
let slot = 2;
12121219
let environment = ProgramRuntimeEnvironment::new(BuiltinProgram::new_mock());
12131220

@@ -1303,13 +1310,7 @@ mod tests {
13031310
);
13041311
assert_eq!(result, Arc::new(loaded_program));
13051312

1306-
let mut dir = env::current_dir().unwrap();
1307-
dir.push("tests");
1308-
dir.push("hello_solana_program.so");
1309-
let mut file = File::open(dir.clone()).expect("file not found");
1310-
let metadata = fs::metadata(dir).expect("Unable to read metadata");
1311-
let mut buffer = vec![0; metadata.len() as usize];
1312-
file.read_exact(&mut buffer).expect("buffer overflow");
1313+
let buffer = load_test_program();
13131314
account_data.set_data(buffer);
13141315

13151316
mock_bank
@@ -1376,13 +1377,7 @@ mod tests {
13761377
);
13771378
assert_eq!(result, Arc::new(loaded_program));
13781379

1379-
let mut dir = env::current_dir().unwrap();
1380-
dir.push("tests");
1381-
dir.push("hello_solana_program.so");
1382-
let mut file = File::open(dir.clone()).expect("file not found");
1383-
let metadata = fs::metadata(dir).expect("Unable to read metadata");
1384-
let mut buffer = vec![0; metadata.len() as usize];
1385-
file.read_exact(&mut buffer).expect("buffer overflow");
1380+
let mut buffer = load_test_program();
13861381
let mut header = bincode::serialize(&state).unwrap();
13871382
let mut complement = vec![
13881383
0;
@@ -1461,13 +1456,7 @@ mod tests {
14611456
vec![0; std::cmp::max(0, LoaderV4State::program_data_offset() - header.len())];
14621457
header.append(&mut complement);
14631458

1464-
let mut dir = env::current_dir().unwrap();
1465-
dir.push("tests");
1466-
dir.push("hello_solana_program.so");
1467-
let mut file = File::open(dir.clone()).expect("file not found");
1468-
let metadata = fs::metadata(dir).expect("Unable to read metadata");
1469-
let mut buffer = vec![0; metadata.len() as usize];
1470-
file.read_exact(&mut buffer).expect("buffer overflow");
1459+
let mut buffer = load_test_program();
14711460
header.append(&mut buffer);
14721461

14731462
account_data.set_data(header);
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
[package]
2+
name = "hello-solana-program"
3+
version = "2.0.0"
4+
edition = "2021"
5+
6+
[dependencies]
7+
solana-program = { path = "../../../../sdk/program", version = "=2.0.0" }
8+
9+
[lib]
10+
crate-type = ["cdylib", "rlib"]
11+
12+
[workspace]
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
use solana_program::{
2+
account_info::AccountInfo, entrypoint, entrypoint::ProgramResult, msg, pubkey::Pubkey,
3+
};
4+
5+
entrypoint!(process_instruction);
6+
7+
fn process_instruction(
8+
_program_id: &Pubkey,
9+
_accounts: &[AccountInfo],
10+
_instruction_data: &[u8],
11+
) -> ProgramResult {
12+
msg!("Hello, Solana!");
13+
14+
Ok(())
15+
}

svm/tests/integration_test.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -188,8 +188,8 @@ fn prepare_transactions(
188188
// Loading the program file
189189
let mut dir = env::current_dir().unwrap();
190190
dir.push("tests");
191-
// File compiled from
192-
// https://github.com/solana-developers/program-examples/blob/feb82f254a4633ce2107d06060f2d0558dc987f5/basics/hello-solana/native/program/src/lib.rs
191+
dir.push("example-programs");
192+
dir.push("hello-solana");
193193
dir.push("hello_solana_program.so");
194194
let mut file = File::open(dir.clone()).expect("file not found");
195195
let metadata = fs::metadata(dir).expect("Unable to read metadata");

0 commit comments

Comments
 (0)