Compare commits

..

5 Commits

Author SHA1 Message Date
Olivia Brooks
54e6350d42 Code cleanup. 2026-01-27 22:01:41 -05:00
Olivia Brooks
f3f79a12df Zed mucked something up with the merge. Fix it. 2026-01-27 21:32:18 -05:00
Olivia Brooks
649507bbcb Fix build; Correct target/ path in generated .gitignore 2026-01-27 21:30:45 -05:00
676b0b606b Merge pull request 'fix: raven test' (#2) from AdrianLong/raven:master into master
Reviewed-on: #2
2026-01-27 16:33:41 -05:00
82b45d9c66 Removed Fence denugging statements 2026-01-27 14:09:30 -05:00
3 changed files with 34 additions and 35 deletions

View File

@@ -0,0 +1,10 @@
public class MainTest {
public static void main(String[] args) {
testAdd();
}
public static void testAdd() {
assert Main.add(2, 2) == 4;
}
}

View File

@@ -17,11 +17,15 @@ pub struct JVMBuilder {
monitor: bool, monitor: bool,
ram_min: Option<ByteSize>, ram_min: Option<ByteSize>,
ram_max: Option<ByteSize>, ram_max: Option<ByteSize>,
class_path: PathBuf,
} }
impl JVMBuilder { impl JVMBuilder {
pub fn new() -> Self { pub fn new<P: AsRef<Path>>(class_path: P) -> Self {
Self::default() Self {
class_path: class_path.as_ref().to_path_buf(),
..Default::default()
}
} }
pub fn assertions(&mut self, assertions: bool) -> &mut Self { pub fn assertions(&mut self, assertions: bool) -> &mut Self {
@@ -46,7 +50,9 @@ impl JVMBuilder {
} }
pub fn build(&self) -> JVM { pub fn build(&self) -> JVM {
let mut flags = vec![]; let mut flags = vec![VMFlag::Classpath {
path: self.class_path.to_owned(),
}];
if self.assertions { if self.assertions {
flags.push(VMFlag::EnableAssert); flags.push(VMFlag::EnableAssert);
@@ -79,12 +85,6 @@ impl JVM {
) -> anyhow::Result<(Option<String>, Option<String>)> { ) -> anyhow::Result<(Option<String>, Option<String>)> {
let mut cmd = vec![JAVA_VM.to_string()]; let mut cmd = vec![JAVA_VM.to_string()];
println!("Fence 4");
// proper format
// java -Xms128m -Xmx512m -cp PROJECT_ROOT/src/text \test.Test
// current format
// java Xms128.0 MiB Xmx512.0 MiB /home/viffx/Coding/Rust/raven/src/Test1/src/test/
cmd.extend( cmd.extend(
self.flags self.flags
.clone() .clone()
@@ -92,21 +92,8 @@ impl JVM {
.flat_map(|f| Into::<Vec<String>>::into(f)), .flat_map(|f| Into::<Vec<String>>::into(f)),
); );
println!("Fence 5"); cmd.push(entry_point.as_ref().to_path_buf().display().to_string());
for part in &cmd {
println!("{}", part);
}
cmd.push("-cp".to_string());
cmd.push(entry_point.as_ref().display().to_string());
// Jave needs a class path and a file name to run.
cmd.push("Test".to_string());
println!("Fence 6");
println!("{:?}", cmd.as_slice());
println!("Fence 7");
let result = crate::io::run_process(cmd.as_slice()); let result = crate::io::run_process(cmd.as_slice());
if self.monitor if self.monitor
@@ -130,6 +117,7 @@ impl JVM {
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
pub enum VMFlag { pub enum VMFlag {
Classpath { path: PathBuf },
EnableAssert, EnableAssert,
HeapMax { size: ByteSize }, HeapMax { size: ByteSize },
HeapMin { size: ByteSize }, HeapMin { size: ByteSize },
@@ -138,7 +126,10 @@ pub enum VMFlag {
impl Into<Vec<String>> for VMFlag { impl Into<Vec<String>> for VMFlag {
fn into(self) -> Vec<String> { fn into(self) -> Vec<String> {
vec![self.to_string()] self.to_string()
.split_ascii_whitespace()
.map(|s| s.to_string())
.collect()
} }
} }
@@ -150,6 +141,7 @@ impl fmt::Display for VMFlag {
f, f,
"-{}", "-{}",
match self { match self {
Self::Classpath { path } => format!("classpath {}", path.display()),
Self::EnableAssert => String::from("ea"), Self::EnableAssert => String::from("ea"),
Self::HeapMax { size } => format!("Xmx{}", size.as_u64()), Self::HeapMax { size } => format!("Xmx{}", size.as_u64()),
Self::HeapMin { size } => format!("Xms{}", size.as_u64()), Self::HeapMin { size } => format!("Xms{}", size.as_u64()),
@@ -228,14 +220,14 @@ impl Compiler {
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
pub enum CompilerFlag { pub enum CompilerFlag {
Destination { path: PathBuf },
Classpath { path: PathBuf }, Classpath { path: PathBuf },
Destination { path: PathBuf },
} }
impl Into<Vec<String>> for CompilerFlag { impl Into<Vec<String>> for CompilerFlag {
fn into(self) -> Vec<String> { fn into(self) -> Vec<String> {
match self { match self {
Self::Classpath { path } => vec!["-cp".to_string(), path.display().to_string()], Self::Classpath { path } => vec!["-classpath".to_string(), path.display().to_string()],
Self::Destination { path } => vec!["-d".to_string(), path.display().to_string()], Self::Destination { path } => vec!["-d".to_string(), path.display().to_string()],
} }
} }

View File

@@ -140,14 +140,14 @@ fn init() -> anyhow::Result<()> {
f.write_all(include_bytes!("../assets/src/main/Main.java"))?; f.write_all(include_bytes!("../assets/src/main/Main.java"))?;
} }
// Make src/test/Test.java // Make src/test/MainTest.java
if let Result::Ok(mut f) = OpenOptions::new().write(true).create_new(is_empty).open( if let Result::Ok(mut f) = OpenOptions::new().write(true).create_new(is_empty).open(
DIR_TEST DIR_TEST
.clone() .clone()
.join("Test") .join("MainTest")
.with_extension(JAVA_EXT_SOURCE), .with_extension(JAVA_EXT_SOURCE),
) { ) {
f.write_all(include_bytes!("../assets/src/test/Test.java"))?; f.write_all(include_bytes!("../assets/src/test/MainTest.java"))?;
} }
// git init . // git init .
@@ -164,7 +164,7 @@ fn init() -> anyhow::Result<()> {
f.read_to_string(&mut buf)?; f.read_to_string(&mut buf)?;
for ignored in [ for ignored in [
DIR_TARGET.as_path().display().to_string(), format!("{}/", DIR_TARGET.file_name().unwrap().display()),
format!("*.{}", JAVA_EXT_CLASS), format!("*.{}", JAVA_EXT_CLASS),
] { ] {
if !buf.contains(&ignored) { if !buf.contains(&ignored) {
@@ -240,7 +240,7 @@ fn run<P: AsRef<Path>>(
// JRE pathing will be messed up without this. // JRE pathing will be messed up without this.
crate::env::set_cwd(DIR_TARGET.as_path())?; crate::env::set_cwd(DIR_TARGET.as_path())?;
java::JVMBuilder::new() java::JVMBuilder::new(DIR_TARGET.as_path())
.assertions(assertions) .assertions(assertions)
.monitor(true) .monitor(true)
.build() .build()
@@ -248,19 +248,16 @@ fn run<P: AsRef<Path>>(
} }
fn test(assertions: bool) -> anyhow::Result<(Option<String>, Option<String>)> { fn test(assertions: bool) -> anyhow::Result<(Option<String>, Option<String>)> {
println!("Fence 1");
java::CompilerBuilder::new() java::CompilerBuilder::new()
.class_path(DIR_TARGET.as_path()) .class_path(DIR_TARGET.as_path())
.destination(DIR_TARGET.as_path()) .destination(DIR_TARGET.as_path())
.build() .build()
.compile(DIR_TEST.as_path())?; .compile(DIR_TEST.as_path())?;
println!("Fence 2");
// Change cwd to avoid Java pathing issues. // Change cwd to avoid Java pathing issues.
crate::env::set_cwd(DIR_TARGET.as_path())?; crate::env::set_cwd(DIR_TARGET.as_path())?;
println!("Fence 3"); java::JVMBuilder::new(DIR_TARGET.as_path())
java::JVMBuilder::new()
.assertions(assertions) .assertions(assertions)
.ram_min(ByteSize::mib(128)) .ram_min(ByteSize::mib(128))
.ram_max(ByteSize::mib(512)) .ram_max(ByteSize::mib(512))