Skip to content

Commit 251b266

Browse files
committed
expand unit testing arm
1 parent 1aba885 commit 251b266

File tree

2 files changed

+44
-8
lines changed

2 files changed

+44
-8
lines changed

src/helpers/general.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,9 @@ use reqwest::Client;
55
use serde::de::DeserializeOwned;
66
use std::fs;
77

8-
// const WEB_SERVER_CODE_TEMPLATE_PATH: &str = "/Users/Anatolii Maltsev/Documents/Coding/Rust/Projects/RustAgent/web_template/src/web_server_code_template.rs";
98
const CODE_TEMPLATE_PATH: &str = r#"C:\Users\Anatolii Maltsev\Documents\Coding\Rust\Projects\RustAgent\web_template\src\web_server_code_template.rs"#;
10-
// const EXECUTE_MAIN_PATH: &str = "/Users/Anatolii Maltsev/Documents/Coding/Rust/Projects/RustAgent/web_template/src/main.rs";
119
const EXEC_MAIN_PATH: &str = r#"C:\Users\Anatolii Maltsev\Documents\Coding\Rust\Projects\RustAgent\web_template\src\main.rs"#;
10+
pub const WEB_SERVER_PROJECT_PATH: &str = r#"C:\Users\Anatolii Maltsev\Documents\Coding\Rust\Projects\RustAgent\web_template\"#;
1211
const API_SCHEMA_PATH: &str = "/Users/Anatolii Maltsev/Documents/Coding/Rust/Projects/RustAgent/auto_gpt_agent/schemas/api_schema.json>";
1312

1413
// Extend ai function to encourage specific output

src/models/agents/agent_backend.rs

+43-6
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use std::io::{stdout, Stdout};
12
use crate::ai_functions::ai_func_backend::{
23
print_backend_webserver_code, print_fixed_code, print_improved_webserver_code,
34
print_rest_api_endpoints,
@@ -8,14 +9,15 @@ use crate::helpers::general::{
89
};
910

1011
use crate::helpers::command_lines::{PrintCommand, confirm_safe_code};
11-
use crate::helpers::general::ai_task_request;
12+
use crate::helpers::general::{ai_task_request,WEB_SERVER_PROJECT_PATH};
1213
use crate::models::agent_basic::basic_agent::{AgentState, BasicAgent};
1314
use crate::models::agents::agent_traits::{FactSheet, RouteObject, SpecialFunctions};
1415

1516
use async_trait::async_trait;
1617
use reqwest::Client;
1718
use std::process::{Command, Stdio};
1819
use std::time::Duration;
20+
use syn::token::Comma;
1921
use tokio::time;
2022

2123
#[derive(Debug)]
@@ -160,17 +162,52 @@ impl SpecialFunctions for AgentBackendDeveloper {
160162
}
161163

162164
AgentState::UnitTesting => {
163-
// GUard
165+
// API SAFETY GUARD
164166
PrintCommand::UnitTest.print_agent_message(
165167
&self.attributes.position.as_str(),"Backend Code Unit Testing: Ensuring Safe Code");
166-
self.attributes.state = AgentState::Finished;
167168

168169
let user_confirmation = confirm_safe_code();
169-
match user_confirmation {
170-
false => panic!("Better go work on some AI alignment instead..."),
171-
true => {}
170+
171+
if !user_confirmation {
172+
panic!("Better go work on some AI alignment instead...");
172173
}
173174

175+
// Build and testing code
176+
PrintCommand::UnitTest.print_agent_message(
177+
&self.attributes.position.as_str(),"Backend Code Unit Testing: building web server...");
178+
179+
let build_backend_server: std::process::Output = Command::new("cargo")
180+
.arg("build")
181+
.current_dir(WEB_SERVER_PROJECT_PATH)
182+
.stdout(Stdio::piped())
183+
.stderr(Stdio::piped())
184+
.output()
185+
.expect("Failed to run backend application");
186+
187+
// determine errors
188+
if build_backend_server.status.success(){
189+
self.bug_count = 0;
190+
PrintCommand::UnitTest.print_agent_message(
191+
&self.attributes.position.as_str(),"Backend Code Unit Testing: Test server build successful...");
192+
} else {
193+
let error_arr:Vec<u8> = build_backend_server.stderr;
194+
let error_str = String::from_utf8(error_arr).unwrap();
195+
//update error count
196+
self.bug_count +=1;
197+
self.bug_errors = Some(error_str);
198+
199+
if self.bug_count >2 {
200+
PrintCommand::Issue.print_agent_message(
201+
&self.attributes.position.as_str(), "Backend Code Unit Testing: Too many bugs found in code ");
202+
panic!("ERROR: Too many bugs");
203+
}
204+
205+
// Pass back to work
206+
self.attributes.state = AgentState::Working;
207+
continue
208+
}
209+
210+
self.attributes.state = AgentState::Finished;
174211
}
175212

176213
_ => {}

0 commit comments

Comments
 (0)