Skip to content

Commit d5581db

Browse files
authored
governance: Remove dependency on ProcessInstructionWithContext (solana-labs#2589)
1 parent 7764a9d commit d5581db

File tree

3 files changed

+30
-56
lines changed
  • governance

3 files changed

+30
-56
lines changed

governance/chat/program/tests/program_test/mod.rs

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use std::str::FromStr;
22

33
use solana_program::{program_error::ProgramError, pubkey::Pubkey};
4-
use solana_program_test::processor;
4+
use solana_program_test::{processor, ProgramTest};
55

66
use solana_sdk::{signature::Keypair, signer::Signer};
77
use spl_governance::{
@@ -21,7 +21,7 @@ use spl_governance_chat::{
2121
processor::process_instruction,
2222
state::{ChatMessage, GovernanceChatAccountType, MessageBody},
2323
};
24-
use spl_governance_test_sdk::{ProgramTestBench, TestBenchProgram};
24+
use spl_governance_test_sdk::ProgramTestBench;
2525

2626
use crate::program_test::cookies::{ChatMessageCookie, ProposalCookie};
2727

@@ -37,23 +37,22 @@ pub struct GovernanceChatProgramTest {
3737

3838
impl GovernanceChatProgramTest {
3939
pub async fn start_new() -> Self {
40+
let mut program_test = ProgramTest::default();
4041
let program_id = Pubkey::from_str("GovernanceChat11111111111111111111111111111").unwrap();
41-
42-
let chat_program = TestBenchProgram {
43-
program_name: "spl_governance_chat",
44-
program_id: program_id,
45-
process_instruction: processor!(process_instruction),
46-
};
42+
program_test.add_program(
43+
"spl_governance_chat",
44+
program_id,
45+
processor!(process_instruction),
46+
);
4747

4848
let governance_program_id =
4949
Pubkey::from_str("Governance111111111111111111111111111111111").unwrap();
50-
let governance_program = TestBenchProgram {
51-
program_name: "spl_governance",
52-
program_id: governance_program_id,
53-
process_instruction: processor!(spl_governance::processor::process_instruction),
54-
};
55-
56-
let bench = ProgramTestBench::start_new(&[chat_program, governance_program]).await;
50+
program_test.add_program(
51+
"spl_governance",
52+
governance_program_id,
53+
processor!(spl_governance::processor::process_instruction),
54+
);
55+
let bench = ProgramTestBench::start_new(program_test).await;
5756

5857
Self {
5958
bench,

governance/program/tests/program_test/mod.rs

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ use crate::program_test::cookies::{
6161

6262
use spl_governance_test_sdk::{
6363
tools::{clone_keypair, NopOverride},
64-
ProgramTestBench, TestBenchProgram,
64+
ProgramTestBench,
6565
};
6666

6767
use self::{
@@ -105,35 +105,29 @@ impl GovernanceProgramTest {
105105

106106
#[allow(dead_code)]
107107
async fn start_impl(use_voter_weight_addin: bool) -> Self {
108-
let mut programs = vec![];
108+
let mut program_test = ProgramTest::default();
109109

110110
let program_id = Pubkey::from_str("Governance111111111111111111111111111111111").unwrap();
111-
112-
let program = TestBenchProgram {
113-
program_name: "spl_governance",
111+
program_test.add_program(
112+
"spl_governance",
114113
program_id,
115-
process_instruction: processor!(process_instruction),
116-
};
117-
118-
programs.push(program);
114+
processor!(process_instruction),
115+
);
119116

120117
let voter_weight_addin_id = if use_voter_weight_addin {
121118
let voter_weight_addin_id =
122119
Pubkey::from_str("VoterWeight11111111111111111111111111111111").unwrap();
123-
124-
let vote_weight_addin = TestBenchProgram {
125-
program_name: "spl_governance_voter_weight_addin",
126-
program_id: voter_weight_addin_id,
127-
process_instruction: None,
128-
};
129-
130-
programs.push(vote_weight_addin);
120+
program_test.add_program(
121+
"spl_governance_voter_weight_addin",
122+
voter_weight_addin_id,
123+
None,
124+
);
131125
Some(voter_weight_addin_id)
132126
} else {
133127
None
134128
};
135129

136-
let bench = ProgramTestBench::start_new(&programs).await;
130+
let bench = ProgramTestBench::start_new(program_test).await;
137131

138132
Self {
139133
bench,

governance/test-sdk/src/lib.rs

Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,7 @@ use solana_program::{
88
system_instruction, sysvar,
99
};
1010
use solana_program_test::{ProgramTest, ProgramTestContext};
11-
use solana_sdk::{
12-
account::Account, process_instruction::ProcessInstructionWithContext, signature::Keypair,
13-
signer::Signer, transaction::Transaction,
14-
};
11+
use solana_sdk::{account::Account, signature::Keypair, signer::Signer, transaction::Transaction};
1512

1613
use bincode::deserialize;
1714

@@ -22,14 +19,6 @@ use crate::tools::map_transaction_error;
2219
pub mod cookies;
2320
pub mod tools;
2421

25-
/// Specification of a program which is loaded into the test bench
26-
#[derive(Clone)]
27-
pub struct TestBenchProgram<'a> {
28-
pub program_name: &'a str,
29-
pub program_id: Pubkey,
30-
pub process_instruction: Option<ProcessInstructionWithContext>,
31-
}
32-
3322
/// Program's test bench which captures test context, rent and payer and common utility functions
3423
pub struct ProgramTestBench {
3524
pub context: ProgramTestContext,
@@ -39,17 +28,9 @@ pub struct ProgramTestBench {
3928
}
4029

4130
impl ProgramTestBench {
42-
pub async fn start_new(programs: &[TestBenchProgram<'_>]) -> Self {
43-
let mut program_test = ProgramTest::default();
44-
45-
for program in programs {
46-
program_test.add_program(
47-
program.program_name,
48-
program.program_id,
49-
program.process_instruction,
50-
)
51-
}
52-
31+
/// Create new bench given a ProgramTest instance populated with all of the
32+
/// desired programs.
33+
pub async fn start_new(program_test: ProgramTest) -> Self {
5334
let mut context = program_test.start_with_context().await;
5435
let rent = context.banks_client.get_rent().await.unwrap();
5536

0 commit comments

Comments
 (0)