@@ -2,9 +2,6 @@ use std::path::Path;
2
2
use std:: process:: Command ;
3
3
4
4
macro_rules! codegen_test {
5
- // TODO: should fix this test
6
- ( lift_lower_foreign $name: tt $test: tt) => { } ;
7
-
8
5
( $id: ident $name: tt $test: tt) => {
9
6
#[ test]
10
7
fn $id( ) {
@@ -25,30 +22,33 @@ macro_rules! codegen_test {
25
22
}
26
23
test_helpers:: codegen_tests!( "*.wit" ) ;
27
24
28
- // TODO: As of this writing, Maven has started failing to resolve dependencies on Windows in the GitHub action,
29
- // apparently unrelated to any code changes we've made. Until we've either resolved the problem or developed a
30
- // workaround, we're disabling the tests.
31
- //
32
- // See https://github.com/bytecodealliance/wit-bindgen/issues/495 for more information.
33
- #[ cfg( windows) ]
34
- fn verify ( _dir : & Path , _name : & str ) {
35
- _ = mvn;
36
- _ = pom_xml;
37
- }
38
-
39
- #[ cfg( unix) ]
40
25
fn verify ( dir : & Path , name : & str ) {
41
- use heck:: { ToSnakeCase , ToUpperCamelCase } ;
26
+ use heck:: ToSnakeCase ;
42
27
use std:: fs;
43
28
29
+ // Derived from `test_helpers::test_directory`
30
+ const DEPTH_FROM_TARGET_DIR : u32 = 3 ;
31
+
32
+ let base_dir = {
33
+ let mut dir = dir. to_owned ( ) ;
34
+ for _ in 0 ..DEPTH_FROM_TARGET_DIR {
35
+ dir. pop ( ) ;
36
+ }
37
+ dir
38
+ } ;
39
+
40
+ let teavm_interop_jar = base_dir. join ( "teavm-interop-0.2.8.jar" ) ;
41
+
42
+ if !teavm_interop_jar. is_file ( ) {
43
+ panic ! ( "please run ci/download-teavm.sh prior to running the Java tests" )
44
+ }
45
+
44
46
let java_dir = & dir. join ( "src/main/java" ) ;
45
47
let snake = name. to_snake_case ( ) ;
46
48
let package_dir = & java_dir. join ( format ! ( "wit_{snake}" ) ) ;
47
49
48
50
fs:: create_dir_all ( package_dir) . unwrap ( ) ;
49
51
50
- let upper = name. to_upper_camel_case ( ) ;
51
-
52
52
let src_files = fs:: read_dir ( & dir) . unwrap ( ) . filter_map ( |entry| {
53
53
let path = entry. unwrap ( ) . path ( ) ;
54
54
if let Some ( "java" ) = path. extension ( ) . map ( |ext| ext. to_str ( ) . unwrap ( ) ) {
@@ -58,52 +58,21 @@ fn verify(dir: &Path, name: &str) {
58
58
}
59
59
} ) ;
60
60
61
- for src in src_files {
62
- let dst = & package_dir. join ( src. file_name ( ) . unwrap ( ) ) ;
63
- fs:: rename ( src, dst) . unwrap ( ) ;
64
- }
61
+ let dst_files = src_files. map ( |src| {
62
+ let dst = package_dir. join ( src. file_name ( ) . unwrap ( ) ) ;
63
+ fs:: rename ( src, & dst) . unwrap ( ) ;
64
+ dst
65
+ } ) ;
65
66
66
- fs:: write (
67
- dir. join ( "pom.xml" ) ,
68
- pom_xml ( & [ & format ! ( "wit_{snake}.{upper}" ) ] ) ,
69
- )
70
- . unwrap ( ) ;
71
- fs:: write ( java_dir. join ( "Main.java" ) , include_bytes ! ( "Main.java" ) ) . unwrap ( ) ;
67
+ let mut cmd = Command :: new ( "javac" ) ;
68
+ cmd. arg ( "-cp" )
69
+ . arg ( & teavm_interop_jar)
70
+ . arg ( "-d" )
71
+ . arg ( "target/classes" ) ;
72
72
73
- let mut cmd = mvn ( ) ;
74
- cmd. arg ( "prepare-package" ) . current_dir ( dir) ;
73
+ for file in dst_files {
74
+ cmd. arg ( file) ;
75
+ }
75
76
76
77
test_helpers:: run_command ( & mut cmd) ;
77
78
}
78
-
79
- #[ cfg( unix) ]
80
- fn mvn ( ) -> Command {
81
- Command :: new ( "mvn" )
82
- }
83
-
84
- #[ cfg( windows) ]
85
- fn mvn ( ) -> Command {
86
- let mut cmd = Command :: new ( "cmd" ) ;
87
- cmd. args ( & [ "/c" , "mvn" ] ) ;
88
- cmd
89
- }
90
-
91
- fn pom_xml ( classes_to_preserve : & [ & str ] ) -> Vec < u8 > {
92
- let xml = include_str ! ( "pom.xml" ) ;
93
- let position = xml. find ( "<mainClass>" ) . unwrap ( ) ;
94
- let ( before, after) = xml. split_at ( position) ;
95
- let classes_to_preserve = classes_to_preserve
96
- . iter ( )
97
- . map ( |& class| format ! ( "<param>{class}</param>" ) )
98
- . collect :: < Vec < _ > > ( )
99
- . join ( "\n " ) ;
100
-
101
- format ! (
102
- "{before}
103
- <classesToPreserve>
104
- {classes_to_preserve}
105
- </classesToPreserve>
106
- {after}"
107
- )
108
- . into_bytes ( )
109
- }
0 commit comments