forked from fiji/SNT
-
Notifications
You must be signed in to change notification settings - Fork 17
/
Copy pathScriptTemplatesTest.java
90 lines (80 loc) · 2.96 KB
/
ScriptTemplatesTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
/*-
* #%L
* Fiji distribution of ImageJ for the life sciences.
* %%
* Copyright (C) 2010 - 2025 Fiji developers.
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
*/
package sc.fiji.snt;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.Assert;
import java.io.File;
import java.util.ArrayList;
import org.scijava.Context;
import org.scijava.MenuPath;
import org.scijava.script.ScriptFinder;
import org.scijava.script.ScriptInfo;
import org.scijava.script.ScriptModule;
import org.scijava.script.ScriptService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Scripting Tests
*
* @author Cameron Arshadi
* @author Tiago Ferreira
*/
public class ScriptTemplatesTest {
private static final Logger LOGGER = LoggerFactory.getLogger(ScriptTemplatesTest.class);
private final String scriptTemplatesResource = "script_templates/Neuroanatomy";
private ScriptService scriptService;
private ArrayList<ScriptInfo> scripts;
@Before
public void setUp() throws Exception {
File scriptTemplatesBaseDirectory = new File(getClass().getClassLoader().getResource(scriptTemplatesResource).getFile());
Assert.assertTrue(scriptTemplatesBaseDirectory.exists());
Context context = new Context(ScriptService.class);
scriptService = context.getService(ScriptService.class);
context.close();
File[] subDirectories = scriptTemplatesBaseDirectory.listFiles(File::isDirectory);
for (File subDirectory : subDirectories) {
scriptService.addScriptDirectory(subDirectory, new MenuPath(subDirectory.getName()));
}
ScriptFinder scriptFinder = new ScriptFinder(scriptService.context());
scripts = new ArrayList<>();
scriptFinder.findScripts(scripts);
}
@Ignore // Cannot be run yet fully headless. Skip for now
@Test
public void testScriptTemplates() throws Exception {
//TODO: Allow headless execution
for (ScriptInfo script : scripts) {
LOGGER.info("##### Testing: " + script);
// Some scripts require very specific inputs. For now we are just going to skip those
if (script.getMenuPath().get(0).getName().contains("Batch")) {
LOGGER.info("\tSkipping...: " + script);
continue;
}
ScriptModule module = scriptService.run(script, true).get(); // calling get() waits for execution to finish
module.getOutputs().values().forEach(output -> {
LOGGER.info("\tOutputs: " + output);
});
}
}
}