diff --git a/cli/pom.xml b/cli/pom.xml index c295efab8f..a611a85cff 100644 --- a/cli/pom.xml +++ b/cli/pom.xml @@ -138,8 +138,6 @@ - - test-jar diff --git a/cli/src/test/java/com/devonfw/tools/ide/context/IdeContextTest.java b/cli/src/test/java/com/devonfw/tools/ide/context/IdeContextTest.java index c167895a49..c1ac76e39c 100644 --- a/cli/src/test/java/com/devonfw/tools/ide/context/IdeContextTest.java +++ b/cli/src/test/java/com/devonfw/tools/ide/context/IdeContextTest.java @@ -5,13 +5,6 @@ import java.util.Properties; import org.junit.jupiter.api.Test; -import com.devonfw.tools.ide.security.ToolVersionChoice; -import com.devonfw.tools.ide.tool.ToolEditionAndVersion; -import com.devonfw.tools.ide.security.ToolVulnerabilities; -import com.devonfw.tools.ide.version.VersionIdentifier; -import com.devonfw.tools.ide.version.VersionRange; -import com.devonfw.tools.ide.url.model.file.json.Cve; -import com.devonfw.tools.ide.tool.ToolEdition; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -24,13 +17,20 @@ import com.devonfw.tools.ide.log.IdeLogLevel; import com.devonfw.tools.ide.os.SystemInfo; import com.devonfw.tools.ide.os.SystemInfoMock; +import com.devonfw.tools.ide.security.ToolVersionChoice; +import com.devonfw.tools.ide.security.ToolVulnerabilities; +import com.devonfw.tools.ide.tool.ToolEdition; +import com.devonfw.tools.ide.tool.ToolEditionAndVersion; +import com.devonfw.tools.ide.url.model.file.json.Cve; import com.devonfw.tools.ide.variable.IdeVariables; import com.devonfw.tools.ide.version.IdeVersion; +import com.devonfw.tools.ide.version.VersionIdentifier; +import com.devonfw.tools.ide.version.VersionRange; /** * Test of {@link IdeContext}. */ -class IdeContextTest extends AbstractIdeContextTest { +public class IdeContextTest extends AbstractIdeContextTest { private static final Logger LOG = LoggerFactory.getLogger(IdeContextTest.class); @@ -284,7 +284,7 @@ void testFindBashOnSystemPathOnWindowsWithInvalidBashPathSet() { @Test void testQuestionWithMultipleOptions() { IdeTestContext context = newContext(PROJECT_BASIC, null, false); - String[] options = {"option1", "option2"}; + String[] options = { "option1", "option2" }; context.setAnswers("option1"); String result = context.question(options, "Which option?"); assertThat(result).isEqualTo("option1"); @@ -293,7 +293,7 @@ void testQuestionWithMultipleOptions() { @Test void testQuestionWithSingleOptionAndEmptyAnswer() { IdeTestContext context = newContext(PROJECT_BASIC, null, false); - String[] options = {"onlyOption"}; + String[] options = { "onlyOption" }; context.setAnswers(""); // Empty answer (Enter) String result = context.question(options, "Which option?"); assertThat(result).isEqualTo("onlyOption"); @@ -306,7 +306,7 @@ void testQuestionWithSingleToolVersionChoiceAndEmptyAnswer() { VersionIdentifier version = VersionIdentifier.of("17"); Cve cve = new Cve("CVE-2023-XXXX", 9.8, List.of(VersionRange.of("[17,18)"))); ToolVersionChoice choice = new ToolVersionChoice(new ToolEditionAndVersion(edition, version), "current", ToolVulnerabilities.of(List.of(cve))); - ToolVersionChoice[] options = {choice}; + ToolVersionChoice[] options = { choice }; context.setAnswers(""); // Empty answer (Enter) ToolVersionChoice result = context.question(options, "Which version?"); diff --git a/gui/pom.xml b/gui/pom.xml index d7701efece..2d30fe2059 100644 --- a/gui/pom.xml +++ b/gui/pom.xml @@ -30,7 +30,6 @@ ${project.groupId} ide-cli - tests ${project.version} test-jar test @@ -68,6 +67,14 @@ openjfx-monocle test + + + + org.wiremock + wiremock + 3.13.2 + test + diff --git a/gui/src/main/java/com/devonfw/ide/gui/App.java b/gui/src/main/java/com/devonfw/ide/gui/App.java index 3094e5185c..f6f715fe7d 100644 --- a/gui/src/main/java/com/devonfw/ide/gui/App.java +++ b/gui/src/main/java/com/devonfw/ide/gui/App.java @@ -2,6 +2,7 @@ import java.io.IOException; import javafx.application.Application; +import javafx.application.Platform; import javafx.fxml.FXMLLoader; import javafx.geometry.Rectangle2D; import javafx.scene.Parent; @@ -10,6 +11,10 @@ import javafx.stage.Screen; import javafx.stage.Stage; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.devonfw.ide.gui.modal.IdeDialog; import com.devonfw.tools.ide.variable.IdeVariables; import com.devonfw.tools.ide.version.IdeVersion; @@ -20,9 +25,17 @@ public class App extends Application { Parent root; + private static final Logger LOG = LoggerFactory.getLogger(App.class); + @Override public void start(Stage primaryStage) throws IOException { + Thread.setDefaultUncaughtExceptionHandler((thread, throwable) -> { + LOG.error("Uncaught exception in thread {}: {}", thread.getName(), throwable.getMessage(), throwable); + Platform.runLater(() -> new IdeDialog(IdeDialog.AlertType.ERROR, throwable.getMessage()).showAndWait()); + } + ); + FXMLLoader fxmlLoader = new FXMLLoader(App.class.getResource("main-view.fxml")); fxmlLoader.setController( new MainController(System.getenv(IdeVariables.IDE_ROOT.getName())) diff --git a/gui/src/main/java/com/devonfw/ide/gui/AppLauncher.java b/gui/src/main/java/com/devonfw/ide/gui/AppLauncher.java index aac16bfb9b..916f511b98 100644 --- a/gui/src/main/java/com/devonfw/ide/gui/AppLauncher.java +++ b/gui/src/main/java/com/devonfw/ide/gui/AppLauncher.java @@ -2,10 +2,11 @@ /** * Launcher class for the App. Workaround for "Error: JavaFX runtime components are missing, and are required to run this application." Inspired by - * StackOverflow + * StackOverflow */ public class AppLauncher { + @SuppressWarnings("MissingJavadoc") public static void main(final String[] args) { App.main(args); diff --git a/gui/src/main/java/com/devonfw/ide/gui/MainController.java b/gui/src/main/java/com/devonfw/ide/gui/MainController.java index e153149107..8b0d42b6d3 100644 --- a/gui/src/main/java/com/devonfw/ide/gui/MainController.java +++ b/gui/src/main/java/com/devonfw/ide/gui/MainController.java @@ -1,9 +1,8 @@ package com.devonfw.ide.gui; -import java.io.IOException; -import java.nio.file.Files; +import java.io.FileNotFoundException; import java.nio.file.Path; -import java.util.stream.Stream; +import java.util.List; import javafx.fxml.FXML; import javafx.scene.control.Button; import javafx.scene.control.ComboBox; @@ -11,10 +10,9 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.devonfw.tools.ide.context.IdeContext; -import com.devonfw.tools.ide.context.IdeStartContextImpl; -import com.devonfw.tools.ide.log.IdeLogLevel; -import com.devonfw.tools.ide.log.IdeLogListenerBuffer; +import com.devonfw.ide.gui.context.IdeGuiStateManager; +import com.devonfw.ide.gui.context.ProjectManager; +import com.devonfw.ide.gui.modal.IdeDialog; /** * Controller of the main screen of the dashboard GUI. @@ -23,6 +21,9 @@ public class MainController { private static Logger LOG = LoggerFactory.getLogger(MainController.class); + private ProjectManager projectManager; + + @FXML private ComboBox selectedProject; @@ -49,8 +50,11 @@ public class MainController { * Constructor */ public MainController(String directoryPath) { + LOG.debug("IDE_ROOT path={}", directoryPath); this.directoryPath = directoryPath; + + this.projectManager = IdeGuiStateManager.getInstance().getProjectManager(); } @FXML @@ -83,66 +87,56 @@ private void openVsCode() { openIDE("vscode"); } - private void setProjectsComboBox() { assert (directoryPath != null) : "directoryPath is null! Please check the setup of your environment variables (IDE_ROOT)"; + List projects = projectManager.getProjectNames(); + selectedProject.getItems().clear(); - Path directory = Path.of(directoryPath); - - if (Files.exists(directory) && Files.isDirectory(directory)) { - try (Stream subPaths = Files.list(directory)) { - subPaths - .filter(Files::isDirectory) - .map(Path::getFileName) - .map(Path::toString) - .filter(name -> !name.startsWith("_")) - .forEach(name -> selectedProject.getItems().add(name)); - } catch (IOException e) { - throw new IllegalStateException("Failed to list projects!", e); - } - } + selectedProject.getItems().addAll(projects); selectedProject.setOnAction(actionEvent -> { - projectValue = Path.of(selectedProject.getValue()).resolve(IdeContext.FOLDER_WORKSPACES); + setWorkspaceComboBox(); + selectedWorkspace.setDisable(false); + }); + } + + private void setWorkspaceComboBox() { + + List workspaces = projectManager.getWorkspaceNames(selectedProject.getValue()); + + selectedWorkspace.getItems().clear(); + selectedWorkspace.getItems().addAll(workspaces); + + selectedWorkspace.setOnAction(actionEvent -> { + updateContext(selectedProject.getValue(), selectedWorkspace.getValue()); + androidStudioOpen.setDisable(false); eclipseOpen.setDisable(false); intellijOpen.setDisable(false); vsCodeOpen.setDisable(false); - selectedWorkspace.setValue("main"); - this.workspaceValue = Path.of("main"); }); } - @FXML - private void setWorkspaceValue() { + private void openIDE(String inIde) { - selectedWorkspace.getItems().clear(); - Path directory = Path.of(directoryPath).resolve(projectValue); - if (Files.exists(directory) && Files.isDirectory(directory)) { - try (Stream subPaths = Files.list(directory)) { - subPaths - .filter(Files::isDirectory) - .map(Path::getFileName) - .map(Path::toString) - .forEach(name -> selectedWorkspace.getItems().add(name)); - - } catch (IOException e) { - throw new RuntimeException("Error occurred while fetching workspace names.", e); - } - } - this.workspaceValue = Path.of(selectedWorkspace.getValue()); + IdeGuiStateManager + .getInstance() + .getCurrentContext() + .getCommandletManager() + .getCommandlet(inIde) + .run(); } - private void openIDE(String inIde) { - - final IdeLogListenerBuffer buffer = new IdeLogListenerBuffer(); - IdeLogLevel logLevel = IdeLogLevel.INFO; - IdeStartContextImpl startContext = new IdeStartContextImpl(logLevel, buffer); - IdeGuiContext context = new IdeGuiContext(startContext, Path.of(this.directoryPath).resolve(this.projectValue).resolve(this.workspaceValue)); - context.getCommandletManager().getCommandlet(inIde).run(); + private void updateContext(String selectedProjectName, String selectedWorkspaceName) { + try { + IdeGuiStateManager.getInstance().switchContext(selectedProjectName, selectedWorkspaceName); + } catch (FileNotFoundException e) { + IdeDialog errorDialog = new IdeDialog(IdeDialog.AlertType.ERROR, e.getMessage()); + errorDialog.showAndWait(); + } } } diff --git a/gui/src/main/java/com/devonfw/ide/gui/context/GuiContextChangeListener.java b/gui/src/main/java/com/devonfw/ide/gui/context/GuiContextChangeListener.java new file mode 100644 index 0000000000..53972265f6 --- /dev/null +++ b/gui/src/main/java/com/devonfw/ide/gui/context/GuiContextChangeListener.java @@ -0,0 +1,15 @@ +package com.devonfw.ide.gui.context; + +/** + * Interface that notifies listeners of context changes. + */ +public interface GuiContextChangeListener { + + /** + * This method is called when the context changes. It can be used to update the GUI based on the new context. + * + * @param newContext the new {@link IdeGuiContext}. + */ + void onContextChange(IdeGuiContext newContext); + +} diff --git a/gui/src/main/java/com/devonfw/ide/gui/IdeGuiContext.java b/gui/src/main/java/com/devonfw/ide/gui/context/IdeGuiContext.java similarity index 96% rename from gui/src/main/java/com/devonfw/ide/gui/IdeGuiContext.java rename to gui/src/main/java/com/devonfw/ide/gui/context/IdeGuiContext.java index c16732d70a..221e9325c3 100644 --- a/gui/src/main/java/com/devonfw/ide/gui/IdeGuiContext.java +++ b/gui/src/main/java/com/devonfw/ide/gui/context/IdeGuiContext.java @@ -1,4 +1,4 @@ -package com.devonfw.ide.gui; +package com.devonfw.ide.gui.context; import java.nio.file.Path; @@ -12,7 +12,6 @@ */ public class IdeGuiContext extends AbstractIdeContext { - /** * The constructor. * @@ -20,17 +19,19 @@ public class IdeGuiContext extends AbstractIdeContext { * @param workingDirectory the optional {@link Path} to current working directory. */ public IdeGuiContext(IdeStartContextImpl startContext, Path workingDirectory) { + super(startContext, workingDirectory); } @Override protected String readLine() { + return ""; } @Override public IdeProgressBar newProgressBar(String title, long size, String unitName, long unitSize) { + return new IdeProgressBarNone(title, 0, unitName, unitSize); } - } diff --git a/gui/src/main/java/com/devonfw/ide/gui/context/IdeGuiStateManager.java b/gui/src/main/java/com/devonfw/ide/gui/context/IdeGuiStateManager.java new file mode 100644 index 0000000000..070b0e90a0 --- /dev/null +++ b/gui/src/main/java/com/devonfw/ide/gui/context/IdeGuiStateManager.java @@ -0,0 +1,153 @@ +package com.devonfw.ide.gui.context; + +import java.io.FileNotFoundException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.concurrent.CopyOnWriteArrayList; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.devonfw.tools.ide.context.IdeStartContextImpl; +import com.devonfw.tools.ide.log.IdeLogLevel; +import com.devonfw.tools.ide.log.IdeLogListenerBuffer; + +/** + * This class has the purpose of enabling the context state management for the IDEasy GUI. It is a thread-safe singleton implementation (Bill Pugh Singleton). + */ +public class IdeGuiStateManager { + + private static final Logger LOG = LoggerFactory.getLogger(IdeGuiStateManager.class); + + private Path ideRootDir; + private ProjectManager projectManager; + + private final CopyOnWriteArrayList listeners = new CopyOnWriteArrayList<>(); + + /** + * Project context based on which project the user works in. + */ + private volatile IdeGuiContext currentContext; + + /** + * The {@link IdeStartContextImpl} for the GUI, this stays the same for the whole GUI session, only the {@link IdeGuiContext} changes. + */ + private final IdeStartContextImpl startContext; + + private IdeGuiStateManager() { + + final IdeLogListenerBuffer buffer = new IdeLogListenerBuffer(); + IdeLogLevel logLevel = IdeLogLevel.DEBUG; + startContext = new IdeStartContextImpl(logLevel, buffer); + } + + /** + * @return the singleton instance of the {@link IdeGuiStateManager}. + */ + public static IdeGuiStateManager getInstance() { + + IdeGuiStateManager instance = Holder.INSTANCE; + if (instance.ideRootDir == null) { + String ideRoot = System.getenv("IDE_ROOT"); + if (ideRoot == null) { + throw new IllegalStateException("IDE_ROOT environment variable is not set!"); + } + instance.ideRootDir = Path.of(ideRoot); + instance.projectManager = new ProjectManager(instance.ideRootDir); + } + return Holder.INSTANCE; + } + + /** + * USE WITH CARE. + * This method is used in cases where the IDE_ROOT environment variable is not set, e.g. in test contexts on GitHub actions. This method will retrieve the + * current instance, set the project directory manually an then return the updated instance. + * + * @param ideRoot root directory for the ide projects. + * @return the singleton instance of the {@link IdeGuiStateManager}. + */ + //TODO: remove this method once we have a better solution for the test context, after implementing CLi's test jar. + public static IdeGuiStateManager getInstanceOverrideRootDir(String ideRoot) { + LOG.warn("Using unsafe getInstanceOverrideRootDir method."); + + IdeGuiStateManager instance = Holder.INSTANCE; + if (ideRoot == null) { + throw new IllegalArgumentException("ideRoot must not be null!"); + } else if (instance.ideRootDir != null) { + LOG.warn("ideRootDir is already set. You are overriding it."); + } + + instance.ideRootDir = Path.of(ideRoot); + instance.projectManager = new ProjectManager(instance.ideRootDir); + return instance; + } + + /** + * @param projectName name of the project folder + * @param workspaceName name of the workspace folder + * @return the new {@link IdeGuiContext} for the selected project and workspace. + * @throws FileNotFoundException if workspace or project does not exist + */ + public synchronized IdeGuiContext switchContext(String projectName, String workspaceName) throws FileNotFoundException { + + LOG.debug("Trying to switch context to project {} and workspace {}", projectName, workspaceName); + + Path projectPath = ideRootDir.resolve(projectName); + Path workspacePath = projectPath.resolve("workspaces").resolve(workspaceName); + + if (!Files.exists(projectPath)) { + throw new FileNotFoundException("Project " + projectPath + " does not exist!"); + } else if (!Files.exists(workspacePath)) { + throw new FileNotFoundException("Workspace " + workspacePath + " does not exist!"); + } + + this.currentContext = new IdeGuiContext(startContext, workspacePath); + listeners.forEach(listener -> listener.onContextChange(this.currentContext)); + + return this.currentContext; + } + + /** + * @return the current {@link IdeGuiContext} based on the selected project. is null, if no context has been set via switchContext. + */ + public IdeGuiContext getCurrentContext() { + + return this.currentContext; + } + + /** + * @return instance of {@link ProjectManager} + */ + public ProjectManager getProjectManager() { + + return projectManager; + } + + /** + * Add a listener to the context change events. + * + * @param listener the {@link GuiContextChangeListener} to attach to context updates. + */ + public void addGuiContextChangeListener(GuiContextChangeListener listener) { + listeners.add(listener); + } + + /** + * Remove a listener from the context change events. + * + * @param listener the {@link GuiContextChangeListener} to remove from context updates. + */ + public void removeGuiContextChangeListener(GuiContextChangeListener listener) { + listeners.remove(listener); + } + + /** + * Holder class for the singleton instance. The static keyword ensures the thread-safety of the singleton. + * + * @see More info + */ + private static class Holder { + + private static final IdeGuiStateManager INSTANCE = new IdeGuiStateManager(); + } +} diff --git a/gui/src/main/java/com/devonfw/ide/gui/context/ProjectManager.java b/gui/src/main/java/com/devonfw/ide/gui/context/ProjectManager.java new file mode 100644 index 0000000000..929f39485b --- /dev/null +++ b/gui/src/main/java/com/devonfw/ide/gui/context/ProjectManager.java @@ -0,0 +1,120 @@ +package com.devonfw.ide.gui.context; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.stream.Stream; + +import org.jline.utils.Log; + +/** + * Service class that allows to access the list of projects + */ +public class ProjectManager { + + private final Path ideRootDirectory; + + private final ArrayList projectNames = new ArrayList<>(); + private final HashMap> workspaces = new HashMap<>(); + + /** + * Service class that reads the list of projects/workspaces + * + * @param ideRootDirectory IDE_ROOT ENV variable value + */ + /* + * Protected: Class should only be accessed by the code via the {@link IdeGuiStateManager} + * Why not in the IdeGuiContext? Reasoning is, that you might want to read the list of projects without being already in the project context + */ + protected ProjectManager(Path ideRootDirectory) { + + this.ideRootDirectory = ideRootDirectory; + + if (ideRootDirectory == null) { + throw new IllegalArgumentException("Root directory is null"); + } else if (!Files.exists(ideRootDirectory)) { + throw new IllegalArgumentException("Root directory does not exist"); + } else if (!Files.isDirectory(ideRootDirectory)) { + throw new IllegalArgumentException("Root directory is not a directory"); + } + + refreshProjects(); + } + + /** + * re-reads the list of projects/workspaces + */ + public void refreshProjects() { + projectNames.clear(); + workspaces.clear(); + + readProjects(); + readWorkspaces(); + } + + /** + * read all projects in the users IDE_ROOT directory + */ + private void readProjects() { + + try (Stream subPaths = Files.list(ideRootDirectory)) { + subPaths + .filter(Files::isDirectory) + .map(Path::getFileName) + .map(Path::toString) + .filter(name -> !name.startsWith("_") && Files.exists(ideRootDirectory.resolve(name).resolve("workspaces"))) + .forEach(projectNames::add); + } catch (IOException e) { + Log.error("Failed to read project list!", e); + throw new IllegalStateException("Failed to read project list!", e); + } + } + + /** + * reads all workspaces of all loaded projects. + */ + protected void readWorkspaces() { + + if (projectNames.isEmpty()) { + Log.info("Project list is empty. Therefore no workspaces can be read."); + } + + for (String projectName : projectNames) { + Path projectDirectory = ideRootDirectory.resolve(projectName); + Path workspacesDirectory = projectDirectory.resolve("workspaces"); + + ArrayList workspaceNames = new ArrayList<>(); + + try (Stream subPaths = Files.list(workspacesDirectory)) { + subPaths + .filter(Files::isDirectory) + .map(Path::getFileName) + .map(Path::toString) + .forEach(workspaceNames::add); + + workspaces.put(projectName, workspaceNames); + } catch (IOException e) { + Log.error("Error occurred while fetching workspace names.", e); + throw new RuntimeException("Error occurred while fetching workspace names.", e); + } + } + } + + /** + * @return the list of project (names) in the project directory + */ + public List getProjectNames() { + return projectNames; + } + + /** + * @param projectName name of the project for which the workspace names should be returned + * @return the list of workspace (names) for the given project name + */ + public List getWorkspaceNames(String projectName) { + return workspaces.get(projectName); + } +} diff --git a/gui/src/main/java/com/devonfw/ide/gui/modal/IdeDialog.java b/gui/src/main/java/com/devonfw/ide/gui/modal/IdeDialog.java new file mode 100644 index 0000000000..2ee467ae23 --- /dev/null +++ b/gui/src/main/java/com/devonfw/ide/gui/modal/IdeDialog.java @@ -0,0 +1,42 @@ +package com.devonfw.ide.gui.modal; + +import javafx.scene.control.Alert; +import javafx.scene.control.ButtonType; +import javafx.scene.image.Image; +import javafx.stage.Stage; + +/** + * Custom Alert class for IDEasy to allow interaction via the CLIs questions/modals/selections. + */ +public class IdeDialog extends Alert { + + /** + * @param alertType the {@link AlertType} of the alert (e.g. INFORMATION, CONFIRMATION, etc). + */ + public IdeDialog(AlertType alertType) { + + super(alertType); + setupDefaultProperties(); + } + + /** + * @param alertType the {@link AlertType} of the alert (e.g. INFORMATION, CONFIRMATION, etc). + * @param message main message displayed in the dialoge + * @param buttonTypes defines the different buttons that the alert displays. + */ + public IdeDialog(AlertType alertType, String message, ButtonType... buttonTypes) { + + super(alertType, message, buttonTypes); + setupDefaultProperties(); + } + + private void setupDefaultProperties() { + + setTitle("IDEasy"); + + setOnShowing(event -> { + Stage stage = (Stage) getDialogPane().getScene().getWindow(); + stage.getIcons().add(new Image("com/devonfw/ide/gui/assets/devonfw.png")); + }); + } +} diff --git a/gui/src/main/resources/com/devonfw/ide/gui/main-view.fxml b/gui/src/main/resources/com/devonfw/ide/gui/main-view.fxml index 0ce3546a95..49246b642d 100644 --- a/gui/src/main/resources/com/devonfw/ide/gui/main-view.fxml +++ b/gui/src/main/resources/com/devonfw/ide/gui/main-view.fxml @@ -34,9 +34,8 @@ - diff --git a/gui/src/test/java/com/devonfw/ide/gui/AppBaseTest.java b/gui/src/test/java/com/devonfw/ide/gui/AppBaseTest.java index 423de657e0..bb2f9062ac 100644 --- a/gui/src/test/java/com/devonfw/ide/gui/AppBaseTest.java +++ b/gui/src/test/java/com/devonfw/ide/gui/AppBaseTest.java @@ -19,6 +19,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.devonfw.ide.gui.context.IdeGuiStateManager; + /** * Basic UI Test */ @@ -30,7 +32,8 @@ public class AppBaseTest extends HeadlessApplicationTest { private ComboBox selectedProject, selectedWorkspace; @TempDir - private static Path temporayProjectDirectoryPath; + private static Path mockIdeRoot; + @Override public void start(Stage stage) throws IOException { @@ -39,7 +42,7 @@ public void start(Stage stage) throws IOException { assertThat(mainViewUrl).as("Cannot resolve main UI FXML resource!").isNotNull(); FXMLLoader fxmlLoader = new FXMLLoader(mainViewUrl); - fxmlLoader.setController(new MainController(temporayProjectDirectoryPath.toString())); + fxmlLoader.setController(new MainController(mockIdeRoot.toString())); Parent root = fxmlLoader.load(); stage.setScene(new Scene(root)); stage.requestFocus(); //sometimes needed for headless setup to work @@ -58,37 +61,28 @@ public void start(Stage stage) throws IOException { * to work in the test context. Generates a structure like this: /project-[0..6]/workspaces/main */ @BeforeAll - public static void generateProjectFolderStructure() { - - LOGGER.debug("tempDir: {}", temporayProjectDirectoryPath); - for (int i = 0; i <= 5; i++) { - String projectFolderName = "project-" + i; - assertThat(temporayProjectDirectoryPath.resolve(projectFolderName).toFile().mkdir()) - .as("Unable to create mock project directory for mock project " + i) - .isTrue(); - assertThat(temporayProjectDirectoryPath.resolve(projectFolderName).resolve("workspaces").toFile().mkdir()) - .as("Unable to create mock workspaces directory for mock project " + i) - .isTrue(); - assertThat(temporayProjectDirectoryPath.resolve(projectFolderName).resolve("workspaces").resolve("main").toFile().mkdir()) - .as( - "Unable to create mock main workspace directory for mock project " + i) - .isTrue(); - } - LOGGER.debug("project folders: {}", Arrays.toString(temporayProjectDirectoryPath.toFile().list())); + protected static void generateProjectFolderStructure() throws IOException { + + LOGGER.debug("tempDir: {}", mockIdeRoot); + FakeProjectFolderStructureHelper.createFakeProjectFolderStructure(mockIdeRoot); + LOGGER.debug("project folders: {}", Arrays.toString(mockIdeRoot.toFile().list())); + + //We set the project root directory to the temporary directory before all tests, so that the IDE can find the projects in the test. + IdeGuiStateManager.getInstanceOverrideRootDir(mockIdeRoot.toString()).switchContext("project-1", "main"); } /** * This test ensures that all IDE open buttons are disabled when no project is selected. */ @Test - public void testIdeOpenButtonsDisabledWhenNoProjectSelected() { + public void testIdeOpenButtonsDisabledWhenNoWorkspaceSelected() { // assert that no project is selected - assertThat(selectedProject.getValue()).isNull(); + assertThat(selectedWorkspace.getValue()).isNull(); // assert all IDE open buttons are disabled for (Button button : new Button[] { androidStudioOpen, eclipseOpen, intellijOpen, vsCodeOpen }) { - assertThat(button.isDisabled()).as(button.getId() + " button should be disabled when no project has been selected").isTrue(); + assertThat(button.isDisabled()).as(button.getId() + " button should be disabled when no workspace has been selected").isTrue(); } } @@ -96,14 +90,15 @@ public void testIdeOpenButtonsDisabledWhenNoProjectSelected() { * This test ensures that all IDE open buttons are enabled when a project is selected. */ @Test - public void testIdeOpenButtonsEnabledWhenProjectSelected() { + public void testIdeOpenButtonsEnabledWhenWorkspaceSelected() { - // assert that a project is selected + // assert that a project and workspace is selected interact(() -> selectedProject.getSelectionModel().select("project-1")); + interact(() -> selectedWorkspace.getSelectionModel().select("main")); - // assert all IDE open buttons are disabled + // assert all IDE open buttons are enabled for (Button button : new Button[] { androidStudioOpen, eclipseOpen, intellijOpen, vsCodeOpen }) { - assertThat(!button.isDisabled()).as(button.getId() + " button should be enabled when a project has been selected").isTrue(); + assertThat(button.isDisabled()).as(button.getId() + " button should be enabled when a workspace has been selected").isFalse(); } } @@ -124,7 +119,7 @@ public void testWorkspaceComboBoxDisabledWhenNoProjectSelected() { * Tests that the workspace {@link ComboBox} is enabled when a project is selected. */ @Test - public void testWorkspaceComboboxEnabledEnabledWhenProjectSelected() { + public void testWorkspaceComboBoxEnabledEnabledWhenProjectSelected() { // assert that a project is selected interact(() -> selectedProject.getSelectionModel().select("project-1")); diff --git a/gui/src/test/java/com/devonfw/ide/gui/FakeProjectFolderStructureHelper.java b/gui/src/test/java/com/devonfw/ide/gui/FakeProjectFolderStructureHelper.java new file mode 100644 index 0000000000..d6850e22c3 --- /dev/null +++ b/gui/src/test/java/com/devonfw/ide/gui/FakeProjectFolderStructureHelper.java @@ -0,0 +1,40 @@ +package com.devonfw.ide.gui; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; + +/** + * This class helps to create a fake project folder structure for testing. The projects are named in the format "project-{i}" and the workspaces are named + * "main". + *

+ * This class is supposed to be replaced by enabling ide-cli test dependencies allowing to mock a IdeContext + */ +public class FakeProjectFolderStructureHelper { + + /** + * @param rootPath root path where fake structure should be created + * @return the rootPath + */ + public static Path createFakeProjectFolderStructure(Path rootPath) throws IOException { + + for (int i = 0; i <= 5; i++) { + String projectFolderName = "project-" + i; + assertThat(Files.createDirectory(rootPath.resolve(projectFolderName))) + .as("Unable to create mock project directory for mock project " + i) + .isNotNull(); + assertThat(Files.createDirectory(rootPath.resolve(projectFolderName).resolve("workspaces"))) + .as("Unable to create mock workspaces directory for mock project " + i) + .isNotNull(); + assertThat(Files.createDirectory(rootPath.resolve(projectFolderName).resolve("workspaces").resolve("main"))) + .as( + "Unable to create mock main workspace directory for mock project " + i) + .isNotNull(); + } + + return rootPath; + } + +} diff --git a/gui/src/test/java/com/devonfw/ide/gui/HeadlessApplicationTest.java b/gui/src/test/java/com/devonfw/ide/gui/HeadlessApplicationTest.java index 2e7298caac..3b51b66787 100644 --- a/gui/src/test/java/com/devonfw/ide/gui/HeadlessApplicationTest.java +++ b/gui/src/test/java/com/devonfw/ide/gui/HeadlessApplicationTest.java @@ -15,10 +15,11 @@ public abstract class HeadlessApplicationTest extends ApplicationTest { System.setProperty("testfx.robot", "glass"); System.setProperty("testfx.headless", "true"); - System.setProperty("glass.platform", "Monocle"); System.setProperty("prism.order", "sw"); System.setProperty("prism.text", "t2k"); - System.setProperty("testfx.setup.timeout", "10000"); // increased timeout for testing on server-side CIs System.setProperty("java.awt.headless", "true"); + System.setProperty("glass.platform", "Monocle"); + System.setProperty("monocle.platform", "Headless"); + System.setProperty("testfx.setup.timeout", "10000"); // increased timeout for testing on server-side CIs } } diff --git a/gui/src/test/java/com/devonfw/ide/gui/IdeGuiMockRootTest.java b/gui/src/test/java/com/devonfw/ide/gui/IdeGuiMockRootTest.java new file mode 100644 index 0000000000..c650f7bf39 --- /dev/null +++ b/gui/src/test/java/com/devonfw/ide/gui/IdeGuiMockRootTest.java @@ -0,0 +1,24 @@ +package com.devonfw.ide.gui; + +import java.nio.file.Path; + +import org.junit.jupiter.api.io.CleanupMode; +import org.junit.jupiter.api.io.TempDir; +import org.testfx.framework.junit5.ApplicationTest; + +/** + * Provides the handling of mocking the IDE_ROOT directory to subclasses. + */ +public class IdeGuiMockRootTest extends ApplicationTest { + + @TempDir(cleanup = CleanupMode.ON_SUCCESS) + private static Path mockIdeRoot; + + /** + * @return a mock {@link Path} to a temporary IDE_ROOT directory. + */ + public static Path getMockIdeRoot() { + + return mockIdeRoot; + } +} diff --git a/gui/src/test/java/com/devonfw/ide/gui/context/IdeGuiStateManagerTest.java b/gui/src/test/java/com/devonfw/ide/gui/context/IdeGuiStateManagerTest.java new file mode 100644 index 0000000000..ac374dc3e7 --- /dev/null +++ b/gui/src/test/java/com/devonfw/ide/gui/context/IdeGuiStateManagerTest.java @@ -0,0 +1,114 @@ +package com.devonfw.ide.gui.context; + +import java.io.FileNotFoundException; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.stream.Stream; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.devonfw.tools.ide.context.AbstractIdeContextTest; +import com.devonfw.tools.ide.context.IdeTestContext; + +/** + * Tests for {@link IdeGuiStateManager}. + */ +public class IdeGuiStateManagerTest extends AbstractIdeContextTest { + + private static final Logger LOG = LoggerFactory.getLogger(IdeGuiStateManagerTest.class); + + private static IdeTestContext context; + + private static IdeGuiStateManager guiStateManager; + private static ProjectManager projectManager; + + @BeforeAll + static void setup() throws FileNotFoundException { + + context = newContext("testProject", "project-0"); + LOG.debug("root: {}", context.getIdeRoot()); + + guiStateManager = IdeGuiStateManager.getInstanceOverrideRootDir(context.getIdeRoot().toString()); + projectManager = guiStateManager.getProjectManager(); + } + + @BeforeEach + void reset() { + IdeGuiStateManager.getInstanceOverrideRootDir(context.getIdeRoot().toString()); + } + + @Test + void testThrowsIfIdeRootNull() { + + try { + IdeGuiStateManager.getInstanceOverrideRootDir(null); + } catch (IllegalArgumentException e) { + assertThat(e.getMessage()).contains("ideRoot must not be null!"); + } + } + + @Test + void testThrowsIfIdeRootDoesNotExist() { + + try { + IdeGuiStateManager.getInstanceOverrideRootDir("nonExistingIdeRoot"); + } catch (IllegalArgumentException e) { + assertThat(e.getMessage()).contains("Root directory does not exist"); + } + } + + @Test + void testGetContext() throws FileNotFoundException { + + IdeGuiContext context = guiStateManager.switchContext(projectManager.getProjectNames().getFirst(), "main"); + assertThat(context).isNotNull().as("context was null after switchContext was called"); // When switching to a project, the context should be set. + } + + @Test + void testSwitchContext() { + + projectManager.getProjectNames().forEach((projectName) -> { + try { + guiStateManager.switchContext(projectName, "main"); + } catch (FileNotFoundException e) { + throw new RuntimeException(e); + } + }); + } + + @Test + void testThrowsIfNonExistentProjectSelected() { + + Path fakeProject = context.getIdeRoot().resolve("nonExistingProject"); + + try { + guiStateManager.switchContext(fakeProject.getFileName().toString(), "main"); + } catch (FileNotFoundException e) { + assertThat(e.getMessage()).contains("Project " + fakeProject + " does not exist!") + .as("GuiStateManager.switchContext should throw an exception, if a non-existent project is selected"); + } + } + + @Test + void testThrowsIfNonExistentWorkspaceSelected() throws IOException { + + try (Stream stream = Files.list(context.getIdeRoot())) { + stream.forEach((projectPath) -> { + Path fakeWorkspacePath = projectPath.resolve("workspaces").resolve("nonExistingWorkspace"); + + try { + guiStateManager.switchContext(projectPath.getFileName().toString(), fakeWorkspacePath.getFileName().toString()); + } catch (FileNotFoundException e) { + assertThat(e.getMessage()).contains("Workspace " + fakeWorkspacePath + " does not exist!") + .as("GuiStateManager.switchContext should throw an exception, if a non-existent workspace is selected"); + } + }); + } + } + +} diff --git a/gui/src/test/java/com/devonfw/ide/gui/context/ProjectManagerTest.java b/gui/src/test/java/com/devonfw/ide/gui/context/ProjectManagerTest.java new file mode 100644 index 0000000000..8408abe892 --- /dev/null +++ b/gui/src/test/java/com/devonfw/ide/gui/context/ProjectManagerTest.java @@ -0,0 +1,133 @@ +package com.devonfw.ide.gui.context; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; + +import org.apache.commons.io.FileUtils; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import com.devonfw.tools.ide.context.AbstractIdeContextTest; +import com.devonfw.tools.ide.context.IdeTestContext; + +/** + * Tests for the ProjectManager class. + */ +public class ProjectManagerTest extends AbstractIdeContextTest { + + private static ProjectManager projectManager; + + private static IdeTestContext context; + private static Path ideRoot; + + @BeforeEach + void resetContext() { + + context = newContext("testProject", "project-0"); + ideRoot = context.getIdeRoot(); + } + + @Test + void testProjectManagerFull() { + + projectManager = new ProjectManager(ideRoot); + + assertThat(projectManager).isNotNull(); + assertThat(projectManager.getProjectNames()).containsExactlyInAnyOrder("project-0", "project-1", "project-2", "project-3", "project-4", "project-5"); + for (String projectName : projectManager.getProjectNames()) { + assertThat(projectManager.getWorkspaceNames(projectName)).containsExactlyInAnyOrder("foo-test", "main"); + } + } + + @Test + void testConstructorWithNullDirectory() { + + try { + projectManager = new ProjectManager(null); + fail("IllegalArgumentException expected"); + } catch (IllegalArgumentException e) { + assertThat(e.getMessage()).contains("Root directory is null"); + } + } + + @Test + void testConstructorWithNonExistentDirectory() { + + try { + + projectManager = new ProjectManager(ideRoot.resolve("nonExistent")); + fail("IllegalArgumentException expected"); + } catch (IllegalArgumentException e) { + assertThat(e.getMessage()).contains("Root directory does not exist"); + } + } + + @Test + void testConstructorWithFile() throws IOException { + + try { + File testFile = ideRoot.resolve("testFile").toFile(); + boolean success = testFile.createNewFile(); + if (!success) { + throw new RuntimeException("Unable to create test file"); + } + + projectManager = new ProjectManager(ideRoot.resolve("testFile")); + fail("IllegalArgumentException expected"); + } catch (IllegalArgumentException e) { + assertThat(e.getMessage()).contains("Root directory is not a directory"); + } finally { + Files.deleteIfExists(ideRoot.resolve("testFile")); + } + } + + @Test + void testRefreshProjects() throws IOException { + + projectManager = new ProjectManager(ideRoot); + assertThat(projectManager.getProjectNames()).containsExactlyInAnyOrder("project-0", "project-1", "project-2", "project-3", "project-4", "project-5"); + + Path project0 = ideRoot.resolve("project-0"); + Path project6 = ideRoot.resolve("project-6"); + FileUtils.copyDirectory(project0.toFile(), project6.toFile()); + + projectManager.refreshProjects(); + + // Verify that project-6 is now recognized + assertThat(projectManager.getProjectNames()).containsExactlyInAnyOrder("project-0", "project-1", "project-2", "project-3", "project-4", "project-5", + "project-6"); + assertThat(projectManager.getWorkspaceNames("project-6")).containsExactlyInAnyOrder("foo-test", "main"); + + // Cleanup + FileUtils.deleteDirectory(project0.toFile()); + } + + @Test + void testReadProjectsExcludesFoldersWithoutWorkspaces() throws IOException { + + // Create a project folder without a workspaces subdirectory + Path testProject = ideRoot.resolve("test-project-no-workspaces"); + Files.createDirectory(testProject); + + projectManager = new ProjectManager(ideRoot); + + // Verify that test-project-no-workspaces is not recognized + assertThat(projectManager.getProjectNames()).doesNotContain("test-project-no-workspaces"); + assertThat(projectManager.getProjectNames()).containsExactlyInAnyOrder("project-0", "project-1", "project-2", "project-3", "project-4", "project-5"); + + // Cleanup + FileUtils.deleteDirectory(testProject.toFile()); + } + + @Test + void testReadProjectsExcludesUnderscorePrefixedFolders() { + + projectManager = new ProjectManager(ideRoot); + + // Verify that _ide folder is not in the project names + assertThat(projectManager.getProjectNames()).doesNotContain("_ide"); + assertThat(projectManager.getProjectNames()).containsExactlyInAnyOrder("project-0", "project-1", "project-2", "project-3", "project-4", "project-5"); + } +} diff --git a/gui/src/test/resources/ide-projects/testProject/_ide/bin/ide b/gui/src/test/resources/ide-projects/testProject/_ide/bin/ide new file mode 100644 index 0000000000..01f20642fd --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/_ide/bin/ide @@ -0,0 +1,2 @@ +#!/bin/bash +echo "ide $*" diff --git a/gui/src/test/resources/ide-projects/testProject/_ide/software/default/az/az/testVersion/.ide.software.version b/gui/src/test/resources/ide-projects/testProject/_ide/software/default/az/az/testVersion/.ide.software.version new file mode 100644 index 0000000000..62ec2f6393 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/_ide/software/default/az/az/testVersion/.ide.software.version @@ -0,0 +1 @@ +testVersion diff --git a/gui/src/test/resources/ide-projects/testProject/_ide/software/readme b/gui/src/test/resources/ide-projects/testProject/_ide/software/readme new file mode 100644 index 0000000000..c5be1dc4fd --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/_ide/software/readme @@ -0,0 +1 @@ +this is the tool repository \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/_ide/urls/java/java/17.0.10/linux_x64.urls b/gui/src/test/resources/ide-projects/testProject/_ide/urls/java/java/17.0.10/linux_x64.urls new file mode 100644 index 0000000000..979afbc06f --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/_ide/urls/java/java/17.0.10/linux_x64.urls @@ -0,0 +1 @@ +${testbaseurl}/download/java/java/17.0.10/java-17.0.10.tgz diff --git a/gui/src/test/resources/ide-projects/testProject/_ide/urls/java/java/17.0.10/mac_x64.urls b/gui/src/test/resources/ide-projects/testProject/_ide/urls/java/java/17.0.10/mac_x64.urls new file mode 100644 index 0000000000..1697e0ff2d --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/_ide/urls/java/java/17.0.10/mac_x64.urls @@ -0,0 +1 @@ +${testbaseurl}/download/java/java/17.0.10/java-17.0.10.dmg diff --git a/gui/src/test/resources/ide-projects/testProject/_ide/urls/java/java/17.0.10/windows_x64.urls b/gui/src/test/resources/ide-projects/testProject/_ide/urls/java/java/17.0.10/windows_x64.urls new file mode 100644 index 0000000000..e43fbf1dc6 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/_ide/urls/java/java/17.0.10/windows_x64.urls @@ -0,0 +1 @@ +${testbaseurl}/download/java/java/17.0.10/java-17.0.10.zip diff --git a/gui/src/test/resources/ide-projects/testProject/_ide/urls/java/java/17.0.6/linux_x64.urls b/gui/src/test/resources/ide-projects/testProject/_ide/urls/java/java/17.0.6/linux_x64.urls new file mode 100644 index 0000000000..f500d7d6f5 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/_ide/urls/java/java/17.0.6/linux_x64.urls @@ -0,0 +1 @@ +${testbaseurl}/download/java/java/17.0.6/java-17.0.6.tgz diff --git a/gui/src/test/resources/ide-projects/testProject/_ide/urls/java/java/17.0.6/mac_x64.urls b/gui/src/test/resources/ide-projects/testProject/_ide/urls/java/java/17.0.6/mac_x64.urls new file mode 100644 index 0000000000..36094258c3 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/_ide/urls/java/java/17.0.6/mac_x64.urls @@ -0,0 +1 @@ +${testbaseurl}/download/java/java/17.0.6/java-17.0.6.dmg diff --git a/gui/src/test/resources/ide-projects/testProject/_ide/urls/java/java/17.0.6/windows_x64.urls b/gui/src/test/resources/ide-projects/testProject/_ide/urls/java/java/17.0.6/windows_x64.urls new file mode 100644 index 0000000000..8c9ad7e518 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/_ide/urls/java/java/17.0.6/windows_x64.urls @@ -0,0 +1 @@ +${testbaseurl}/download/java/java/17.0.6/java-17.0.6.zip diff --git a/gui/src/test/resources/ide-projects/testProject/_ide/urls/java/java/21.0.8_9/linux_x64.urls b/gui/src/test/resources/ide-projects/testProject/_ide/urls/java/java/21.0.8_9/linux_x64.urls new file mode 100644 index 0000000000..2f0e744d44 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/_ide/urls/java/java/21.0.8_9/linux_x64.urls @@ -0,0 +1 @@ +${testbaseurl}/download/java/java/21.0.8_9/java-21.0.8_9.tgz diff --git a/gui/src/test/resources/ide-projects/testProject/_ide/urls/java/java/21.0.8_9/mac_x64.urls b/gui/src/test/resources/ide-projects/testProject/_ide/urls/java/java/21.0.8_9/mac_x64.urls new file mode 100644 index 0000000000..e2c2050871 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/_ide/urls/java/java/21.0.8_9/mac_x64.urls @@ -0,0 +1 @@ +${testbaseurl}/download/java/java/21.0.8_9/java-21.0.8_9.dmg diff --git a/gui/src/test/resources/ide-projects/testProject/_ide/urls/java/java/21.0.8_9/windows_x64.urls b/gui/src/test/resources/ide-projects/testProject/_ide/urls/java/java/21.0.8_9/windows_x64.urls new file mode 100644 index 0000000000..81e4b0c021 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/_ide/urls/java/java/21.0.8_9/windows_x64.urls @@ -0,0 +1 @@ +${testbaseurl}/download/java/java/21.0.8_9/java-21.0.8_9.zip diff --git a/gui/src/test/resources/ide-projects/testProject/_ide/urls/mvn/mvn/3.0.5/status.json b/gui/src/test/resources/ide-projects/testProject/_ide/urls/mvn/mvn/3.0.5/status.json new file mode 100644 index 0000000000..efe228f91b --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/_ide/urls/mvn/mvn/3.0.5/status.json @@ -0,0 +1,10 @@ +{ + "manual": false, + "urls": { + "-997329125": { + "success": { + "timestamp": "2023-04-28T07:12:26.601818Z" + } + } + } +} diff --git a/gui/src/test/resources/ide-projects/testProject/_ide/urls/mvn/mvn/3.0.5/urls b/gui/src/test/resources/ide-projects/testProject/_ide/urls/mvn/mvn/3.0.5/urls new file mode 100644 index 0000000000..2d5a377122 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/_ide/urls/mvn/mvn/3.0.5/urls @@ -0,0 +1 @@ +https://archive.apache.org/dist/maven/maven-3/3.0.5/binaries/apache-maven-3.0.5-bin.tar.gz diff --git a/gui/src/test/resources/ide-projects/testProject/_ide/urls/mvn/mvn/3.1.0/status.json b/gui/src/test/resources/ide-projects/testProject/_ide/urls/mvn/mvn/3.1.0/status.json new file mode 100644 index 0000000000..efe228f91b --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/_ide/urls/mvn/mvn/3.1.0/status.json @@ -0,0 +1,10 @@ +{ + "manual": false, + "urls": { + "-997329125": { + "success": { + "timestamp": "2023-04-28T07:12:26.601818Z" + } + } + } +} diff --git a/gui/src/test/resources/ide-projects/testProject/_ide/urls/mvn/mvn/3.1.0/urls b/gui/src/test/resources/ide-projects/testProject/_ide/urls/mvn/mvn/3.1.0/urls new file mode 100644 index 0000000000..10aea51a47 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/_ide/urls/mvn/mvn/3.1.0/urls @@ -0,0 +1 @@ +https://archive.apache.org/dist/maven/maven-3/3.1.0/binaries/apache-maven-3.1.0-bin.tar.gz diff --git a/gui/src/test/resources/ide-projects/testProject/_ide/urls/mvn/mvn/3.2.1/status.json b/gui/src/test/resources/ide-projects/testProject/_ide/urls/mvn/mvn/3.2.1/status.json new file mode 100644 index 0000000000..e66f9ed767 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/_ide/urls/mvn/mvn/3.2.1/status.json @@ -0,0 +1,10 @@ + + "manual" : false, + "urls" : { + "-997329125" : { + "success" : { + "timestamp" : "2023-04-28T07:12:26.601818Z" + } + } + } +} \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/_ide/urls/mvn/mvn/3.2.1/urls b/gui/src/test/resources/ide-projects/testProject/_ide/urls/mvn/mvn/3.2.1/urls new file mode 100644 index 0000000000..82d63fe842 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/_ide/urls/mvn/mvn/3.2.1/urls @@ -0,0 +1 @@ +https://archive.apache.org/dist/maven/maven-3/3.2.1/binaries/apache-maven-3.2.1-bin.tar.gz diff --git a/gui/src/test/resources/ide-projects/testProject/_ide/urls/mvn/secondMvnEdition/3.2.1/status.json b/gui/src/test/resources/ide-projects/testProject/_ide/urls/mvn/secondMvnEdition/3.2.1/status.json new file mode 100644 index 0000000000..e66f9ed767 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/_ide/urls/mvn/secondMvnEdition/3.2.1/status.json @@ -0,0 +1,10 @@ + + "manual" : false, + "urls" : { + "-997329125" : { + "success" : { + "timestamp" : "2023-04-28T07:12:26.601818Z" + } + } + } +} \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/_ide/urls/readme b/gui/src/test/resources/ide-projects/testProject/_ide/urls/readme new file mode 100644 index 0000000000..befcdfa755 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/_ide/urls/readme @@ -0,0 +1 @@ +this is the download metadata \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-0/conf/ide.properties b/gui/src/test/resources/ide-projects/testProject/project-0/conf/ide.properties new file mode 100644 index 0000000000..c041e43ae1 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-0/conf/ide.properties @@ -0,0 +1,6 @@ +#******************************************************************************** +# This file contains project specific environment variables defined by the user +#******************************************************************************** +M2_REPO=~/.m2/repository +MVN_VERSION=3.9.1 +SOME=some-${UNDEFINED} diff --git a/gui/src/test/resources/ide-projects/testProject/project-0/home/.ide/ide.properties b/gui/src/test/resources/ide-projects/testProject/project-0/home/.ide/ide.properties new file mode 100644 index 0000000000..c532faa1aa --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-0/home/.ide/ide.properties @@ -0,0 +1,13 @@ +#******************************************************************************** +# This file contains the global configuration from the user HOME directory. +#******************************************************************************** +DOCKER_EDITION=docker +FOO=foo-${BAR} +TEST_ARGS1=${TEST_ARGS1} user1 +TEST_ARGS2=${TEST_ARGS2} user2 +TEST_ARGS3=${TEST_ARGS3} user3 +TEST_ARGS7=user7 +TEST_ARGS10=user10 +TEST_ARGSb=userb +TEST_ARGSc=${TEST_ARGS1} userc +TEST_ARGSd=${TEST_ARGS1} userd diff --git a/gui/src/test/resources/ide-projects/testProject/project-0/home/.ide/settings/eclipse/plugins/anyedit.properties b/gui/src/test/resources/ide-projects/testProject/project-0/home/.ide/settings/eclipse/plugins/anyedit.properties new file mode 100644 index 0000000000..eb298f3bbc --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-0/home/.ide/settings/eclipse/plugins/anyedit.properties @@ -0,0 +1,3 @@ +plugin_url=https://raw.githubusercontent.com/iloveeclipse/plugins/latest/ +plugin_id=AnyEditTools.feature.group +plugin_active=false diff --git a/gui/src/test/resources/ide-projects/testProject/project-0/home/Downloads/ide/readme b/gui/src/test/resources/ide-projects/testProject/project-0/home/Downloads/ide/readme new file mode 100644 index 0000000000..f0dc29025a --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-0/home/Downloads/ide/readme @@ -0,0 +1 @@ +this is the download cache \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-0/home/readme b/gui/src/test/resources/ide-projects/testProject/project-0/home/readme new file mode 100644 index 0000000000..5e8bc178cf --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-0/home/readme @@ -0,0 +1 @@ +this is the users HOME directory \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-0/settings/eclipse/plugins/anyedit.properties b/gui/src/test/resources/ide-projects/testProject/project-0/settings/eclipse/plugins/anyedit.properties new file mode 100644 index 0000000000..09a94b1160 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-0/settings/eclipse/plugins/anyedit.properties @@ -0,0 +1,3 @@ +plugin_url=https://raw.githubusercontent.com/iloveeclipse/plugins/latest/ +plugin_id=AnyEditTools.feature.group +plugin_active=true diff --git a/gui/src/test/resources/ide-projects/testProject/project-0/settings/eclipse/plugins/checkstyle.properties b/gui/src/test/resources/ide-projects/testProject/project-0/settings/eclipse/plugins/checkstyle.properties new file mode 100644 index 0000000000..6e402c7c5d --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-0/settings/eclipse/plugins/checkstyle.properties @@ -0,0 +1,3 @@ +plugin_url=https://checkstyle.org/eclipse-cs-update-site +plugin_id=net.sf.eclipsecs.feature.group +plugin_active=true diff --git a/gui/src/test/resources/ide-projects/testProject/project-0/settings/ide.properties b/gui/src/test/resources/ide-projects/testProject/project-0/settings/ide.properties new file mode 100644 index 0000000000..1ccf228f98 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-0/settings/ide.properties @@ -0,0 +1,9 @@ +#******************************************************************************** +# This file contains project specific environment variables +#******************************************************************************** +JAVA_VERSION=17* +MVN_VERSION=3.9.0 +ECLIPSE_VERSION=2023-03 +INTELLIJ_EDITION=ultimate +IDE_TOOLS=mvn,eclipse +BAR=bar-${SOME} diff --git a/gui/src/test/resources/ide-projects/testProject/project-0/settings/workspace/update/.editorconfig b/gui/src/test/resources/ide-projects/testProject/project-0/settings/workspace/update/.editorconfig new file mode 100644 index 0000000000..e69de29bb2 diff --git a/gui/src/test/resources/ide-projects/testProject/project-0/setup b/gui/src/test/resources/ide-projects/testProject/project-0/setup new file mode 100644 index 0000000000..9c5d4b1be1 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-0/setup @@ -0,0 +1 @@ +just a marker for detection of IDE_HOME \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-0/software/java/bin/readme b/gui/src/test/resources/ide-projects/testProject/project-0/software/java/bin/readme new file mode 100644 index 0000000000..7146c2ad6c --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-0/software/java/bin/readme @@ -0,0 +1 @@ +this is the main workspace of basic \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-0/software/mvn/.devon.software.version b/gui/src/test/resources/ide-projects/testProject/project-0/software/mvn/.devon.software.version new file mode 100644 index 0000000000..e0d61b5b06 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-0/software/mvn/.devon.software.version @@ -0,0 +1 @@ +3.9.4 diff --git a/gui/src/test/resources/ide-projects/testProject/project-0/software/mvn/bin/mvn b/gui/src/test/resources/ide-projects/testProject/project-0/software/mvn/bin/mvn new file mode 100644 index 0000000000..4a97b4f4a1 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-0/software/mvn/bin/mvn @@ -0,0 +1,5 @@ +#!/bin/bash +if [ "$1" == "-h" ]; then + echo "usage: mvn [options] [] []" +fi +echo "mvn $*" diff --git a/gui/src/test/resources/ide-projects/testProject/project-0/software/mvn/bin/readme b/gui/src/test/resources/ide-projects/testProject/project-0/software/mvn/bin/readme new file mode 100644 index 0000000000..2d2cc36674 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-0/software/mvn/bin/readme @@ -0,0 +1 @@ +this is the java bin folder \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-0/software/node/.ide.software.version b/gui/src/test/resources/ide-projects/testProject/project-0/software/node/.ide.software.version new file mode 100644 index 0000000000..0c4da74167 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-0/software/node/.ide.software.version @@ -0,0 +1 @@ +17.0.6 diff --git a/gui/src/test/resources/ide-projects/testProject/project-0/software/node/npm b/gui/src/test/resources/ide-projects/testProject/project-0/software/node/npm new file mode 100644 index 0000000000..b547b61509 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-0/software/node/npm @@ -0,0 +1,6 @@ +#!/bin/bash +echo "npm $*" + +if [ "$*" == "list -g npm --depth=0" ]; then + echo "11.0.0" +fi diff --git a/gui/src/test/resources/ide-projects/testProject/project-0/workspaces/foo-test/readme b/gui/src/test/resources/ide-projects/testProject/project-0/workspaces/foo-test/readme new file mode 100644 index 0000000000..948f8cfea2 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-0/workspaces/foo-test/readme @@ -0,0 +1 @@ +this is the foo-test workspace of basic \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-0/workspaces/main/readme b/gui/src/test/resources/ide-projects/testProject/project-0/workspaces/main/readme new file mode 100644 index 0000000000..7146c2ad6c --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-0/workspaces/main/readme @@ -0,0 +1 @@ +this is the main workspace of basic \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-1/conf/ide.properties b/gui/src/test/resources/ide-projects/testProject/project-1/conf/ide.properties new file mode 100644 index 0000000000..c041e43ae1 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-1/conf/ide.properties @@ -0,0 +1,6 @@ +#******************************************************************************** +# This file contains project specific environment variables defined by the user +#******************************************************************************** +M2_REPO=~/.m2/repository +MVN_VERSION=3.9.1 +SOME=some-${UNDEFINED} diff --git a/gui/src/test/resources/ide-projects/testProject/project-1/home/.ide/ide.properties b/gui/src/test/resources/ide-projects/testProject/project-1/home/.ide/ide.properties new file mode 100644 index 0000000000..c532faa1aa --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-1/home/.ide/ide.properties @@ -0,0 +1,13 @@ +#******************************************************************************** +# This file contains the global configuration from the user HOME directory. +#******************************************************************************** +DOCKER_EDITION=docker +FOO=foo-${BAR} +TEST_ARGS1=${TEST_ARGS1} user1 +TEST_ARGS2=${TEST_ARGS2} user2 +TEST_ARGS3=${TEST_ARGS3} user3 +TEST_ARGS7=user7 +TEST_ARGS10=user10 +TEST_ARGSb=userb +TEST_ARGSc=${TEST_ARGS1} userc +TEST_ARGSd=${TEST_ARGS1} userd diff --git a/gui/src/test/resources/ide-projects/testProject/project-1/home/.ide/settings/eclipse/plugins/anyedit.properties b/gui/src/test/resources/ide-projects/testProject/project-1/home/.ide/settings/eclipse/plugins/anyedit.properties new file mode 100644 index 0000000000..eb298f3bbc --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-1/home/.ide/settings/eclipse/plugins/anyedit.properties @@ -0,0 +1,3 @@ +plugin_url=https://raw.githubusercontent.com/iloveeclipse/plugins/latest/ +plugin_id=AnyEditTools.feature.group +plugin_active=false diff --git a/gui/src/test/resources/ide-projects/testProject/project-1/home/Downloads/ide/readme b/gui/src/test/resources/ide-projects/testProject/project-1/home/Downloads/ide/readme new file mode 100644 index 0000000000..f0dc29025a --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-1/home/Downloads/ide/readme @@ -0,0 +1 @@ +this is the download cache \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-1/home/readme b/gui/src/test/resources/ide-projects/testProject/project-1/home/readme new file mode 100644 index 0000000000..5e8bc178cf --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-1/home/readme @@ -0,0 +1 @@ +this is the users HOME directory \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-1/settings/eclipse/plugins/anyedit.properties b/gui/src/test/resources/ide-projects/testProject/project-1/settings/eclipse/plugins/anyedit.properties new file mode 100644 index 0000000000..09a94b1160 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-1/settings/eclipse/plugins/anyedit.properties @@ -0,0 +1,3 @@ +plugin_url=https://raw.githubusercontent.com/iloveeclipse/plugins/latest/ +plugin_id=AnyEditTools.feature.group +plugin_active=true diff --git a/gui/src/test/resources/ide-projects/testProject/project-1/settings/eclipse/plugins/checkstyle.properties b/gui/src/test/resources/ide-projects/testProject/project-1/settings/eclipse/plugins/checkstyle.properties new file mode 100644 index 0000000000..6e402c7c5d --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-1/settings/eclipse/plugins/checkstyle.properties @@ -0,0 +1,3 @@ +plugin_url=https://checkstyle.org/eclipse-cs-update-site +plugin_id=net.sf.eclipsecs.feature.group +plugin_active=true diff --git a/gui/src/test/resources/ide-projects/testProject/project-1/settings/ide.properties b/gui/src/test/resources/ide-projects/testProject/project-1/settings/ide.properties new file mode 100644 index 0000000000..1ccf228f98 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-1/settings/ide.properties @@ -0,0 +1,9 @@ +#******************************************************************************** +# This file contains project specific environment variables +#******************************************************************************** +JAVA_VERSION=17* +MVN_VERSION=3.9.0 +ECLIPSE_VERSION=2023-03 +INTELLIJ_EDITION=ultimate +IDE_TOOLS=mvn,eclipse +BAR=bar-${SOME} diff --git a/gui/src/test/resources/ide-projects/testProject/project-1/settings/workspace/update/.editorconfig b/gui/src/test/resources/ide-projects/testProject/project-1/settings/workspace/update/.editorconfig new file mode 100644 index 0000000000..e69de29bb2 diff --git a/gui/src/test/resources/ide-projects/testProject/project-1/setup b/gui/src/test/resources/ide-projects/testProject/project-1/setup new file mode 100644 index 0000000000..9c5d4b1be1 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-1/setup @@ -0,0 +1 @@ +just a marker for detection of IDE_HOME \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-1/software/java/bin/readme b/gui/src/test/resources/ide-projects/testProject/project-1/software/java/bin/readme new file mode 100644 index 0000000000..7146c2ad6c --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-1/software/java/bin/readme @@ -0,0 +1 @@ +this is the main workspace of basic \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-1/software/mvn/.devon.software.version b/gui/src/test/resources/ide-projects/testProject/project-1/software/mvn/.devon.software.version new file mode 100644 index 0000000000..e0d61b5b06 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-1/software/mvn/.devon.software.version @@ -0,0 +1 @@ +3.9.4 diff --git a/gui/src/test/resources/ide-projects/testProject/project-1/software/mvn/bin/mvn b/gui/src/test/resources/ide-projects/testProject/project-1/software/mvn/bin/mvn new file mode 100644 index 0000000000..4a97b4f4a1 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-1/software/mvn/bin/mvn @@ -0,0 +1,5 @@ +#!/bin/bash +if [ "$1" == "-h" ]; then + echo "usage: mvn [options] [] []" +fi +echo "mvn $*" diff --git a/gui/src/test/resources/ide-projects/testProject/project-1/software/mvn/bin/readme b/gui/src/test/resources/ide-projects/testProject/project-1/software/mvn/bin/readme new file mode 100644 index 0000000000..2d2cc36674 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-1/software/mvn/bin/readme @@ -0,0 +1 @@ +this is the java bin folder \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-1/software/node/.ide.software.version b/gui/src/test/resources/ide-projects/testProject/project-1/software/node/.ide.software.version new file mode 100644 index 0000000000..0c4da74167 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-1/software/node/.ide.software.version @@ -0,0 +1 @@ +17.0.6 diff --git a/gui/src/test/resources/ide-projects/testProject/project-1/software/node/npm b/gui/src/test/resources/ide-projects/testProject/project-1/software/node/npm new file mode 100644 index 0000000000..b547b61509 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-1/software/node/npm @@ -0,0 +1,6 @@ +#!/bin/bash +echo "npm $*" + +if [ "$*" == "list -g npm --depth=0" ]; then + echo "11.0.0" +fi diff --git a/gui/src/test/resources/ide-projects/testProject/project-1/workspaces/foo-test/readme b/gui/src/test/resources/ide-projects/testProject/project-1/workspaces/foo-test/readme new file mode 100644 index 0000000000..948f8cfea2 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-1/workspaces/foo-test/readme @@ -0,0 +1 @@ +this is the foo-test workspace of basic \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-1/workspaces/main/readme b/gui/src/test/resources/ide-projects/testProject/project-1/workspaces/main/readme new file mode 100644 index 0000000000..7146c2ad6c --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-1/workspaces/main/readme @@ -0,0 +1 @@ +this is the main workspace of basic \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-2/conf/ide.properties b/gui/src/test/resources/ide-projects/testProject/project-2/conf/ide.properties new file mode 100644 index 0000000000..c041e43ae1 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-2/conf/ide.properties @@ -0,0 +1,6 @@ +#******************************************************************************** +# This file contains project specific environment variables defined by the user +#******************************************************************************** +M2_REPO=~/.m2/repository +MVN_VERSION=3.9.1 +SOME=some-${UNDEFINED} diff --git a/gui/src/test/resources/ide-projects/testProject/project-2/home/.ide/ide.properties b/gui/src/test/resources/ide-projects/testProject/project-2/home/.ide/ide.properties new file mode 100644 index 0000000000..c532faa1aa --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-2/home/.ide/ide.properties @@ -0,0 +1,13 @@ +#******************************************************************************** +# This file contains the global configuration from the user HOME directory. +#******************************************************************************** +DOCKER_EDITION=docker +FOO=foo-${BAR} +TEST_ARGS1=${TEST_ARGS1} user1 +TEST_ARGS2=${TEST_ARGS2} user2 +TEST_ARGS3=${TEST_ARGS3} user3 +TEST_ARGS7=user7 +TEST_ARGS10=user10 +TEST_ARGSb=userb +TEST_ARGSc=${TEST_ARGS1} userc +TEST_ARGSd=${TEST_ARGS1} userd diff --git a/gui/src/test/resources/ide-projects/testProject/project-2/home/.ide/settings/eclipse/plugins/anyedit.properties b/gui/src/test/resources/ide-projects/testProject/project-2/home/.ide/settings/eclipse/plugins/anyedit.properties new file mode 100644 index 0000000000..eb298f3bbc --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-2/home/.ide/settings/eclipse/plugins/anyedit.properties @@ -0,0 +1,3 @@ +plugin_url=https://raw.githubusercontent.com/iloveeclipse/plugins/latest/ +plugin_id=AnyEditTools.feature.group +plugin_active=false diff --git a/gui/src/test/resources/ide-projects/testProject/project-2/home/Downloads/ide/readme b/gui/src/test/resources/ide-projects/testProject/project-2/home/Downloads/ide/readme new file mode 100644 index 0000000000..f0dc29025a --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-2/home/Downloads/ide/readme @@ -0,0 +1 @@ +this is the download cache \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-2/home/readme b/gui/src/test/resources/ide-projects/testProject/project-2/home/readme new file mode 100644 index 0000000000..5e8bc178cf --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-2/home/readme @@ -0,0 +1 @@ +this is the users HOME directory \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-2/settings/eclipse/plugins/anyedit.properties b/gui/src/test/resources/ide-projects/testProject/project-2/settings/eclipse/plugins/anyedit.properties new file mode 100644 index 0000000000..09a94b1160 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-2/settings/eclipse/plugins/anyedit.properties @@ -0,0 +1,3 @@ +plugin_url=https://raw.githubusercontent.com/iloveeclipse/plugins/latest/ +plugin_id=AnyEditTools.feature.group +plugin_active=true diff --git a/gui/src/test/resources/ide-projects/testProject/project-2/settings/eclipse/plugins/checkstyle.properties b/gui/src/test/resources/ide-projects/testProject/project-2/settings/eclipse/plugins/checkstyle.properties new file mode 100644 index 0000000000..6e402c7c5d --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-2/settings/eclipse/plugins/checkstyle.properties @@ -0,0 +1,3 @@ +plugin_url=https://checkstyle.org/eclipse-cs-update-site +plugin_id=net.sf.eclipsecs.feature.group +plugin_active=true diff --git a/gui/src/test/resources/ide-projects/testProject/project-2/settings/ide.properties b/gui/src/test/resources/ide-projects/testProject/project-2/settings/ide.properties new file mode 100644 index 0000000000..1ccf228f98 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-2/settings/ide.properties @@ -0,0 +1,9 @@ +#******************************************************************************** +# This file contains project specific environment variables +#******************************************************************************** +JAVA_VERSION=17* +MVN_VERSION=3.9.0 +ECLIPSE_VERSION=2023-03 +INTELLIJ_EDITION=ultimate +IDE_TOOLS=mvn,eclipse +BAR=bar-${SOME} diff --git a/gui/src/test/resources/ide-projects/testProject/project-2/settings/workspace/update/.editorconfig b/gui/src/test/resources/ide-projects/testProject/project-2/settings/workspace/update/.editorconfig new file mode 100644 index 0000000000..e69de29bb2 diff --git a/gui/src/test/resources/ide-projects/testProject/project-2/setup b/gui/src/test/resources/ide-projects/testProject/project-2/setup new file mode 100644 index 0000000000..9c5d4b1be1 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-2/setup @@ -0,0 +1 @@ +just a marker for detection of IDE_HOME \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-2/software/java/bin/readme b/gui/src/test/resources/ide-projects/testProject/project-2/software/java/bin/readme new file mode 100644 index 0000000000..7146c2ad6c --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-2/software/java/bin/readme @@ -0,0 +1 @@ +this is the main workspace of basic \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-2/software/mvn/.devon.software.version b/gui/src/test/resources/ide-projects/testProject/project-2/software/mvn/.devon.software.version new file mode 100644 index 0000000000..e0d61b5b06 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-2/software/mvn/.devon.software.version @@ -0,0 +1 @@ +3.9.4 diff --git a/gui/src/test/resources/ide-projects/testProject/project-2/software/mvn/bin/mvn b/gui/src/test/resources/ide-projects/testProject/project-2/software/mvn/bin/mvn new file mode 100644 index 0000000000..4a97b4f4a1 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-2/software/mvn/bin/mvn @@ -0,0 +1,5 @@ +#!/bin/bash +if [ "$1" == "-h" ]; then + echo "usage: mvn [options] [] []" +fi +echo "mvn $*" diff --git a/gui/src/test/resources/ide-projects/testProject/project-2/software/mvn/bin/readme b/gui/src/test/resources/ide-projects/testProject/project-2/software/mvn/bin/readme new file mode 100644 index 0000000000..2d2cc36674 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-2/software/mvn/bin/readme @@ -0,0 +1 @@ +this is the java bin folder \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-2/software/node/.ide.software.version b/gui/src/test/resources/ide-projects/testProject/project-2/software/node/.ide.software.version new file mode 100644 index 0000000000..0c4da74167 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-2/software/node/.ide.software.version @@ -0,0 +1 @@ +17.0.6 diff --git a/gui/src/test/resources/ide-projects/testProject/project-2/software/node/npm b/gui/src/test/resources/ide-projects/testProject/project-2/software/node/npm new file mode 100644 index 0000000000..b547b61509 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-2/software/node/npm @@ -0,0 +1,6 @@ +#!/bin/bash +echo "npm $*" + +if [ "$*" == "list -g npm --depth=0" ]; then + echo "11.0.0" +fi diff --git a/gui/src/test/resources/ide-projects/testProject/project-2/workspaces/foo-test/readme b/gui/src/test/resources/ide-projects/testProject/project-2/workspaces/foo-test/readme new file mode 100644 index 0000000000..948f8cfea2 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-2/workspaces/foo-test/readme @@ -0,0 +1 @@ +this is the foo-test workspace of basic \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-2/workspaces/main/readme b/gui/src/test/resources/ide-projects/testProject/project-2/workspaces/main/readme new file mode 100644 index 0000000000..7146c2ad6c --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-2/workspaces/main/readme @@ -0,0 +1 @@ +this is the main workspace of basic \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-3/conf/ide.properties b/gui/src/test/resources/ide-projects/testProject/project-3/conf/ide.properties new file mode 100644 index 0000000000..c041e43ae1 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-3/conf/ide.properties @@ -0,0 +1,6 @@ +#******************************************************************************** +# This file contains project specific environment variables defined by the user +#******************************************************************************** +M2_REPO=~/.m2/repository +MVN_VERSION=3.9.1 +SOME=some-${UNDEFINED} diff --git a/gui/src/test/resources/ide-projects/testProject/project-3/home/.ide/ide.properties b/gui/src/test/resources/ide-projects/testProject/project-3/home/.ide/ide.properties new file mode 100644 index 0000000000..c532faa1aa --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-3/home/.ide/ide.properties @@ -0,0 +1,13 @@ +#******************************************************************************** +# This file contains the global configuration from the user HOME directory. +#******************************************************************************** +DOCKER_EDITION=docker +FOO=foo-${BAR} +TEST_ARGS1=${TEST_ARGS1} user1 +TEST_ARGS2=${TEST_ARGS2} user2 +TEST_ARGS3=${TEST_ARGS3} user3 +TEST_ARGS7=user7 +TEST_ARGS10=user10 +TEST_ARGSb=userb +TEST_ARGSc=${TEST_ARGS1} userc +TEST_ARGSd=${TEST_ARGS1} userd diff --git a/gui/src/test/resources/ide-projects/testProject/project-3/home/.ide/settings/eclipse/plugins/anyedit.properties b/gui/src/test/resources/ide-projects/testProject/project-3/home/.ide/settings/eclipse/plugins/anyedit.properties new file mode 100644 index 0000000000..eb298f3bbc --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-3/home/.ide/settings/eclipse/plugins/anyedit.properties @@ -0,0 +1,3 @@ +plugin_url=https://raw.githubusercontent.com/iloveeclipse/plugins/latest/ +plugin_id=AnyEditTools.feature.group +plugin_active=false diff --git a/gui/src/test/resources/ide-projects/testProject/project-3/home/Downloads/ide/readme b/gui/src/test/resources/ide-projects/testProject/project-3/home/Downloads/ide/readme new file mode 100644 index 0000000000..f0dc29025a --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-3/home/Downloads/ide/readme @@ -0,0 +1 @@ +this is the download cache \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-3/home/readme b/gui/src/test/resources/ide-projects/testProject/project-3/home/readme new file mode 100644 index 0000000000..5e8bc178cf --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-3/home/readme @@ -0,0 +1 @@ +this is the users HOME directory \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-3/settings/eclipse/plugins/anyedit.properties b/gui/src/test/resources/ide-projects/testProject/project-3/settings/eclipse/plugins/anyedit.properties new file mode 100644 index 0000000000..09a94b1160 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-3/settings/eclipse/plugins/anyedit.properties @@ -0,0 +1,3 @@ +plugin_url=https://raw.githubusercontent.com/iloveeclipse/plugins/latest/ +plugin_id=AnyEditTools.feature.group +plugin_active=true diff --git a/gui/src/test/resources/ide-projects/testProject/project-3/settings/eclipse/plugins/checkstyle.properties b/gui/src/test/resources/ide-projects/testProject/project-3/settings/eclipse/plugins/checkstyle.properties new file mode 100644 index 0000000000..6e402c7c5d --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-3/settings/eclipse/plugins/checkstyle.properties @@ -0,0 +1,3 @@ +plugin_url=https://checkstyle.org/eclipse-cs-update-site +plugin_id=net.sf.eclipsecs.feature.group +plugin_active=true diff --git a/gui/src/test/resources/ide-projects/testProject/project-3/settings/ide.properties b/gui/src/test/resources/ide-projects/testProject/project-3/settings/ide.properties new file mode 100644 index 0000000000..1ccf228f98 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-3/settings/ide.properties @@ -0,0 +1,9 @@ +#******************************************************************************** +# This file contains project specific environment variables +#******************************************************************************** +JAVA_VERSION=17* +MVN_VERSION=3.9.0 +ECLIPSE_VERSION=2023-03 +INTELLIJ_EDITION=ultimate +IDE_TOOLS=mvn,eclipse +BAR=bar-${SOME} diff --git a/gui/src/test/resources/ide-projects/testProject/project-3/settings/workspace/update/.editorconfig b/gui/src/test/resources/ide-projects/testProject/project-3/settings/workspace/update/.editorconfig new file mode 100644 index 0000000000..e69de29bb2 diff --git a/gui/src/test/resources/ide-projects/testProject/project-3/setup b/gui/src/test/resources/ide-projects/testProject/project-3/setup new file mode 100644 index 0000000000..9c5d4b1be1 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-3/setup @@ -0,0 +1 @@ +just a marker for detection of IDE_HOME \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-3/software/java/bin/readme b/gui/src/test/resources/ide-projects/testProject/project-3/software/java/bin/readme new file mode 100644 index 0000000000..7146c2ad6c --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-3/software/java/bin/readme @@ -0,0 +1 @@ +this is the main workspace of basic \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-3/software/mvn/.devon.software.version b/gui/src/test/resources/ide-projects/testProject/project-3/software/mvn/.devon.software.version new file mode 100644 index 0000000000..e0d61b5b06 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-3/software/mvn/.devon.software.version @@ -0,0 +1 @@ +3.9.4 diff --git a/gui/src/test/resources/ide-projects/testProject/project-3/software/mvn/bin/mvn b/gui/src/test/resources/ide-projects/testProject/project-3/software/mvn/bin/mvn new file mode 100644 index 0000000000..4a97b4f4a1 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-3/software/mvn/bin/mvn @@ -0,0 +1,5 @@ +#!/bin/bash +if [ "$1" == "-h" ]; then + echo "usage: mvn [options] [] []" +fi +echo "mvn $*" diff --git a/gui/src/test/resources/ide-projects/testProject/project-3/software/mvn/bin/readme b/gui/src/test/resources/ide-projects/testProject/project-3/software/mvn/bin/readme new file mode 100644 index 0000000000..2d2cc36674 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-3/software/mvn/bin/readme @@ -0,0 +1 @@ +this is the java bin folder \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-3/software/node/.ide.software.version b/gui/src/test/resources/ide-projects/testProject/project-3/software/node/.ide.software.version new file mode 100644 index 0000000000..0c4da74167 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-3/software/node/.ide.software.version @@ -0,0 +1 @@ +17.0.6 diff --git a/gui/src/test/resources/ide-projects/testProject/project-3/software/node/npm b/gui/src/test/resources/ide-projects/testProject/project-3/software/node/npm new file mode 100644 index 0000000000..b547b61509 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-3/software/node/npm @@ -0,0 +1,6 @@ +#!/bin/bash +echo "npm $*" + +if [ "$*" == "list -g npm --depth=0" ]; then + echo "11.0.0" +fi diff --git a/gui/src/test/resources/ide-projects/testProject/project-3/workspaces/foo-test/readme b/gui/src/test/resources/ide-projects/testProject/project-3/workspaces/foo-test/readme new file mode 100644 index 0000000000..948f8cfea2 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-3/workspaces/foo-test/readme @@ -0,0 +1 @@ +this is the foo-test workspace of basic \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-3/workspaces/main/readme b/gui/src/test/resources/ide-projects/testProject/project-3/workspaces/main/readme new file mode 100644 index 0000000000..7146c2ad6c --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-3/workspaces/main/readme @@ -0,0 +1 @@ +this is the main workspace of basic \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-4/conf/ide.properties b/gui/src/test/resources/ide-projects/testProject/project-4/conf/ide.properties new file mode 100644 index 0000000000..c041e43ae1 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-4/conf/ide.properties @@ -0,0 +1,6 @@ +#******************************************************************************** +# This file contains project specific environment variables defined by the user +#******************************************************************************** +M2_REPO=~/.m2/repository +MVN_VERSION=3.9.1 +SOME=some-${UNDEFINED} diff --git a/gui/src/test/resources/ide-projects/testProject/project-4/home/.ide/ide.properties b/gui/src/test/resources/ide-projects/testProject/project-4/home/.ide/ide.properties new file mode 100644 index 0000000000..c532faa1aa --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-4/home/.ide/ide.properties @@ -0,0 +1,13 @@ +#******************************************************************************** +# This file contains the global configuration from the user HOME directory. +#******************************************************************************** +DOCKER_EDITION=docker +FOO=foo-${BAR} +TEST_ARGS1=${TEST_ARGS1} user1 +TEST_ARGS2=${TEST_ARGS2} user2 +TEST_ARGS3=${TEST_ARGS3} user3 +TEST_ARGS7=user7 +TEST_ARGS10=user10 +TEST_ARGSb=userb +TEST_ARGSc=${TEST_ARGS1} userc +TEST_ARGSd=${TEST_ARGS1} userd diff --git a/gui/src/test/resources/ide-projects/testProject/project-4/home/.ide/settings/eclipse/plugins/anyedit.properties b/gui/src/test/resources/ide-projects/testProject/project-4/home/.ide/settings/eclipse/plugins/anyedit.properties new file mode 100644 index 0000000000..eb298f3bbc --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-4/home/.ide/settings/eclipse/plugins/anyedit.properties @@ -0,0 +1,3 @@ +plugin_url=https://raw.githubusercontent.com/iloveeclipse/plugins/latest/ +plugin_id=AnyEditTools.feature.group +plugin_active=false diff --git a/gui/src/test/resources/ide-projects/testProject/project-4/home/Downloads/ide/readme b/gui/src/test/resources/ide-projects/testProject/project-4/home/Downloads/ide/readme new file mode 100644 index 0000000000..f0dc29025a --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-4/home/Downloads/ide/readme @@ -0,0 +1 @@ +this is the download cache \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-4/home/readme b/gui/src/test/resources/ide-projects/testProject/project-4/home/readme new file mode 100644 index 0000000000..5e8bc178cf --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-4/home/readme @@ -0,0 +1 @@ +this is the users HOME directory \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-4/settings/eclipse/plugins/anyedit.properties b/gui/src/test/resources/ide-projects/testProject/project-4/settings/eclipse/plugins/anyedit.properties new file mode 100644 index 0000000000..09a94b1160 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-4/settings/eclipse/plugins/anyedit.properties @@ -0,0 +1,3 @@ +plugin_url=https://raw.githubusercontent.com/iloveeclipse/plugins/latest/ +plugin_id=AnyEditTools.feature.group +plugin_active=true diff --git a/gui/src/test/resources/ide-projects/testProject/project-4/settings/eclipse/plugins/checkstyle.properties b/gui/src/test/resources/ide-projects/testProject/project-4/settings/eclipse/plugins/checkstyle.properties new file mode 100644 index 0000000000..6e402c7c5d --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-4/settings/eclipse/plugins/checkstyle.properties @@ -0,0 +1,3 @@ +plugin_url=https://checkstyle.org/eclipse-cs-update-site +plugin_id=net.sf.eclipsecs.feature.group +plugin_active=true diff --git a/gui/src/test/resources/ide-projects/testProject/project-4/settings/ide.properties b/gui/src/test/resources/ide-projects/testProject/project-4/settings/ide.properties new file mode 100644 index 0000000000..1ccf228f98 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-4/settings/ide.properties @@ -0,0 +1,9 @@ +#******************************************************************************** +# This file contains project specific environment variables +#******************************************************************************** +JAVA_VERSION=17* +MVN_VERSION=3.9.0 +ECLIPSE_VERSION=2023-03 +INTELLIJ_EDITION=ultimate +IDE_TOOLS=mvn,eclipse +BAR=bar-${SOME} diff --git a/gui/src/test/resources/ide-projects/testProject/project-4/settings/workspace/update/.editorconfig b/gui/src/test/resources/ide-projects/testProject/project-4/settings/workspace/update/.editorconfig new file mode 100644 index 0000000000..e69de29bb2 diff --git a/gui/src/test/resources/ide-projects/testProject/project-4/setup b/gui/src/test/resources/ide-projects/testProject/project-4/setup new file mode 100644 index 0000000000..9c5d4b1be1 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-4/setup @@ -0,0 +1 @@ +just a marker for detection of IDE_HOME \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-4/software/java/bin/readme b/gui/src/test/resources/ide-projects/testProject/project-4/software/java/bin/readme new file mode 100644 index 0000000000..7146c2ad6c --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-4/software/java/bin/readme @@ -0,0 +1 @@ +this is the main workspace of basic \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-4/software/mvn/.devon.software.version b/gui/src/test/resources/ide-projects/testProject/project-4/software/mvn/.devon.software.version new file mode 100644 index 0000000000..e0d61b5b06 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-4/software/mvn/.devon.software.version @@ -0,0 +1 @@ +3.9.4 diff --git a/gui/src/test/resources/ide-projects/testProject/project-4/software/mvn/bin/mvn b/gui/src/test/resources/ide-projects/testProject/project-4/software/mvn/bin/mvn new file mode 100644 index 0000000000..4a97b4f4a1 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-4/software/mvn/bin/mvn @@ -0,0 +1,5 @@ +#!/bin/bash +if [ "$1" == "-h" ]; then + echo "usage: mvn [options] [] []" +fi +echo "mvn $*" diff --git a/gui/src/test/resources/ide-projects/testProject/project-4/software/mvn/bin/readme b/gui/src/test/resources/ide-projects/testProject/project-4/software/mvn/bin/readme new file mode 100644 index 0000000000..2d2cc36674 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-4/software/mvn/bin/readme @@ -0,0 +1 @@ +this is the java bin folder \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-4/software/node/.ide.software.version b/gui/src/test/resources/ide-projects/testProject/project-4/software/node/.ide.software.version new file mode 100644 index 0000000000..0c4da74167 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-4/software/node/.ide.software.version @@ -0,0 +1 @@ +17.0.6 diff --git a/gui/src/test/resources/ide-projects/testProject/project-4/software/node/npm b/gui/src/test/resources/ide-projects/testProject/project-4/software/node/npm new file mode 100644 index 0000000000..b547b61509 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-4/software/node/npm @@ -0,0 +1,6 @@ +#!/bin/bash +echo "npm $*" + +if [ "$*" == "list -g npm --depth=0" ]; then + echo "11.0.0" +fi diff --git a/gui/src/test/resources/ide-projects/testProject/project-4/workspaces/foo-test/readme b/gui/src/test/resources/ide-projects/testProject/project-4/workspaces/foo-test/readme new file mode 100644 index 0000000000..948f8cfea2 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-4/workspaces/foo-test/readme @@ -0,0 +1 @@ +this is the foo-test workspace of basic \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-4/workspaces/main/readme b/gui/src/test/resources/ide-projects/testProject/project-4/workspaces/main/readme new file mode 100644 index 0000000000..7146c2ad6c --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-4/workspaces/main/readme @@ -0,0 +1 @@ +this is the main workspace of basic \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-5/conf/ide.properties b/gui/src/test/resources/ide-projects/testProject/project-5/conf/ide.properties new file mode 100644 index 0000000000..c041e43ae1 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-5/conf/ide.properties @@ -0,0 +1,6 @@ +#******************************************************************************** +# This file contains project specific environment variables defined by the user +#******************************************************************************** +M2_REPO=~/.m2/repository +MVN_VERSION=3.9.1 +SOME=some-${UNDEFINED} diff --git a/gui/src/test/resources/ide-projects/testProject/project-5/home/.ide/ide.properties b/gui/src/test/resources/ide-projects/testProject/project-5/home/.ide/ide.properties new file mode 100644 index 0000000000..c532faa1aa --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-5/home/.ide/ide.properties @@ -0,0 +1,13 @@ +#******************************************************************************** +# This file contains the global configuration from the user HOME directory. +#******************************************************************************** +DOCKER_EDITION=docker +FOO=foo-${BAR} +TEST_ARGS1=${TEST_ARGS1} user1 +TEST_ARGS2=${TEST_ARGS2} user2 +TEST_ARGS3=${TEST_ARGS3} user3 +TEST_ARGS7=user7 +TEST_ARGS10=user10 +TEST_ARGSb=userb +TEST_ARGSc=${TEST_ARGS1} userc +TEST_ARGSd=${TEST_ARGS1} userd diff --git a/gui/src/test/resources/ide-projects/testProject/project-5/home/.ide/settings/eclipse/plugins/anyedit.properties b/gui/src/test/resources/ide-projects/testProject/project-5/home/.ide/settings/eclipse/plugins/anyedit.properties new file mode 100644 index 0000000000..eb298f3bbc --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-5/home/.ide/settings/eclipse/plugins/anyedit.properties @@ -0,0 +1,3 @@ +plugin_url=https://raw.githubusercontent.com/iloveeclipse/plugins/latest/ +plugin_id=AnyEditTools.feature.group +plugin_active=false diff --git a/gui/src/test/resources/ide-projects/testProject/project-5/home/Downloads/ide/readme b/gui/src/test/resources/ide-projects/testProject/project-5/home/Downloads/ide/readme new file mode 100644 index 0000000000..f0dc29025a --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-5/home/Downloads/ide/readme @@ -0,0 +1 @@ +this is the download cache \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-5/home/readme b/gui/src/test/resources/ide-projects/testProject/project-5/home/readme new file mode 100644 index 0000000000..5e8bc178cf --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-5/home/readme @@ -0,0 +1 @@ +this is the users HOME directory \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-5/settings/eclipse/plugins/anyedit.properties b/gui/src/test/resources/ide-projects/testProject/project-5/settings/eclipse/plugins/anyedit.properties new file mode 100644 index 0000000000..09a94b1160 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-5/settings/eclipse/plugins/anyedit.properties @@ -0,0 +1,3 @@ +plugin_url=https://raw.githubusercontent.com/iloveeclipse/plugins/latest/ +plugin_id=AnyEditTools.feature.group +plugin_active=true diff --git a/gui/src/test/resources/ide-projects/testProject/project-5/settings/eclipse/plugins/checkstyle.properties b/gui/src/test/resources/ide-projects/testProject/project-5/settings/eclipse/plugins/checkstyle.properties new file mode 100644 index 0000000000..6e402c7c5d --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-5/settings/eclipse/plugins/checkstyle.properties @@ -0,0 +1,3 @@ +plugin_url=https://checkstyle.org/eclipse-cs-update-site +plugin_id=net.sf.eclipsecs.feature.group +plugin_active=true diff --git a/gui/src/test/resources/ide-projects/testProject/project-5/settings/ide.properties b/gui/src/test/resources/ide-projects/testProject/project-5/settings/ide.properties new file mode 100644 index 0000000000..1ccf228f98 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-5/settings/ide.properties @@ -0,0 +1,9 @@ +#******************************************************************************** +# This file contains project specific environment variables +#******************************************************************************** +JAVA_VERSION=17* +MVN_VERSION=3.9.0 +ECLIPSE_VERSION=2023-03 +INTELLIJ_EDITION=ultimate +IDE_TOOLS=mvn,eclipse +BAR=bar-${SOME} diff --git a/gui/src/test/resources/ide-projects/testProject/project-5/settings/workspace/update/.editorconfig b/gui/src/test/resources/ide-projects/testProject/project-5/settings/workspace/update/.editorconfig new file mode 100644 index 0000000000..e69de29bb2 diff --git a/gui/src/test/resources/ide-projects/testProject/project-5/setup b/gui/src/test/resources/ide-projects/testProject/project-5/setup new file mode 100644 index 0000000000..9c5d4b1be1 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-5/setup @@ -0,0 +1 @@ +just a marker for detection of IDE_HOME \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-5/software/java/bin/readme b/gui/src/test/resources/ide-projects/testProject/project-5/software/java/bin/readme new file mode 100644 index 0000000000..7146c2ad6c --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-5/software/java/bin/readme @@ -0,0 +1 @@ +this is the main workspace of basic \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-5/software/mvn/.devon.software.version b/gui/src/test/resources/ide-projects/testProject/project-5/software/mvn/.devon.software.version new file mode 100644 index 0000000000..e0d61b5b06 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-5/software/mvn/.devon.software.version @@ -0,0 +1 @@ +3.9.4 diff --git a/gui/src/test/resources/ide-projects/testProject/project-5/software/mvn/bin/mvn b/gui/src/test/resources/ide-projects/testProject/project-5/software/mvn/bin/mvn new file mode 100644 index 0000000000..4a97b4f4a1 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-5/software/mvn/bin/mvn @@ -0,0 +1,5 @@ +#!/bin/bash +if [ "$1" == "-h" ]; then + echo "usage: mvn [options] [] []" +fi +echo "mvn $*" diff --git a/gui/src/test/resources/ide-projects/testProject/project-5/software/mvn/bin/readme b/gui/src/test/resources/ide-projects/testProject/project-5/software/mvn/bin/readme new file mode 100644 index 0000000000..2d2cc36674 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-5/software/mvn/bin/readme @@ -0,0 +1 @@ +this is the java bin folder \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-5/software/node/.ide.software.version b/gui/src/test/resources/ide-projects/testProject/project-5/software/node/.ide.software.version new file mode 100644 index 0000000000..0c4da74167 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-5/software/node/.ide.software.version @@ -0,0 +1 @@ +17.0.6 diff --git a/gui/src/test/resources/ide-projects/testProject/project-5/software/node/npm b/gui/src/test/resources/ide-projects/testProject/project-5/software/node/npm new file mode 100644 index 0000000000..b547b61509 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-5/software/node/npm @@ -0,0 +1,6 @@ +#!/bin/bash +echo "npm $*" + +if [ "$*" == "list -g npm --depth=0" ]; then + echo "11.0.0" +fi diff --git a/gui/src/test/resources/ide-projects/testProject/project-5/workspaces/foo-test/readme b/gui/src/test/resources/ide-projects/testProject/project-5/workspaces/foo-test/readme new file mode 100644 index 0000000000..948f8cfea2 --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-5/workspaces/foo-test/readme @@ -0,0 +1 @@ +this is the foo-test workspace of basic \ No newline at end of file diff --git a/gui/src/test/resources/ide-projects/testProject/project-5/workspaces/main/readme b/gui/src/test/resources/ide-projects/testProject/project-5/workspaces/main/readme new file mode 100644 index 0000000000..7146c2ad6c --- /dev/null +++ b/gui/src/test/resources/ide-projects/testProject/project-5/workspaces/main/readme @@ -0,0 +1 @@ +this is the main workspace of basic \ No newline at end of file