FrontendUtils { public static File getVaadinHomeDirectory() { File home = FileUtils.getUserDirectory(); if (!home.exists()) { throw new IllegalStateException("The user directory '" + home.getAbsolutePath() + "' doesn't exist"); } if (!home.isDirectory()) { throw new IllegalStateException("The path '" + home.getAbsolutePath() + "' is not a directory"); } File vaadinFolder = new File(home, ".vaadin"); if (vaadinFolder.exists()) { if (vaadinFolder.isDirectory()) { return vaadinFolder; } else { throw new IllegalStateException("The path '" + vaadinFolder.getAbsolutePath() + "' is not a directory. " + "This path is used to store vaadin related data. " + "Please either remove the file or create a directory"); } } try { FileUtils.forceMkdir(vaadinFolder); return vaadinFolder; } catch (IOException exception) { throw new UncheckedIOException( "Couldn't create '.vaadin' folder inside home directory '" + home.getAbsolutePath() + "'", exception); } } private  FrontendUtils(); static String getOsName(); static boolean isWindows(); static String streamToString(InputStream inputStream); static ProcessBuilder createProcessBuilder(List<String> command); static String getStatsContent(VaadinService service); static String getIndexHtmlContent(VaadinService service); static String getStatsHash(VaadinService service); static String getStatsAssetsByChunkName(VaadinService service); static String getProjectFrontendDir(
            DeploymentConfiguration configuration); static boolean isWebpackConfigFile(File file); static String getUnixRelativePath(Path source, Path target); static String getUnixPath(Path source); static FallbackChunk readFallbackChunk(JsonObject object); static FrontendVersion parseFrontendVersion(String versionString); static File getVaadinHomeDirectory(); static String commandToString(String baseDir, List<String> command); @SuppressWarnings("squid:S106") static void console(String format, Object message); static final String PROJECT_BASEDIR; static final String DEFAULT_NODE_DIR; static final String NODE_MODULES; static final String FRONTEND; static final String DEFAULT_FRONTEND_DIR; static final String WEBPACK_CONFIG; static final String WEBPACK_GENERATED; static final String TARGET; static final String FLOW_NPM_PACKAGE_NAME; static final String FORM_NPM_PACKAGE_NAME; static final String DEFAULT_FLOW_RESOURCES_FOLDER; @Deprecated
    static final String DEAULT_FLOW_RESOURCES_FOLDER; static final String DEFAULT_GENERATED_DIR; static final String IMPORTS_NAME; static final String IMPORTS_D_TS_NAME; static final String INDEX_HTML; static final String INDEX_TS; static final String INDEX_JS; static final String DEFAULT_CONNECT_JAVA_SOURCE_FOLDER; static final String DEFAULT_CONNECT_APPLICATION_PROPERTIES; static final String DEFAULT_CONNECT_OPENAPI_JSON_FILE; static final String DEFAULT_CONNECT_GENERATED_TS_DIR; static final String FALLBACK_IMPORTS_NAME; static final String PARAM_GENERATED_DIR; static final String PARAM_FRONTEND_DIR; static final String PARAM_IGNORE_VERSION_CHECKS; static final String WEBPACK_PREFIX_ALIAS; static final String TOKEN_FILE; static final String CHUNKS; static final String FALLBACK; static final String EXPORT_CHUNK; static final String CSS_IMPORTS; static final String JS_MODULES; static final String PARAM_TOKEN_FILE; static final String INSTALL_NODE_LOCALLY; static final String DISABLE_CHECK; static final String YELLOW; static final String RED; static final String GREEN; static final String BRIGHT_BLUE; }
@Test public synchronized void getVaadinHomeDirectory_noVaadinFolder_folderIsCreated() throws IOException { String originalHome = System.getProperty(USER_HOME); File home = tmpDir.newFolder(); System.setProperty(USER_HOME, home.getPath()); try { File vaadinDir = new File(home, ".vaadin"); if (vaadinDir.exists()) { FileUtils.deleteDirectory(vaadinDir); } File vaadinHomeDirectory = FrontendUtils.getVaadinHomeDirectory(); Assert.assertTrue(vaadinHomeDirectory.exists()); Assert.assertTrue(vaadinHomeDirectory.isDirectory()); vaadinHomeDirectory = FrontendUtils.getVaadinHomeDirectory(); Assert.assertEquals(".vaadin", vaadinDir.getName()); } finally { System.setProperty(USER_HOME, originalHome); } }
@Test(expected = IllegalStateException.class) public synchronized void getVaadinHomeDirectory_vaadinFolderIsAFile_throws() throws IOException { String originalHome = System.getProperty(USER_HOME); File home = tmpDir.newFolder(); System.setProperty(USER_HOME, home.getPath()); try { File vaadinDir = new File(home, ".vaadin"); if (vaadinDir.exists()) { FileUtils.deleteDirectory(vaadinDir); } vaadinDir.createNewFile(); FrontendUtils.getVaadinHomeDirectory(); } finally { System.setProperty(USER_HOME, originalHome); } }