package com.google.dart.tools.core.internal.builder; import com.google.dart.tools.core.DartCore; import com.google.dart.tools.core.mock.MockContainer; import com.google.dart.tools.core.mock.MockFolder; import com.google.dart.tools.core.mock.MockProject; import com.google.dart.tools.core.mock.MockWorkspaceRoot; import static com.google.dart.tools.core.DartCore.BUILD_DART_FILE_NAME; import static com.google.dart.tools.core.DartCore.PACKAGES_DIRECTORY_NAME; import static com.google.dart.tools.core.DartCore.PUBSPEC_FILE_NAME; import org.eclipse.core.resources.IProjectDescription; import org.eclipse.core.resources.IWorkspace; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.NullProgressMonitor; /** * Utility methods for creating various {@link MockProject}s. */ public class TestProjects { public static final NullProgressMonitor MONITOR = new NullProgressMonitor(); /** * Answer a new empty mock project * * @return a project (not {@code null}) */ public static MockProject newEmptyProject() { return newEmptyProject(new MockWorkspaceRoot()); } /** * Answer a new empty mock project * * @return a project (not {@code null}) */ public static MockProject newEmptyProject(MockWorkspaceRoot rootContainer) { return rootContainer.addProject("testproj"); } /** * Answer a new mock project with a pubspec file in the root and a packages directory containing * one package and a hidden ".svn" directory, with *.dart files sprinkled throughout * * @return the mock project (not {@code null}) */ public static MockProject newPubProject1() { MockProject project = newEmptyProject(); project.addFile(PUBSPEC_FILE_NAME); project.addFile("some.dart"); MockFolder web = project.addFolder("web"); web.addFile(BUILD_DART_FILE_NAME); web.addFile("other.dart"); MockFolder packages = project.addFolder(PACKAGES_DIRECTORY_NAME); MockFolder pkgFoo = packages.addFolder("foo"); pkgFoo.addFile(PUBSPEC_FILE_NAME); pkgFoo.addFile("bar.dart"); MockFolder svn = project.addFolder(".svn"); svn.addFile(PUBSPEC_FILE_NAME); svn.addFile("blat.dart"); return project; } /** * Answer a new mock project with a pubspec file in the root, a nested folder containing another * pubspec file, and a packages directory containing one package and a hidden ".svn" directory, * with *.dart files sprinkled throughout. * * @return the mock project (not {@code null}) */ public static MockProject newPubProject2() { return newPubProject2(new MockWorkspaceRoot()); } /** * Answer a new mock project with a pubspec file in the root, a nested folder containing another * pubspec file, and a packages directory containing one package and a hidden ".svn" directory, * with *.dart files sprinkled throughout. * * @return the mock project (not {@code null}) */ public static MockProject newPubProject2(MockWorkspaceRoot rootContainer) { MockProject project = newEmptyProject(rootContainer); project.addFile(PUBSPEC_FILE_NAME, "name: myapp"); project.addFile(BUILD_DART_FILE_NAME); project.addFile("some.dart"); project.addFile("some1.dart"); project.addFile("some.html"); MockFolder myApp = project.addFolder("myapp"); myApp.addFile(PUBSPEC_FILE_NAME); myApp.addFile(BUILD_DART_FILE_NAME); myApp.addFile("other.dart"); MockFolder svn = project.addFolder(".svn"); svn.addFile(PUBSPEC_FILE_NAME); svn.addFile(BUILD_DART_FILE_NAME); svn.addFile("foo.dart"); addPackages(project); return project; } /** * Answer a new mock project with a pubspec file in the root, a nested folder containing another * pubspec file, and a packages directory containing one package and a hidden ".svn" directory, * with *.dart files sprinkled throughout. * * @return a project (not {@code null}) */ public static MockProject newPubProject3() { return newPubProject3(new MockWorkspaceRoot()); } /** * Answer a new mock project with a pubspec file in the root, a nested folder containing another * pubspec file, and a packages directory containing one package and a hidden ".svn" directory, * with *.dart files sprinkled throughout. * * @return a project (not {@code null}) */ public static MockProject newPubProject3(MockWorkspaceRoot rootContainer) { MockProject project = newPubProject2(rootContainer); IWorkspace workspace = ResourcesPlugin.getWorkspace(); IProjectDescription description = workspace.newProjectDescription(project.getName()); description.setNatureIds(new String[] {DartCore.DART_PROJECT_NATURE}); try { project.setDescription(description, null); } catch (CoreException e) { } MockFolder app = project.getMockFolder("myapp"); MockFolder appLib = app.addFolder("lib"); appLib.addFile("stuff.dart"); app.addFolder("mylib"); MockFolder subApp = app.addFolder("subApp"); subApp.addFile(PUBSPEC_FILE_NAME); subApp.addFile("sub_stuff.dart"); MockFolder web = project.addFolder("web"); web.addFile("other.dart"); addPackages(web); MockFolder sub = web.addFolder("sub"); sub.addFile("cool.dart"); return project; } /** * Answer a new simple non-pub project * * @return a project (not {@code null}) */ public static MockProject newSimpleProject() { MockProject project = new MockProject("simple"); project.addFile(BUILD_DART_FILE_NAME); project.addFile("some.dart"); project.addFile("some1.dart"); MockFolder folder = project.addFolder("web"); folder.addFile(BUILD_DART_FILE_NAME); folder.addFile("other.dart"); MockFolder packages = folder.addFolder(PACKAGES_DIRECTORY_NAME); MockFolder somePackage = packages.addFolder("pkg1"); somePackage.addFile("bar.dart"); return project; } /** * Answer a new simple non-pub project, but with "packages" folder. * * @return a project (not {@code null}) */ public static MockProject newSimpleProjectWithPackages() { MockProject project = newSimpleProject(); addPackages(project); return project; } private static void addPackages(MockContainer container) { MockFolder packages = container.addFolder(PACKAGES_DIRECTORY_NAME); MockFolder pkg1 = packages.addFolder("pkg1"); pkg1.addFile(PUBSPEC_FILE_NAME); pkg1.addFile(BUILD_DART_FILE_NAME); pkg1.addFile("bar.dart"); MockFolder pkg1Folder = pkg1.addFolder("some_folder"); pkg1Folder.addFile(BUILD_DART_FILE_NAME); pkg1Folder.addFile("bar.dart"); } // no instances private TestProjects() { } }