<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>\r
<classpathentry kind="src" path="src"/>\r
<classpathentry kind="src" path="test/src"/>\r
- <classpathentry kind="src" path="test/resources"/>\r
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>\r
<classpathentry kind="output" path="bin"/>\r
</classpath>\r
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Require-Bundle: org.tizen.common;bundle-version="2.0.0",
org.tizen.common.builder;bundle-version="2.0.0"
+Import-Package: org.tizen.web.builder,
+ org.tizen.web.builder.exception,
+ org.tizen.web.common
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
+<!-- WARNING: Eclipse auto-generated file.\r
+ Any modifications will be overwritten.\r
+ To include a user specific buildfile here, simply create one in the same\r
+ directory with the processing instruction <?eclipse.ant.import?>\r
+ as the first entry and export the buildfile again. -->\r
+<project basedir="." default="build" name="org.tizen.ncli.ide">\r
+ <property environment="env"/>\r
+ <property name="ECLIPSE_HOME" value="C:/tizen-sdk/ide"/>\r
+ <property name="junit.output.dir" value="junit"/>\r
+ <property name="debuglevel" value="source,lines,vars"/>\r
+ <property name="target" value="1.6"/>\r
+ <property name="source" value="1.6"/>\r
+ <path id="Plug-in Dependencies.libraryclasspath">\r
+ <pathelement location="../../../org.tizen.common"/>\r
+ <pathelement location="../../../org.tizen.common.builder"/>\r
+ <pathelement location="${ECLIPSE_HOME}/plugins/org.junit_4.8.2.v4_8_2_v20110321-1705/junit.jar"/>\r
+ </path>\r
+ <path id="JUnit 4.libraryclasspath">\r
+ <pathelement location="../../../devtools/eclipse-jee-kepler-SR1/plugins/org.junit_4.11.0.v201303080030/junit.jar"/>\r
+ <pathelement location="../../../devtools/eclipse-jee-kepler-SR1/plugins/org.hamcrest.core_1.3.0.v201303031735.jar"/>\r
+ </path>\r
+ <path id="org.tizen.ncli.ide.classpath">\r
+ <pathelement location="lib/args4j-2.0.24-SNAPSHOT.jar"/>\r
+ <path refid="Plug-in Dependencies.libraryclasspath"/>\r
+ <pathelement location="bin"/>\r
+ <path refid="JUnit 4.libraryclasspath"/>\r
+ </path>\r
+ <target name="init">\r
+ <mkdir dir="bin"/>\r
+ <copy includeemptydirs="false" todir="bin">\r
+ <fileset dir="src">\r
+ <exclude name="**/*.launch"/>\r
+ <exclude name="**/*.java"/>\r
+ </fileset>\r
+ </copy>\r
+ <copy includeemptydirs="false" todir="bin">\r
+ <fileset dir="test/src">\r
+ <exclude name="**/*.launch"/>\r
+ <exclude name="**/*.java"/>\r
+ </fileset>\r
+ </copy>\r
+ <copy includeemptydirs="false" todir="bin">\r
+ <fileset dir="test/resources">\r
+ <exclude name="**/*.launch"/>\r
+ <exclude name="**/*.java"/>\r
+ </fileset>\r
+ </copy>\r
+ </target>\r
+ <target name="clean">\r
+ <delete dir="bin"/>\r
+ </target>\r
+ <target depends="clean" name="cleanall"/>\r
+ <target depends="build-subprojects,build-project" name="build"/>\r
+ <target name="build-subprojects"/>\r
+ <target depends="init" name="build-project">\r
+ <echo message="${ant.project.name}: ${ant.file}"/>\r
+ <javac debug="true" debuglevel="${debuglevel}" destdir="bin" includeantruntime="false" source="${source}" target="${target}">\r
+ <src path="src"/>\r
+ <src path="test/src"/>\r
+ <src path="test/resources"/>\r
+ <classpath refid="org.tizen.ncli.ide.classpath"/>\r
+ </javac>\r
+ </target>\r
+ <!-- ================================= \r
+ target: jar \r
+ ================================= -->\r
+ <target name="jar" depends="build-project" description="make jar package">\r
+ <jar destfile="org.tizen.ncli.ide.jar" basedir="bin" >\r
+ \r
+ </jar>\r
+ </target>\r
+\r
+ <target description="Build all projects which reference this project. Useful to propagate changes." name="build-refprojects"/>\r
+ <target description="copy Eclipse compiler jars to ant lib directory" name="init-eclipse-compiler">\r
+ <copy todir="${ant.library.dir}">\r
+ <fileset dir="${ECLIPSE_HOME}/plugins" includes="org.eclipse.jdt.core_*.jar"/>\r
+ </copy>\r
+ <unzip dest="${ant.library.dir}">\r
+ <patternset includes="jdtCompilerAdapter.jar"/>\r
+ <fileset dir="${ECLIPSE_HOME}/plugins" includes="org.eclipse.jdt.core_*.jar"/>\r
+ </unzip>\r
+ </target>\r
+ <target description="compile project with Eclipse compiler" name="build-eclipse-compiler">\r
+ <property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>\r
+ <antcall target="build"/>\r
+ </target>\r
+ <target name="BuildWeb-main">\r
+ <java classname="org.tizen.ncli.ide.shell.Main" failonerror="true" fork="yes">\r
+ <arg line="build-web -- . -opt"/>\r
+ <classpath refid="org.tizen.ncli.ide.classpath"/>\r
+ </java>\r
+ </target>\r
+ <target name="BuildWebCLICommandTest">\r
+ <mkdir dir="${junit.output.dir}"/>\r
+ <junit fork="yes" printsummary="withOutAndErr">\r
+ <formatter type="xml"/>\r
+ <test name="org.tizen.ncli.ide.subcommands.BuildWebCLICommandTest" todir="${junit.output.dir}"/>\r
+ <classpath refid="org.tizen.ncli.ide.classpath"/>\r
+ </junit>\r
+ </target>\r
+ <target name="ConfigCLITest">\r
+ <mkdir dir="${junit.output.dir}"/>\r
+ <junit fork="yes" printsummary="withOutAndErr">\r
+ <formatter type="xml"/>\r
+ <test name="org.tizen.ncli.ide.shell.ConfigCLITest" todir="${junit.output.dir}"/>\r
+ <classpath refid="org.tizen.ncli.ide.classpath"/>\r
+ </junit>\r
+ </target>\r
+ <target name="ConfigCommandTest">\r
+ <mkdir dir="${junit.output.dir}"/>\r
+ <junit fork="yes" printsummary="withOutAndErr">\r
+ <formatter type="xml"/>\r
+ <test name="org.tizen.ncli.ide.subcommands.ConfigCommandTest" todir="${junit.output.dir}"/>\r
+ <classpath refid="org.tizen.ncli.ide.classpath"/>\r
+ </junit>\r
+ </target>\r
+ <target name="NCLITestResourceUtilTest">\r
+ <mkdir dir="${junit.output.dir}"/>\r
+ <junit fork="yes" printsummary="withOutAndErr">\r
+ <formatter type="xml"/>\r
+ <test name="org.tizen.ncli.ide.subcommands.NCLITestResourceUtilTest" todir="${junit.output.dir}"/>\r
+ <classpath refid="org.tizen.ncli.ide.classpath"/>\r
+ </junit>\r
+ </target>\r
+ <target name="junitreport">\r
+ <junitreport todir="${junit.output.dir}">\r
+ <fileset dir="${junit.output.dir}">\r
+ <include name="TEST-*.xml"/>\r
+ </fileset>\r
+ <report format="frames" todir="${junit.output.dir}"/>\r
+ </junitreport>\r
+ </target>\r
+</project>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!-- ====================================================================== \r
+ 2013. 10. 10. 오후 9:03:37 \r
+\r
+ org.tizen.ncli.ide \r
+ Ant build file for Tizen New CLI for IDE \r
+ \r
+ Harry Hyeongseok Heo <hyeongseok.heo@samsung.com \r
+ ====================================================================== -->\r
+<project name="org.tizen.ncli.ide" default="default">\r
+ <description>\r
+ \r
+ </description>\r
+\r
+ <!-- ================================= \r
+ target: default \r
+ ================================= -->\r
+ <target name="default" depends="depends" description="description">\r
+ \r
+ </target>\r
+\r
+ <!-- - - - - - - - - - - - - - - - - - \r
+ target: depends \r
+ - - - - - - - - - - - - - - - - - -->\r
+ <target name="depends">\r
+ </target>\r
+\r
+</project>\r
--- /dev/null
+@echo off\r
+set CLI_HOME=%1\r
+set CLI_NAME=%2\r
+set MAIN=%3\r
+set ARGS=%4\r
+\r
+set OPT_LOGGING=-Dlog4j.configuration=log4j.xml\r
+set OPT_PRG_NAME=-Dcli.name=%CLI_NAME%\r
+set LIB_PATH=%CLI_HOME%\lib\r
+\r
+set classpath=\r
+FOR /f "tokens=*" %%i IN ('dir %LIB_PATH% /B') DO ( call:CONCAT %LIB_PATH%\%%i )\r
+\r
+set READ_ARG="n"\r
+\r
+FOR %%W IN ( %* ) DO ( call:parseArg %%W )\r
+\r
+set OPT=%OPT_TRACE% %OPT_LOGGING% %OPT_PRG_NAME%\r
+set EXEC=java -cp %CLI_HOME%\conf;%classpath% %OPT% %MAIN% %ARGS%\r
+\r
+IF NOT "" == "%OPT_TRACE%" ( echo Command :%EXEC% )\r
+\r
+%EXEC%\r
+goto:eof\r
+\r
+:parseArg\r
+ IF "y" == %READ_ARG% goto SET_LOGGING\r
+\r
+:SECOND_STEP\r
+ IF "%~1" == "--log" goto SET_READY\r
+ IF "%~1" == "-l" goto SET_READY\r
+:END_STEP\r
+goto:eof\r
+\r
+:SET_LOGGING\r
+ set OPT_LOGGING=-Dlog4j.configuration=log4j-%~1.xml\r
+ IF "%~1" == "trace" set OPT_TRACE=-Dlog4j.debug=true\r
+ set READ_ARG="n"\r
+\r
+ goto SECOND_STEP\r
+\r
+:SET_READY\r
+ set READ_ARG="y"\r
+ goto END_STEP\r
+\r
+:CONCAT\r
+ set classpath=%classpath%%1;\r
import org.tizen.ncli.ide.CLIConstant;\r
\r
/**\r
- * This class loads Tizen configuration from the specified file <tt>.tizen-cli-config</tt> .\r
+ * This class loads Tizen configuration from the specified file named <tt>.tizen-cli-config</tt> .\r
* \r
* <p>Tizen configuration file could be located at two location. <br>\r
* First, global configuration file is located under the <tt>user home</tt> location.In Windows it would be C:\Users\accountName.\r
* <br>\r
* Second, local configuration file is located under the <tt>Tizen SDK tools path</tt>.<br>\r
* <br> \r
- * Make sure that local config will have high priority to global config if there is same key. \r
+ * And in case of there is not exist Tizen configuration file at loading , the file will be created automatically.<br>\r
+ * The last thing , make sure that local config will have high priority to global config if there is same key. \r
* @author Harry Hyeongseok Heo{@literal <hyeongseok.heo@samsung.com>} (S-core)\r
*/\r
public class NCLIConfigLoader implements Loader {\r
File file = getLocalConfigFile();\r
boolean isLocalConfExist = file.exists();\r
log.trace("isLocalConfExist:{}",isLocalConfExist);\r
+ localProp = new Properties();\r
if(isLocalConfExist) {\r
inStream = new FileInputStream(file);\r
- localProp = new Properties();\r
+ localProp.load(inStream);\r
+ }else {\r
+ log.info("Tizen CLI Local config file does not exist.");\r
+ file.createNewFile();\r
+ inStream = new FileInputStream(file);\r
localProp.load(inStream);\r
}\r
\r
\r
public static File getLocalConfigFile() {\r
String sdkToolPath = InstallPathConfig.getToolsPath();\r
- return new File(sdkToolPath+"/"+configFileName);\r
+ File ret = new File(sdkToolPath+"/"+configFileName); \r
+ return ret;\r
}\r
/**\r
* Load global configuration from <tt>USER HOME</tt>\r
inStream = new FileInputStream(file);\r
prop.load(inStream);\r
} else {\r
- log.info("Tizen CLI Global config file does not exist."); \r
+ log.info("Tizen CLI Global config file does not exist.");\r
+ file.createNewFile();\r
+ inStream = new FileInputStream(file);\r
+ prop.load(inStream);\r
}\r
}catch (FileNotFoundException e) {\r
//FIXME something to do\r
import org.kohsuke.args4j.Option;\r
import org.slf4j.Logger;\r
import org.slf4j.LoggerFactory;\r
-import org.tizen.ncli.ide.TizenCLIConfig;\r
-import org.tizen.ncli.ide.core.command.TizenCommand;\r
-import org.tizen.ncli.ide.subcommands.BuildWeb;\r
import org.tizen.ncli.ide.subcommands.BuildWebCLICommand;\r
+import org.tizen.ncli.ide.subcommands.BuildWebCLICommandData;\r
\r
\r
public class BuildWebCLI extends AbstractCLI{\r
command.setExcludeList(excludeList);\r
command.setTargetPath(targetPath);\r
\r
- BuildWeb runCommand = command.runCommand();\r
- \r
+ BuildWebCLICommandData commandData = command.runCommand();\r
\r
+ output.println("Build web project succeeded!");\r
+ output.println(commandData);\r
\r
}\r
\r
* @author Harry Hyeongseok Heo{@literal <hyeongseok.heo@samsung.com>} (S-core)\r
*/\r
abstract public class AbstractSubCommand<T> {\r
- protected final Logger logger = LoggerFactory.getLogger( getClass() );\r
+ protected final Logger log = LoggerFactory.getLogger( getClass() );\r
protected File targetPath;\r
\r
/**\r
+++ /dev/null
-/*\r
- * IDE\r
- *\r
- * Copyright (c) 2000 - 2013 Samsung Electronics Co., Ltd. All rights reserved.\r
- *\r
- * Contact:\r
- * Hyeongseok Heo <hyeongseok.heo@samsung.com>\r
- * Kangho Kim <kh5325.kim@samsung.com>\r
- * \r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- *\r
- * Contributors:\r
- * - S-Core Co., Ltd\r
- */\r
-package org.tizen.ncli.ide.subcommands;\r
-\r
-/**\r
- * @author Harry Hyeongseok Heo{@literal <hyeongseok.heo@samsung.com>} (S-core)\r
- *\r
- * \r
- */\r
-public class BuildWeb {\r
-\r
-}\r
*/\r
package org.tizen.ncli.ide.subcommands;\r
\r
+import java.io.File;\r
+import java.io.IOException;\r
+import java.util.ArrayList;\r
import java.util.List;\r
\r
+import org.tizen.common.FactoryWithArgument;\r
import org.tizen.common.builder.BuildProcess;\r
+import org.tizen.common.builder.Builder;\r
+import org.tizen.common.builder.Resource;\r
+import org.tizen.common.builder.ResourceLayer;\r
+import org.tizen.common.builder.core.CopyBuilder;\r
+import org.tizen.common.builder.exception.BuildException;\r
+import org.tizen.common.file.FileHandler;\r
+import org.tizen.common.file.Filter;\r
+import org.tizen.common.file.SimpleFileFilter;\r
+import org.tizen.common.file.StandardFileHandler;\r
+import org.tizen.common.file.VirtualFileHandler;\r
+import org.tizen.common.file.FileHandler.Attribute;\r
+import org.tizen.common.file.filter.WildCardFilter;\r
+import org.tizen.common.file.filter.WildCardFilterFactory;\r
+import org.tizen.common.util.FileUtil;\r
+import org.tizen.common.util.FilenameUtil;\r
+import org.tizen.common.util.OSChecker;\r
+import org.tizen.common.util.StringUtil;\r
+import org.tizen.web.builder.CssMinifyBuilder;\r
+import org.tizen.web.builder.HybridAppCLIBuilder;\r
+import org.tizen.web.builder.JSMinifyBuilder;\r
+import org.tizen.web.builder.UIFWBuilder;\r
+import org.tizen.web.builder.exception.MinifyException;\r
+import org.tizen.web.common.WebConstant;\r
\r
/**\r
* @author Harry Hyeongseok Heo{@literal <hyeongseok.heo@samsung.com>} (S-core)\r
+ * @param <BuildWebCLICommandData>\r
*\r
* \r
*/\r
-public class BuildWebCLICommand extends AbstractSubCommand<BuildWeb> {\r
- private boolean optimize;\r
- private boolean excludeUIFW;\r
- private List<String> excludeList;\r
- private String outputName;\r
-\r
- /* (non-Javadoc)\r
- * @see org.tizen.ncli.ide.subcommands.AbstractSubCommand#call()\r
+public class BuildWebCLICommand extends AbstractSubCommand<BuildWebCLICommandData> {\r
+ \r
+\r
+ private BuildWebCLICommandData data = new BuildWebCLICommandData();\r
+ //the current working directory that build process is executed\r
+ private String cwd = ".";\r
+ //the result directory name\r
+ private String output = ".buildResult";\r
+ private SimpleFileFilter filter = new SimpleFileFilter(true);\r
+ private FactoryWithArgument<Filter, String> filterFactory = new WildCardFilterFactory();\r
+ // file filter. If you want to exclude a directory, append '/*'\r
+ private static final String[] DEFAULT_EXCLUDES = {".build"+File.separator+"*"\r
+ , ".project"\r
+ , ".settings" + File.separator + "*"\r
+ , ".sdk_delta.info"\r
+ , "*.wgt"};\r
+ // excluding file list\r
+ private List<String> excludes = new ArrayList<String>();\r
+\r
+ /** \r
+ * Make build result from the <code>targetPath</code> to the <code>outputPath</code>.<br>\r
+ * If there is no targetPath specified , it will assume that current working directory as \r
+ * Build-web is executed with sequence like below. <br>\r
+ * <p>\r
+ * <li>Get the resources</li> \r
+ * <li> </li>\r
+ * \r
+ * </p> \r
*/\r
@Override\r
- protected BuildWeb call() {\r
- BuildProcess buildProcess = new BuildProcess();\r
- \r
-// buildProcess.build(resources);\r
- \r
+ protected BuildWebCLICommandData call() {\r
+ log.trace("BuildWeb command started ...");\r
+ initExcludes();\r
+ if (log.isTraceEnabled()) {\r
+ log.trace("BuildData: {}", data); \r
+ }\r
+ if (null != this.targetPath) {\r
+ // set CurrentWorkingDirectory (cwd) absolute path\r
+ String canonicalPath = null;\r
+ try {\r
+ canonicalPath = this.targetPath.getCanonicalPath(); \r
+ cwd = this.targetPath.getCanonicalPath();\r
+ log.trace("canonicalPath:{}", canonicalPath);\r
+ } catch (IOException e) {\r
+ // TODO Auto-generated catch block\r
+ e.printStackTrace();\r
+ }\r
+ }\r
+\r
+ // TODO implement build process with BuildProcess\r
+\r
+\r
+ try {\r
+ // set output path (absolute)\r
+ if( !StringUtil.isEmpty(data.getOutputName())) {\r
+ this.output = convertPath(data.getOutputName());\r
+ } else {\r
+ this.output = cwd+File.separator+this.output;\r
+ }\r
\r
+ // If output path exist, the path will be recreated.\r
+ // Set exclude file list\r
+\r
+ // Set start layer\r
+ // Get resource list for build\r
+ // Generate web builders to build process\\r
+\r
+ BuildProcess buildProcess = new BuildProcess();\r
+\r
+ // Set start layer\r
+ FileHandler fh = new StandardFileHandler();\r
+ fh.setCurrentWorkingDirectory(cwd);\r
+ ResourceLayer startLayer = new ResourceLayer("Initial Resource Layer",\r
+ fh);\r
+\r
+ log.debug("=== OUTPUT === {}",this.output);\r
+ log.trace("TEST OUTPUT:"+this.output);\r
+ // Get resource list for build\r
+ Resource[] resources = null;\r
+ resources = getBuildResources(startLayer);\r
+ log.trace("==!! Get Build Resources !!==");\r
+ if (null != resources) {\r
+ log.trace("Total resource count: {}", resources.length);\r
+\r
+ // Generate web builders to build process\r
+ }\r
+\r
+ generateAllBuilders(buildProcess, startLayer);\r
+\r
+ if (buildProcess.getLastBuilder() != null) {\r
+ log.debug("start build process");\r
+ buildProcess.build(resources);\r
+\r
+ // check succeeding status.\r
+ checkProcessComplete(buildProcess);\r
+ }\r
+\r
+ } catch (MinifyException e) {\r
+ StringBuffer msg = new StringBuffer();\r
+ msg.append("Optimization failed.\n");\r
+ msg.append("Error: " + e.getPath() + "(" + e.getLineNumber()\r
+ + "): " + e.getLineSource() + "\n");\r
+ msg.append("Cause: " + e.getMessage() + "\n");\r
+ // TODO print out Exception message\r
+ // getPrompter().notify(msg.toString());\r
+ e.printStackTrace();\r
+ } catch (IOException e) {\r
+ e.printStackTrace();\r
+ } catch (BuildException e) {\r
+ e.printStackTrace();\r
+ } catch (Exception e) {\r
+ e.printStackTrace();\r
+ }\r
+\r
+ return data;\r
+ }\r
+ \r
+ /**\r
+ * get resource list\r
+ * @param cwd root path located resources. It means working path. means current path.\r
+ * @param relativeSrcDir relative directory including resources.\r
+ * @param layer {@link ResourceLayer} about resource\r
+ * @throws IOException\r
+ */\r
+ private List<Resource> getResources(String cwd, String relativeSrcDir, ResourceLayer layer) throws IOException {\r
+ List<Resource> resources = new ArrayList<Resource>();\r
+ List<File> files = null;\r
+ String absoluteDir = cwd+ File.separator + relativeSrcDir;\r
+ files = FileUtil.findFiles(new File(absoluteDir), ".*", true);\r
+\r
+ for (File file : files) {\r
+ String fileRelativePath = FilenameUtil.getRelativePath(cwd, file.getCanonicalPath());\r
+\r
+ if (!FilenameUtil.equals(file.getCanonicalPath(), this.cwd)\r
+ && !filter.accept(cwd, fileRelativePath)) {\r
+ log.debug("Ignore {}", fileRelativePath);\r
+ continue;\r
+ }\r
+\r
+ log.debug("resource path : {}", fileRelativePath);\r
+ Resource resource = new Resource(layer, fileRelativePath);\r
+\r
+ resources.add(resource);\r
+ }\r
+ return resources;\r
+ }\r
+ \r
+ /**\r
+ * Get resource list for build.\r
+ * @param cmdLine\r
+ * @param layer parent layer\r
+ * @param includes Include resource list. If you want to add all resources located in input path, set this parameter to null.\r
+ * If you set this parameter, another resources will not be added to list.\r
+ * @param excludes Exclude resource list. If you want to exclude resources, set this parameter using regular expression.\r
+ * It should be set regular expression about file element.\r
+ * @return\r
+ * @throws IOException\r
+ */\r
+ private Resource[] getBuildResources( ResourceLayer layer ) throws IOException {\r
+ List<Resource> resources = new ArrayList<Resource>();\r
+// setIncludes(includes);\r
+// setExcludes(excludes);\r
+\r
+ String cwd = layer.getFileHandler().getCurrentWorkingDirectory();\r
+ resources.addAll(getResources(cwd\r
+ , FilenameUtil.getRelativePath(cwd, cwd)\r
+ , layer));\r
+\r
+ //reference project \r
+ /*if (cmdLine.hasOption(OPT_NAME_REFERENCE_PROJECT)) {\r
+ FileHandler refFh = new StandardFileHandler();\r
+ ResourceLayer referenceLayer = new ResourceLayer(HybridAppCLIBuilder.RESOURCE_LAYER_REFERENCE_NAME\r
+ , refFh);\r
+ layer.setParent(referenceLayer);\r
+ String refPath = convertPath(cmdLine.getOptionValue(OPT_NAME_REFERENCE_PROJECT));\r
+ refFh.setCurrentWorkingDirectory(refPath);\r
+\r
+ resources.addAll(getResources(refPath\r
+ , FilenameUtil.getRelativePath(refPath, refPath)\r
+ , referenceLayer));\r
+ }*/\r
+\r
+ return resources.toArray(new Resource[resources.size()]);\r
+ }\r
+ \r
+ \r
+ /**\r
+ * Generate builders to {@link BuildProcess}.\r
+ * @param buildProcess\r
+ * @param parentLayer\r
+ * @throws IOException\r
+ */\r
+ public void generateAllBuilders( BuildProcess buildProcess\r
+ , ResourceLayer parentLayer) throws IOException {\r
+\r
+ FileHandler fh = new VirtualFileHandler();\r
+ fh.setCurrentWorkingDirectory(parentLayer.getFileHandler().getCurrentWorkingDirectory());\r
+\r
+ if (data.isExcludeUIFW()) {\r
+ addUIFWBuilder(true ,true\r
+ , buildProcess\r
+ , getLastResourceLayer(buildProcess, parentLayer)\r
+ , fh);\r
+ }\r
+\r
+ if (data.hasReference()) {\r
+ addHybridBuilder( buildProcess\r
+ , getLastResourceLayer(buildProcess, parentLayer)\r
+ , fh);\r
+ }\r
+\r
+ if (data.isOptimize()) {\r
+ addOptimizingBuilders(buildProcess\r
+ , getLastResourceLayer(buildProcess, parentLayer)\r
+ , fh);\r
+ }\r
+\r
+ addLastbuilder(buildProcess, getLastResourceLayer(buildProcess, parentLayer));\r
+ }\r
+ \r
+ \r
+ /**\r
+ * Add optimizing builders to buildProcess.\r
+ * @param buildProcess\r
+ * @param parentLayer\r
+ */\r
+ private void addOptimizingBuilders(BuildProcess buildProcess, ResourceLayer parentLayer, FileHandler fh) {\r
+ if (buildProcess == null) {\r
+ return;\r
+ }\r
+\r
+ // add js minify builder\r
+ ResourceLayer jsMinLayer = new ResourceLayer(JSMinifyBuilder.RESOURCE_LAYER_NAME\r
+ , parentLayer\r
+ , fh);\r
+ JSMinifyBuilder jsMin = new JSMinifyBuilder(jsMinLayer);\r
+ buildProcess.addBuilder(jsMin);\r
+ \r
+ // add css minify builder\r
+ ResourceLayer cssMinLayer = new ResourceLayer(CssMinifyBuilder.RESOURCE_LAYER_NAME\r
+ , jsMinLayer\r
+ , fh);\r
+ CssMinifyBuilder cssMin = new CssMinifyBuilder(cssMinLayer);\r
+ buildProcess.addBuilder(cssMin);\r
+ }\r
+ \r
+ /**\r
+ * Add hybrid builder to buildProcess. It will be used to build including reference project.\r
+ * @param cmdLine\r
+ * @param buildProcess\r
+ * @param lastLayer\r
+ * @throws IOException\r
+ */\r
+ private void addHybridBuilder(BuildProcess buildProcess, ResourceLayer lastLayer, FileHandler fh) throws IOException {\r
+ ResourceLayer layer = new ResourceLayer(HybridAppCLIBuilder.RESOURCE_LAYER_NAME\r
+ , lastLayer\r
+ , fh);\r
+ \r
+ String refPath = ""; //TODO add HybridOption! convertPath(cmdLine.getOptionValue(OPT_NAME_REFERENCE_PROJECT));\r
+ \r
+ HybridAppCLIBuilder hybridAppBuilder = new HybridAppCLIBuilder( layer, refPath );\r
+ buildProcess.addBuilder(hybridAppBuilder);\r
+ }\r
+\r
+ /**\r
+ * get last resource layer located in buildProcess.\r
+ * @param buildProcess\r
+ * @param defaultLayer\r
+ * @return\r
+ */\r
+ private ResourceLayer getLastResourceLayer(BuildProcess buildProcess, ResourceLayer defaultLayer) {\r
+ ResourceLayer lastLayer = buildProcess.getLastResourceLayer();\r
+ return (lastLayer != null) ? lastLayer : defaultLayer;\r
+ }\r
+\r
+ /**\r
+ * Add UI framework builder to buildProcess.\r
+ * @param isExclude If set true, Tizen web UI framework library will be excluded output path.\r
+ * Application will be used target's Tizen web UI framework library.\r
+ * @param useMin If 'isExclude' parameter set true and this parameter set true,\r
+ * application will be used target's minified Tizen web UI framework library.\r
+ * Or, application will be used target's original Tizen web UI framework library.\r
+ * @param buildProcess\r
+ * @param parentLayer\r
+ */\r
+ private void addUIFWBuilder(boolean isExclude, boolean useMin, BuildProcess buildProcess,\r
+ ResourceLayer parentLayer, FileHandler fh) {\r
+ ResourceLayer layer = new ResourceLayer(UIFWBuilder.RESOURCE_LAYER_NAME\r
+ , parentLayer\r
+ , fh);\r
+ UIFWBuilder uifwBuilder = new UIFWBuilder(isExclude, layer);\r
+ uifwBuilder.setUseMin(useMin);\r
+\r
+ buildProcess.addBuilder(uifwBuilder);\r
+ }\r
+\r
+ /**\r
+ * Add builder that write resources to file system to buildProcess.\r
+ * @param buildProcess\r
+ * @param parentLayer\r
+ */\r
+ private void addLastbuilder(BuildProcess buildProcess, ResourceLayer parentLayer) {\r
+ // add file output builder\r
+ FileHandler fh = new StandardFileHandler();\r
+ fh.setCurrentWorkingDirectory(parentLayer.getFileHandler().getCurrentWorkingDirectory());\r
+ ResourceLayer toFSLayer = new ResourceLayer(CopyBuilder.RESOURCE_LAYER_NAME\r
+ , parentLayer\r
+ , fh);\r
+ CopyBuilder toFSBuilder = new CopyBuilder(FilenameUtil.getRelativePath(cwd, output), toFSLayer);\r
+ buildProcess.addBuilder(toFSBuilder);\r
+ }\r
+ \r
+ /**\r
+ * Check whether this process have no problem.\r
+ * If have problems, BuildException will be occurred.\r
+ * \r
+ * @param buildProcess\r
+ * @throws BuildException\r
+ */\r
+ protected void checkProcessComplete(BuildProcess buildProcess) throws Exception {\r
+ // Check hybrid structure. If a manifest file and a binary file are not found, this is a failure.\r
+ try {\r
+ Builder builder = buildProcess.getBuilder( HybridAppCLIBuilder.RESOURCE_LAYER_NAME );\r
+ if ( builder != null ) {\r
+ HybridAppCLIBuilder hybridBuilder = (HybridAppCLIBuilder) builder;\r
+ if ( ! hybridBuilder.isManifestFound() ) {\r
+ throw new IOException( HybridAppCLIBuilder.ERROR_MANIFEST_NOT_FOUND );\r
+ }\r
+ if ( ! hybridBuilder.isBinaryFound() ) {\r
+ throw new IOException( HybridAppCLIBuilder.ERROR_BINARY_NOT_FOUND );\r
+ }\r
+ }\r
+ } catch( IOException e ) {\r
+ throw new Exception( e );\r
+ }\r
+ \r
+ //TODO Notification ?? getPrompter().notify( MessageFormat.format( SUCCEED_MSG, this.output ) );\r
+ }\r
+ \r
+ /**\r
+ * Convert <code>path</code> to canonical path\r
+ * \r
+ * @param path relative or abstract path\r
+ * \r
+ * @return canonical path\r
+ * \r
+ * @throws IOException If file system deny request\r
+ */\r
+ protected\r
+ String\r
+ convertPath(\r
+ final String path\r
+ )\r
+ throws IOException\r
+ {\r
+ String target = path;\r
+ if ((!OSChecker.isWindows())\r
+ && target.startsWith("~"+File.separator)) {\r
+ target = path.replaceFirst("~", System.getProperty("user.home"));\r
+ }\r
+ final FileHandler fileHandler = new StandardFileHandler();\r
+ return (String) fileHandler.get( target, Attribute.PATH );\r
+ }\r
+ \r
+ private void initExcludes() {\r
+ this.excludes.clear();\r
+\r
+ for (String exclude : DEFAULT_EXCLUDES) {\r
+ this.excludes.add(exclude);\r
+ filter.addExcludes(filterFactory.create(exclude));\r
+ }\r
+\r
+ List<String> excludeList = data.getExcludeList();\r
+ for (String exclude : excludeList) {\r
+ this.excludes.add(exclude);\r
+ filter.addExcludes(filterFactory.create(exclude));\r
+ }\r
+\r
+ if (data.isExcludeUIFW()) {\r
+ this.excludes.add(WebConstant.TIZEN_WEB_UI_FRAMWORK_LIBRARY_DIRECTORY+File.separator+"*");\r
+ filter.addExcludes(filterFactory.create(WebConstant.TIZEN_WEB_UI_FRAMWORK_LIBRARY_DIRECTORY+File.separator+"*"));\r
+ }\r
+ }\r
+ \r
+ \r
+ \r
+ \r
+ \r
+ //======================================================== END\r
+\r
+ private void printOptions() {\r
+ // TODO Auto-generated method stub\r
\r
- return null;\r
}\r
\r
public void setOptimize(boolean optimize) {\r
- this.optimize = optimize;\r
+ this.data.setOptimize(optimize);\r
}\r
\r
public void setOutputName(String outputName) {\r
- this.outputName = outputName;\r
+ this.data.setOutputName(outputName);\r
}\r
\r
public void setExcludeUIFW(boolean excludeUIFW) {\r
- this.excludeUIFW = excludeUIFW;\r
+ this.data.setExcludeUIFW(excludeUIFW);\r
}\r
\r
public void setExcludeList(List<String> excludeList) {\r
- this.excludeList = excludeList;\r
+ this.data.setExcludeList(excludeList);\r
+ }\r
+ \r
+ @Override\r
+ public void setTargetPath(File targetPath) {\r
+ this.data.setTargetPath(targetPath);\r
+ }\r
+\r
+ public void setReferences(File...refs) {\r
+ this.data.setReferences(refs);\r
}\r
\r
}\r
--- /dev/null
+package org.tizen.ncli.ide.subcommands;\r
+\r
+import java.io.File;\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+\r
+public class BuildWebCLICommandData {\r
+\r
+ @Override\r
+ public String toString() {\r
+ StringBuilder builder = new StringBuilder();\r
+ builder.append("BuildWebCLICommandData [optimize=");\r
+ builder.append(optimize);\r
+ builder.append(", excludeUIFW=");\r
+ builder.append(excludeUIFW);\r
+ builder.append(", excludeList=");\r
+ builder.append(excludeList);\r
+ builder.append(", outputName=");\r
+ builder.append(outputName);\r
+ builder.append(", targetPath=");\r
+ builder.append(targetPath);\r
+ builder.append("]");\r
+ return builder.toString();\r
+ }\r
+\r
+ private boolean optimize;\r
+ private boolean excludeUIFW;\r
+ private List<String> excludeList = new ArrayList<String>();\r
+ private String outputName;\r
+ private File targetPath;\r
+ private File[] refs;\r
+\r
+ public BuildWebCLICommandData() {\r
+ }\r
+\r
+ public boolean isOptimize() {\r
+ return optimize;\r
+ }\r
+\r
+ public void setOptimize(boolean optimize) {\r
+ this.optimize = optimize;\r
+ }\r
+\r
+ public boolean isExcludeUIFW() {\r
+ return excludeUIFW;\r
+ }\r
+\r
+ public void setExcludeUIFW(boolean excludeUIFW) {\r
+ this.excludeUIFW = excludeUIFW;\r
+ }\r
+\r
+ public List<String> getExcludeList() {\r
+ return excludeList;\r
+ }\r
+\r
+ public void setExcludeList(List<String> excludeList) {\r
+ this.excludeList = excludeList;\r
+ }\r
+\r
+ public String getOutputName() {\r
+ return outputName;\r
+ }\r
+\r
+ public void setOutputName(String outputName) {\r
+ this.outputName = outputName;\r
+ }\r
+\r
+ public void setTargetPath(File targetPath) {\r
+ this.targetPath = targetPath;\r
+\r
+ }\r
+ \r
+ public void setReferences(File...refs) {\r
+ this.refs = refs;\r
+ }\r
+\r
+ public boolean hasReference() {\r
+ if( null != this.refs && this.refs.length > 0) {\r
+ return true;\r
+ }else {\r
+ return false;\r
+ }\r
+ }\r
+}
\ No newline at end of file
import java.util.Properties;\r
import java.util.Set;\r
\r
+import org.tizen.common.config.Preference;\r
import org.tizen.common.util.Assert;\r
import org.tizen.common.util.IOUtil;\r
+import org.tizen.ncli.ide.CLIConstant;\r
import org.tizen.ncli.ide.config.CLIConfig;\r
import org.tizen.ncli.ide.core.config.NCLIConfigLoader;\r
+import org.tizen.ncli.ide.core.config.TizenCLIConfigProvider;\r
\r
/**\r
* This class is for 'cli-config' command processing.\r
*/\r
@Override\r
public CLIConfig call() {\r
- CLIConfig cliConfig = new CLIConfig();\r
if(list) {\r
- return cliConfig;\r
+ return new CLIConfig();\r
}else if(global){\r
- //global config setting\r
- logger.trace("global config set call() - {}",properties);\r
- \r
+ log.trace("global config set call() - {}",properties);\r
File file = NCLIConfigLoader.getGlobalConfigFile();\r
- //Write global config file\r
Properties load = NCLIConfigLoader.loadGlobalConf();;\r
writeProperties2File(file, load);\r
+ Preference.register(CLIConstant.TIZEN_CLI_GLOBAL_KEY, new TizenCLIConfigProvider(NCLIConfigLoader.loadGlobalConf()));\r
}else {\r
- //local config setting\r
- logger.trace("local config set call() - {}",properties);\r
- \r
+ log.trace("local config set call() - {}",properties);\r
File file = NCLIConfigLoader.getLocalConfigFile();\r
- //Write local config file\r
Properties load = NCLIConfigLoader.loadLocalConf();;\r
- writeProperties2File(file, load);\r
+ if( writeProperties2File(file, load) ) {\r
+ Preference.register(CLIConstant.TIZEN_CLI_LOCAL_KEY, new TizenCLIConfigProvider(NCLIConfigLoader.loadLocalConf()));\r
+ }else {\r
+ log.error("Fail to write configuration file!");\r
+ }\r
}\r
- \r
- return cliConfig;\r
+ return new CLIConfig();\r
}\r
\r
- private void writeProperties2File(File file, Properties load) {\r
+ private boolean writeProperties2File(File file, Properties load) {\r
Assert.notNull(file, "There is no file to write.File is Null!");\r
Assert.notNull(load, "There is no properties to store.");\r
- Set<String> keySet = this.properties.keySet();\r
- for (String key : keySet) {\r
- String value = properties.get(key);\r
- load.setProperty(key, value);\r
- logger.trace("key :{} , value :{}",key,value);\r
- }\r
+ \r
+ updateProperties(load);\r
+ \r
OutputStream ous = null;\r
try {\r
ous = new FileOutputStream(file); \r
load.store(ous, "This is generated by Tizen CLI!");\r
} catch (FileNotFoundException e) {\r
- // TODO Auto-generated catch block\r
- e.printStackTrace();\r
- } catch (IOException e) {\r
- // TODO Auto-generated catch block\r
e.printStackTrace();\r
+ return false;\r
+ } catch (IOException ie) {\r
+ ie.printStackTrace();\r
+ return false;\r
} finally {\r
IOUtil.tryClose(ous);\r
}\r
+ return true;\r
+ }\r
+\r
+ private void updateProperties(Properties load) {\r
+ Set<String> keySet = this.properties.keySet();\r
+ for (String key : keySet) {\r
+ String value = properties.get(key);\r
+ load.setProperty(key, value);\r
+ log.trace("key :{} , value :{}",key,value);\r
+ }\r
}\r
\r
}\r
+++ /dev/null
-security.store.path=default\r
+++ /dev/null
-global.key1=This is global value1\r
-global.key2=This is global value2\r
-global.key1.subkey1=This is global subkey value1\r
+++ /dev/null
-global.key1=This is local value1\r
-local.key2=This is global value2\r
-local.key1.subkey1=This is local subkey value1\r
--- /dev/null
+/*\r
+ * IDE\r
+ *\r
+ * Copyright (c) 2000 - 2013 Samsung Electronics Co., Ltd. All rights reserved.\r
+ *\r
+ * Contact:\r
+ * Hyeongseok Heo <hyeongseok.heo@samsung.com>\r
+ * Kangho Kim <kh5325.kim@samsung.com>\r
+ * \r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ *\r
+ * Contributors:\r
+ * - S-Core Co., Ltd\r
+ */\r
+package org.tizen.ncli.ide.core.config;\r
+\r
+import static org.junit.Assert.assertEquals;\r
+import static org.junit.Assert.assertNotNull;\r
+import static org.powermock.api.mockito.PowerMockito.mock;\r
+import static org.powermock.api.mockito.PowerMockito.mockStatic;\r
+import static org.powermock.api.mockito.PowerMockito.when;\r
+import static org.powermock.api.mockito.PowerMockito.whenNew;\r
+\r
+import java.io.File;\r
+import java.io.FileInputStream;\r
+import java.util.Properties;\r
+\r
+import org.junit.Before;\r
+import org.junit.Test;\r
+import org.junit.runner.RunWith;\r
+import org.powermock.core.classloader.annotations.PrepareForTest;\r
+import org.powermock.modules.junit4.PowerMockRunner;\r
+import org.tizen.common.core.application.InstallPathConfig;\r
+\r
+\r
+\r
+/**\r
+ * @author Harry Hyeongseok Heo{@literal <hyeongseok.heo@samsung.com>} (S-core)\r
+ *\r
+ * \r
+ */\r
+//@PowerMockIgnore({ "org.apache.log4j.*", "org.slf4j.Logger" })\r
+@RunWith(PowerMockRunner.class)\r
+@PrepareForTest({ InstallPathConfig.class ,NCLIConfigLoader.class })\r
+public class NCLIConfigLoaderTest {\r
+ private static final String TIZEN_CLI_CONFIG = ".tizen-cli-config";\r
+ private static final String HOME_USER = "/home/user/";\r
+ private static final String TIZEN_SDK_TOOLS = "/tizen-sdk/tools";\r
+\r
+ @Before\r
+ public void setUp() {\r
+ mockStatic(InstallPathConfig.class);\r
+ when(InstallPathConfig.getToolsPath()).thenReturn(TIZEN_SDK_TOOLS);\r
+ \r
+ mockStatic(System.class);\r
+ when(System.getProperty("user.home")).thenReturn(HOME_USER);\r
+ \r
+ }\r
+\r
+ /**\r
+ * Test method for {@link org.tizen.ncli.ide.core.config.NCLIConfigLoader#loadLocalConf()}.\r
+ * @throws Exception \r
+ */\r
+ @Test\r
+ public void testLoadLocalConf() throws Exception {\r
+ File mockFile = mock(File.class);\r
+ whenNew(File.class).withAnyArguments().thenReturn(mockFile);\r
+ when(mockFile.exists()).thenReturn(true);\r
+ \r
+ FileInputStream mockStream = mock(FileInputStream.class);\r
+ whenNew(FileInputStream.class).withArguments(mockFile).thenReturn(mockStream);\r
+ \r
+ Properties loadLocalConf = NCLIConfigLoader.loadLocalConf();\r
+ \r
+ assertNotNull(loadLocalConf);\r
+ }\r
+\r
+ /**\r
+ * Test method for {@link org.tizen.ncli.ide.core.config.NCLIConfigLoader#getLocalConfigFile()}.\r
+ * @throws Exception \r
+ */\r
+ @Test\r
+ public void testGetLocalConfigFile() throws Exception {\r
+ File mockFile = mock(File.class);\r
+ whenNew(File.class).withArguments(TIZEN_SDK_TOOLS+"/"+TIZEN_CLI_CONFIG).thenReturn(mockFile);\r
+ when(mockFile.exists()).thenReturn(true);\r
+ when(mockFile.getParent()).thenReturn(TIZEN_SDK_TOOLS);\r
+ when(mockFile.getName()).thenReturn(TIZEN_CLI_CONFIG);\r
+ \r
+ \r
+ File localConfigFile = NCLIConfigLoader.getLocalConfigFile();\r
+ assertEquals(TIZEN_SDK_TOOLS, localConfigFile.getParent());\r
+ assertEquals(TIZEN_CLI_CONFIG, localConfigFile.getName());\r
+ }\r
+\r
+ /**\r
+ * Test method for {@link org.tizen.ncli.ide.core.config.NCLIConfigLoader#loadGlobalConf()}.\r
+ * @throws Exception \r
+ */\r
+ @Test\r
+ public void testLoadGlobalConf() throws Exception {\r
+ File mockFile = mock(File.class);\r
+ whenNew(File.class).withAnyArguments().thenReturn(mockFile);\r
+ when(mockFile.exists()).thenReturn(true);\r
+ \r
+ FileInputStream mockStream = mock(FileInputStream.class);\r
+ whenNew(FileInputStream.class).withArguments(mockFile).thenReturn(mockStream);\r
+ \r
+ Properties loadGlobalConf = NCLIConfigLoader.loadGlobalConf();\r
+ assertNotNull(loadGlobalConf);\r
+ \r
+ }\r
+\r
+ /**\r
+ * Test method for {@link org.tizen.ncli.ide.core.config.NCLIConfigLoader#getGlobalConfigFile()}.\r
+ * @throws Exception \r
+ */\r
+ @Test\r
+ public void testGetGlobalConfigFile() throws Exception {\r
+ File mockFile = mock(File.class);\r
+ whenNew(File.class).withAnyArguments().thenReturn(mockFile);\r
+ when(mockFile.exists()).thenReturn(true);\r
+ when(mockFile.getParent()).thenReturn(HOME_USER);\r
+ when(mockFile.getName()).thenReturn(TIZEN_CLI_CONFIG);\r
+ \r
+ \r
+ File globalConfigFile = NCLIConfigLoader.getGlobalConfigFile();\r
+ assertEquals(mockFile.getParent(), globalConfigFile.getParent());\r
+ assertEquals(TIZEN_CLI_CONFIG, globalConfigFile.getName());\r
+ }\r
+\r
+}\r
--- /dev/null
+/*\r
+ * IDE\r
+ *\r
+ * Copyright (c) 2000 - 2013 Samsung Electronics Co., Ltd. All rights reserved.\r
+ *\r
+ * Contact:\r
+ * Hyeongseok Heo <hyeongseok.heo@samsung.com>\r
+ * Kangho Kim <kh5325.kim@samsung.com>\r
+ * \r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ *\r
+ * Contributors:\r
+ * - S-Core Co., Ltd\r
+ */\r
+package org.tizen.ncli.ide.subcommands;\r
+\r
+import static org.junit.Assert.*;\r
+\r
+import java.io.File;\r
+\r
+import org.junit.AfterClass;\r
+import org.junit.BeforeClass;\r
+import org.junit.Test;\r
+import org.junit.runner.RunWith;\r
+import org.powermock.core.classloader.annotations.PowerMockIgnore;\r
+import org.powermock.core.classloader.annotations.PrepareForTest;\r
+import org.powermock.modules.junit4.PowerMockRunner;\r
+import org.tizen.common.util.FileUtil;\r
+import org.tizen.ncli.ide.core.config.TizenCLIConfigProvider;\r
+\r
+import static org.junit.Assert.assertEquals;\r
+import static org.junit.Assert.assertNotNull;\r
+import static org.junit.Assert.assertTrue;\r
+import static org.powermock.api.mockito.PowerMockito.doAnswer;\r
+import static org.powermock.api.mockito.PowerMockito.mockStatic;\r
+import static org.powermock.api.mockito.PowerMockito.spy;\r
+import static org.powermock.api.mockito.PowerMockito.when;\r
+import static org.powermock.api.mockito.PowerMockito.mock;\r
+import static org.powermock.api.mockito.PowerMockito.whenNew;\r
+\r
+/**\r
+ * Test main logic of {@link BuildWebCLICommand#call()}\r
+ * @author Harry Hyeongseok Heo{@literal <hyeongseok.heo@samsung.com>} (S-core)\r
+ *\r
+ * \r
+ */\r
+@PowerMockIgnore({ "org.apache.log4j.*", "org.slf4j.Logger" })\r
+@RunWith(PowerMockRunner.class)\r
+public class BuildWebCLICommandCallTest {\r
+ \r
+ @BeforeClass\r
+ public static void setUpOnlyOnce() {\r
+ }\r
+\r
+ /**\r
+ * Test method for {@link org.tizen.ncli.ide.subcommands.BuildWebCLICommand#call()}.\r
+ * Test with testProject if build output is correct as expected.\r
+ */\r
+ @Test\r
+ public void testCall() {\r
+ File testProject = mock(File.class);\r
+ \r
+ \r
+ BuildWebCLICommand command = new BuildWebCLICommand();\r
+ command.setTargetPath(testProject);\r
+ command.setOutputName("test/resources/testProject/testBuildOutput");\r
+ command.setOptimize(true);\r
+ command.setExcludeUIFW(true);\r
+ \r
+ BuildWebCLICommandData buildData = command.runCommand();\r
+ assertNotNull(buildData);\r
+ \r
+// File outputFolder = buildData.getResult();\r
+ \r
+ \r
+ }\r
+ \r
+// @AfterClass\r
+ public static void tearDownOnlyOnce() {\r
+ File testProject = mock(File.class);\r
+ \r
+ if( null != testProject && testProject.exists()) {\r
+ \r
+ FileUtil.recursiveDelete(testProject);\r
+ }\r
+ }\r
+\r
+}\r
--- /dev/null
+/*\r
+ * IDE\r
+ *\r
+ * Copyright (c) 2000 - 2013 Samsung Electronics Co., Ltd. All rights reserved.\r
+ *\r
+ * Contact:\r
+ * Hyeongseok Heo <hyeongseok.heo@samsung.com>\r
+ * Kangho Kim <kh5325.kim@samsung.com>\r
+ * \r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ *\r
+ * Contributors:\r
+ * - S-Core Co., Ltd\r
+ */\r
+package org.tizen.ncli.ide.subcommands;\r
+\r
+import static org.junit.Assert.*;\r
+\r
+import java.io.File;\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+\r
+import org.junit.Test;\r
+\r
+/**\r
+ * Test basic method of {@link BuildWebCLICommand}\r
+ * \r
+ * @author Harry Hyeongseok Heo{@literal <hyeongseok.heo@samsung.com>} (S-core)\r
+ *\r
+ * \r
+ */\r
+public class BuildWebCLICommandTest {\r
+\r
+ \r
+\r
+ /**\r
+ * Test method for {@link org.tizen.ncli.ide.subcommands.BuildWebCLICommand#setOptimize(boolean)}.\r
+ */\r
+ @Test\r
+ public void testSetOptimize() {\r
+ BuildWebCLICommand command = new BuildWebCLICommand();\r
+ command.setOptimize(false);\r
+ \r
+ BuildWebCLICommandData buildData = command.runCommand();\r
+ assertNotNull(buildData);\r
+ assertEquals(false, buildData.isOptimize());\r
+ \r
+ }\r
+\r
+ /**\r
+ * Test method for {@link org.tizen.ncli.ide.subcommands.BuildWebCLICommand#setOutputName(java.lang.String)}.\r
+ */\r
+ @Test\r
+ public void testSetOutputName() {\r
+ BuildWebCLICommand command = new BuildWebCLICommand();\r
+ command.setOutputName("TestBuildResult");\r
+ \r
+ BuildWebCLICommandData buildData = command.runCommand();\r
+ assertNotNull(buildData);\r
+ assertEquals("TestBuildResult", buildData.getOutputName());\r
+ }\r
+\r
+ /**\r
+ * Test method for {@link org.tizen.ncli.ide.subcommands.BuildWebCLICommand#setExcludeUIFW(boolean)}.\r
+ */\r
+ @Test\r
+ public void testSetExcludeUIFW() {\r
+ BuildWebCLICommand command = new BuildWebCLICommand();\r
+ command.setExcludeUIFW(true);\r
+ \r
+ BuildWebCLICommandData buildData = command.runCommand();\r
+ assertNotNull(buildData);\r
+ assertEquals(true, buildData.isExcludeUIFW());\r
+ }\r
+\r
+ /**\r
+ * Test method for {@link org.tizen.ncli.ide.subcommands.BuildWebCLICommand#setExcludeList(java.util.List)}.\r
+ */\r
+ @Test\r
+ public void testSetExcludeList() {\r
+ BuildWebCLICommand command = new BuildWebCLICommand();\r
+ List<String> excludeList = new ArrayList<String>();\r
+ excludeList.add(".git");\r
+ \r
+ command.setExcludeList(excludeList);\r
+ \r
+ BuildWebCLICommandData buildData = command.runCommand();\r
+ assertNotNull(buildData); \r
+ assertEquals(".git", buildData.getExcludeList().get(0));\r
+ }\r
+\r
+}\r
protected static Logger log = LoggerFactory.getLogger(CommonCLISubCommandTest.class);\r
protected static Properties testGlobalProp = new Properties();\r
protected static Properties testLocalProp = new Properties();\r
- protected static File testLocalConf = null;\r
\r
@BeforeClass\r
public static void prepare_once() {\r
- InputStream configStream = null;\r
- try {\r
- configStream = loadTestGlobalConfig();\r
- testGlobalProp.load(configStream);\r
- configStream = loadTestLocalConfig();\r
- testLocalProp.load(configStream);\r
- } catch (IOException e) {\r
- log.error("Load test config failed!");\r
- e.printStackTrace();\r
- } finally {\r
- IOUtil.tryClose(configStream);\r
- }\r
- }\r
-\r
- protected static InputStream loadTestGlobalConfig() {\r
- final ClassLoader classLoader = CommonCLISubCommandTest.class.getClassLoader();\r
- final String testFilePath = CommonCLISubCommandTest.class.getPackage().getName().replace(".", "/")+"/tizen-cli-config-global";\r
- InputStream configStream = null;\r
- configStream = classLoader.getResourceAsStream(testFilePath);\r
- return configStream;\r
- }\r
- \r
- protected static InputStream loadTestLocalConfig() {\r
- final ClassLoader classLoader = CommonCLISubCommandTest.class.getClassLoader();\r
- final String testFilePath = CommonCLISubCommandTest.class.getPackage().getName().replace(".", "/")+"/tizen-cli-config-local";\r
- InputStream configStream = null;\r
- configStream = classLoader.getResourceAsStream(testFilePath);\r
- return configStream;\r
- }\r
-\r
- /**\r
- * \r
- */\r
- public CommonCLISubCommandTest() {\r
- super();\r
+ testGlobalProp.put("global.key1", "This is global value1");\r
+ testGlobalProp.put("global.key2", "This is global value2");\r
+ testGlobalProp.put("global.key1.subkey1", "This is global subkey value1");\r
+ \r
+ testLocalProp.put("global.key1", "This is local value1");\r
+ testLocalProp.put("local.key2", "This is global value2");\r
+ testLocalProp.put("local.key1.subkey1", "This is local subkey value1");\r
+ \r
}\r
\r
}
\ No newline at end of file
--- /dev/null
+/*\r
+ * IDE\r
+ *\r
+ * Copyright (c) 2000 - 2013 Samsung Electronics Co., Ltd. All rights reserved.\r
+ *\r
+ * Contact:\r
+ * Hyeongseok Heo <hyeongseok.heo@samsung.com>\r
+ * Kangho Kim <kh5325.kim@samsung.com>\r
+ * \r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ *\r
+ * Contributors:\r
+ * - S-Core Co., Ltd\r
+ */\r
+\r
+package org.tizen.ncli.ide.subcommands;\r
+\r
+import static org.junit.Assert.*;\r
+import static org.powermock.api.mockito.PowerMockito.doAnswer;\r
+import static org.powermock.api.mockito.PowerMockito.spy;\r
+\r
+import java.util.Collection;\r
+import java.util.HashSet;\r
+\r
+import org.junit.Test;\r
+import org.junit.runner.RunWith;\r
+import org.mockito.invocation.InvocationOnMock;\r
+import org.mockito.stubbing.Answer;\r
+import org.powermock.core.classloader.annotations.PowerMockIgnore;\r
+import org.powermock.core.classloader.annotations.PrepareForTest;\r
+import org.powermock.modules.junit4.PowerMockRunner;\r
+import org.tizen.common.config.Preference;\r
+import org.tizen.common.config.provider.EnvironmentProvider;\r
+import org.tizen.common.config.provider.SystemPropertiesProvider;\r
+import org.tizen.ncli.ide.config.CLIConfig;\r
+import org.tizen.ncli.ide.core.config.TizenCLIConfigProvider;\r
+\r
+/**\r
+ * Test class for {@link ConfigCLICommand} <br>\r
+ * In this test case , only test <tt>list</tt> option.\r
+ * @author Harry Hyeongseok Heo{@literal <hyeongseok.heo@samsung.com>} (S-core)\r
+ * \r
+ */\r
+@PowerMockIgnore({ "org.apache.log4j.*", "org.slf4j.Logger" })\r
+@RunWith(PowerMockRunner.class)\r
+@PrepareForTest(TizenCLIConfigProvider.class)\r
+public class ConfigCommandListTest extends CommonCLISubCommandTest{\r
+\r
+ @Test\r
+ public void test_listConfig() throws Exception {\r
+\r
+ final TizenCLIConfigProvider globalProvider = new TizenCLIConfigProvider(testGlobalProp);\r
+ final TizenCLIConfigProvider localProvider = new TizenCLIConfigProvider(testLocalProp);\r
+\r
+ ConfigCLICommand configCmd = spy(new ConfigCLICommand());\r
+\r
+ doAnswer(new Answer<Object>() {\r
+\r
+ @Override\r
+ public Object answer(InvocationOnMock invocation) throws Throwable {\r
+ Preference.register("OS", new EnvironmentProvider());\r
+ Preference.register("JVM", new SystemPropertiesProvider());\r
+ Preference.register("TIZEN.CLI.GLOBAL", globalProvider);\r
+ Preference.register("TIZEN.CLI.LOCAL", localProvider);\r
+ return "run command called";\r
+ }\r
+\r
+ }).when(configCmd, "runCommand");\r
+\r
+ assertEquals("run command called", configCmd.runCommand());\r
+ \r
+ configCmd.setList(true);\r
+ \r
+ CLIConfig cliConfig = configCmd.call();\r
+ assertNotNull(cliConfig);\r
+ \r
+ Collection<String> expectedGlobalKeys = new HashSet<String>();\r
+ expectedGlobalKeys.add("global.key1");\r
+ expectedGlobalKeys.add("global.key2");\r
+ expectedGlobalKeys.add("global.key1.subkey1");\r
+ assertTrue(cliConfig.getGlobalKeys().containsAll(expectedGlobalKeys));\r
+ \r
+ Collection<String> expectedLocalKeys = new HashSet<String>();\r
+ expectedLocalKeys.add("global.key1");\r
+ expectedLocalKeys.add("local.key2");\r
+ expectedLocalKeys.add("local.key1.subkey1"); \r
+ \r
+ assertTrue(cliConfig.getLocalKeys().containsAll(expectedLocalKeys));\r
+ \r
+ }\r
+\r
+}\r
package org.tizen.ncli.ide.subcommands;\r
\r
import static org.junit.Assert.*;\r
-import static org.powermock.api.mockito.PowerMockito.doAnswer;\r
-import static org.powermock.api.mockito.PowerMockito.mockStatic;\r
-import static org.powermock.api.mockito.PowerMockito.spy;\r
-import static org.powermock.api.mockito.PowerMockito.when;\r
+import static org.powermock.api.mockito.PowerMockito.*;\r
\r
+import java.io.File;\r
import java.io.FileInputStream;\r
+import java.io.FileOutputStream;\r
import java.io.InputStream;\r
+import java.io.OutputStream;\r
import java.util.Collection;\r
-import java.util.Collections;\r
import java.util.HashSet;\r
import java.util.Properties;\r
\r
-import org.hamcrest.core.Is;\r
+import org.junit.Before;\r
import org.junit.Test;\r
+import org.junit.internal.runners.statements.Fail;\r
import org.junit.runner.RunWith;\r
import org.mockito.invocation.InvocationOnMock;\r
import org.mockito.stubbing.Answer;\r
import org.tizen.ncli.ide.config.CLIConfig;\r
import org.tizen.ncli.ide.core.config.NCLIConfigLoader;\r
import org.tizen.ncli.ide.core.config.TizenCLIConfigProvider;\r
-import org.tizen.ncli.ide.subcommands.ConfigCLICommand;\r
\r
/**\r
+ * Test class for {@link ConfigCLICommand} <br>\r
+ * \r
+ * In this class , setting global or local configuration is tested.\r
* @author Harry Hyeongseok Heo{@literal <hyeongseok.heo@samsung.com>} (S-core)\r
* \r
*/\r
@PowerMockIgnore({ "org.apache.log4j.*", "org.slf4j.Logger" })\r
@RunWith(PowerMockRunner.class)\r
-@PrepareForTest(TizenCLIConfigProvider.class)\r
+@PrepareForTest(NCLIConfigLoader.class)\r
public class ConfigCommandTest extends CommonCLISubCommandTest{\r
-\r
- @Test\r
- public void test_listConfig() throws Exception {\r
-\r
- final TizenCLIConfigProvider globalProvider = new TizenCLIConfigProvider(testGlobalProp);\r
- final TizenCLIConfigProvider localProvider = new TizenCLIConfigProvider(testLocalProp);\r
-\r
- ConfigCLICommand configCmd = spy(new ConfigCLICommand());\r
-\r
- doAnswer(new Answer<Object>() {\r
-\r
- @Override\r
- public Object answer(InvocationOnMock invocation) throws Throwable {\r
- Preference.register("OS", new EnvironmentProvider());\r
- Preference.register("JVM", new SystemPropertiesProvider());\r
- Preference.register("TIZEN.CLI.GLOBAL", globalProvider);\r
- Preference.register("TIZEN.CLI.LOCAL", localProvider);\r
- return "run command called";\r
- }\r
-\r
- }).when(configCmd, "runCommand");\r
-\r
- assertEquals("run command called", configCmd.runCommand());\r
- \r
- configCmd.setList(true);\r
- \r
- CLIConfig cliConfig = configCmd.call();\r
- assertNotNull(cliConfig);\r
- \r
- Collection<String> expectedGlobalKeys = new HashSet<String>();\r
- expectedGlobalKeys.add("global.key1");\r
- expectedGlobalKeys.add("global.key2");\r
- expectedGlobalKeys.add("global.key1.subkey1");\r
- assertTrue(cliConfig.getGlobalKeys().containsAll(expectedGlobalKeys));\r
- \r
- Collection<String> expectedLocalKeys = new HashSet<String>();\r
- expectedLocalKeys.add("global.key1");\r
- expectedLocalKeys.add("local.key2");\r
- expectedLocalKeys.add("local.key1.subkey1"); \r
- \r
- assertTrue(cliConfig.getLocalKeys().containsAll(expectedLocalKeys));\r
- \r
- }\r
+ \r
+ @Before\r
+ public void setUp(){\r
+ \r
+ \r
+ }\r
\r
- @PrepareForTest(NCLIConfigLoader.class )\r
+ @PrepareForTest({NCLIConfigLoader.class,ConfigCLICommand.class})\r
@Test\r
public void test_setLocalConfig() throws Exception {\r
\r
- mockStatic(NCLIConfigLoader.class);\r
+ File testFile = mock(File.class);\r
+ whenNew(File.class).withAnyArguments().thenReturn(testFile);\r
+ when(testFile.getName()).thenReturn(".tizen-cli-config");\r
+ when(testFile.getPath()).thenReturn("/tizen-sdk/tools/.tizen-cli-config");\r
+ when(testFile.exists()).thenReturn(true);\r
+ when(testFile.canWrite()).thenReturn(true);\r
\r
- when(NCLIConfigLoader.getLocalConfigFile()).thenReturn(NCLITestResourceUtil.getTestFile("tizen-cli-config-local"));\r
+ FileOutputStream mockFileOutputStream = mock(FileOutputStream.class);\r
+ whenNew(FileOutputStream.class).withAnyArguments().thenReturn(mockFileOutputStream);\r
+ \r
+ //Mocking NCLIConfigLoader\r
+ mockStatic(NCLIConfigLoader.class);\r
+ when(NCLIConfigLoader.getLocalConfigFile()).thenReturn(testFile);\r
when(NCLIConfigLoader.loadLocalConf()).thenReturn(testLocalProp);\r
-\r
- final TizenCLIConfigProvider globalProvider = new TizenCLIConfigProvider(testGlobalProp);\r
- final TizenCLIConfigProvider localProvider = new TizenCLIConfigProvider(NCLIConfigLoader.loadLocalConf());\r
\r
\r
- ConfigCLICommand configCmd = spy(new ConfigCLICommand());\r
-\r
- doAnswer(new Answer<Object>() {\r
-\r
- @Override\r
- public Object answer(InvocationOnMock invocation) throws Throwable {\r
- Preference.register("OS", new EnvironmentProvider());\r
- Preference.register("JVM", new SystemPropertiesProvider());\r
- Preference.register(CLIConstant.TIZEN_CLI_GLOBAL_KEY, globalProvider);\r
- Preference.register(CLIConstant.TIZEN_CLI_LOCAL_KEY, localProvider);\r
- return "run command called";\r
- }\r
-\r
- }).when(configCmd, "runCommand");\r
+ \r
+ ConfigCLICommand configCmd = new ConfigCLICommand();\r
\r
- configCmd.setConfig("local.key.test", "this is LOCAL test value");\r
- configCmd.call();\r
+ configCmd.setConfig("local.key.test", "this is LOCAL test value");\r
+ //method for test\r
+ CLIConfig cliConfig = configCmd.call();\r
+ assertEquals("this is LOCAL test value", cliConfig.getLocalValue("local.key.test"));\r
\r
- Properties checkProp = new Properties();\r
- InputStream in = null;\r
- try {\r
- in = new FileInputStream(NCLITestResourceUtil.getTestFile("tizen-cli-config-local"));\r
- checkProp.load(in);\r
- } finally {\r
- IOUtil.tryClose(in);\r
- }\r
\r
- assertTrue(checkProp.containsKey("local.key.test"));\r
+ }\r
+ \r
+ @PrepareForTest({NCLIConfigLoader.class , ConfigCLICommand.class})\r
+ @Test\r
+ public void test_setGlobalConfig() throws Exception {\r
+ File testFile = mock(File.class);\r
+ whenNew(File.class).withAnyArguments().thenReturn(testFile);\r
+ when(testFile.getName()).thenReturn(".tizen-cli-config");\r
+ when(testFile.getPath()).thenReturn("/home/user/.tizen-cli-config");\r
+ when(testFile.exists()).thenReturn(true);\r
+ when(testFile.canWrite()).thenReturn(true);\r
+ \r
+ FileOutputStream mockFileOutputStream = mock(FileOutputStream.class);\r
+ whenNew(FileOutputStream.class).withAnyArguments().thenReturn(mockFileOutputStream);\r
+ \r
+ //Mocking NCLIConfigLoader\r
+ mockStatic(NCLIConfigLoader.class);\r
+ when(NCLIConfigLoader.getGlobalConfigFile()).thenReturn(testFile);\r
+ when(NCLIConfigLoader.loadGlobalConf()).thenReturn(testGlobalProp);\r
\r
+ ConfigCLICommand configCmd = new ConfigCLICommand();\r
+ \r
+ configCmd.setConfig("global.key.test", "this is GLOBAL test value");\r
+ configCmd.setGlobal(true);\r
+ //method for test\r
+ CLIConfig cliConfig = configCmd.call();\r
+ assertEquals("this is GLOBAL test value", cliConfig.getGlobalValue("global.key.test"));\r
}\r
\r
}\r
+++ /dev/null
-/*\r
- * IDE\r
- *\r
- * Copyright (c) 2000 - 2013 Samsung Electronics Co., Ltd. All rights reserved.\r
- *\r
- * Contact:\r
- * Hyeongseok Heo <hyeongseok.heo@samsung.com>\r
- * Kangho Kim <kh5325.kim@samsung.com>\r
- * \r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- *\r
- * Contributors:\r
- * - S-Core Co., Ltd\r
- */\r
-package org.tizen.ncli.ide.subcommands;\r
-\r
-import java.io.File;\r
-import java.net.URISyntaxException;\r
-import java.net.URL;\r
-\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-\r
-/**\r
- * @author Harry Hyeongseok Heo{@literal <hyeongseok.heo@samsung.com>} (S-core)\r
- *\r
- */\r
-public class NCLITestResourceUtil {\r
- private static Logger log = LoggerFactory.getLogger(NCLITestResourceUtil.class);\r
- \r
- public static File getTestFile(String fileName){\r
- URL url = NCLITestResourceUtil.class.getClassLoader().getResource("org/tizen/ncli/ide/test/resources/"+fileName);\r
-// URL url = NCLITestResourceUtil.class.getResource("org/tizen/ncli/ide/test/resources/"+fileName);\r
- log.trace("fileName: {} , url:{}",fileName,url);\r
- if(null == url) {\r
- return new File("test/resources",fileName);\r
- }\r
- try {\r
- return new File(url.toURI());\r
- } catch (URISyntaxException e) {\r
- return new File(url.getPath());\r
- }\r
- \r
- }\r
-}\r
+++ /dev/null
-/*\r
- * IDE\r
- *\r
- * Copyright (c) 2000 - 2013 Samsung Electronics Co., Ltd. All rights reserved.\r
- *\r
- * Contact:\r
- * Hyeongseok Heo <hyeongseok.heo@samsung.com>\r
- * Kangho Kim <kh5325.kim@samsung.com>\r
- * \r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- *\r
- * Contributors:\r
- * - S-Core Co., Ltd\r
- */\r
-package org.tizen.ncli.ide.subcommands;\r
-\r
-import static org.junit.Assert.*;\r
-\r
-import java.io.File;\r
-import java.io.FileInputStream;\r
-import java.io.FileNotFoundException;\r
-import java.io.IOException;\r
-\r
-import org.junit.Test;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-import org.tizen.common.util.FileUtil;\r
-\r
-/**\r
- * @author Harry Hyeongseok Heo{@literal <hyeongseok.heo@samsung.com>} (S-core)\r
- *\r
- */\r
-public class NCLITestResourceUtilTest {\r
-\r
- private Logger log = LoggerFactory.getLogger(getClass());\r
- /**\r
- * Test method for {@link org.tizen.ncli.ide.subcommands.NCLITestResourceUtil#getTestFile(java.lang.String)}.\r
- */\r
- @Test\r
- public void testGetTestFile() {\r
- File testFile = NCLITestResourceUtil.getTestFile("tizen-cli-config-global");\r
- \r
- assertNotNull(testFile);\r
- assertTrue(testFile.exists());\r
- \r
- try {\r
- log.trace("File content: \n{}",FileUtil.readFromFile(new FileInputStream(testFile)));\r
- \r
- } catch (FileNotFoundException e) {\r
- // TODO Auto-generated catch block\r
- e.printStackTrace();\r
- } catch (IOException e) {\r
- // TODO Auto-generated catch block\r
- e.printStackTrace();\r
- }\r
- }\r
-\r
-}\r
\r
\r
-command=java -cp org.tizen.ncli.ide.shell.Main
\ No newline at end of file
+command=java -cp org.tizen.ncli.ide.jar org.tizen.ncli.ide.shell.Main
\ No newline at end of file