IDEA-78280 (Grails: 'Evaluate Expression' broken after controller reload)
[idea/community.git] / plugins / git4idea / tests / git4idea / test / GitExec.java
1 /*
2  * Copyright 2000-2012 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package git4idea.test;
17
18 import com.intellij.openapi.project.Project;
19 import com.intellij.openapi.vfs.VirtualFile;
20 import com.intellij.testFramework.AbstractVcsTestCase;
21 import com.intellij.testFramework.VfsTestUtil;
22 import com.intellij.util.ui.UIUtil;
23 import git4idea.repo.GitRepository;
24 import org.jetbrains.annotations.NotNull;
25
26 import java.io.File;
27 import java.io.IOException;
28
29 /**
30  * @author Kirill Likhodedov
31  */
32 public class GitExec {
33
34   public static void refresh(@NotNull GitRepository repository) {
35     repository.getRoot().refresh(false, true);
36   }
37
38   public static GitRepository init(@NotNull Project project, @NotNull VirtualFile root) throws IOException {
39     new GitTestRunEnv(new File(root.getPath())).run("init");
40     root.refresh(false, true);
41     return GitRepository.getFullInstance(root, project, project);
42   }
43
44   public static void create(@NotNull GitRepository repository, @NotNull String filePath) {
45     create(repository, filePath, "content");
46   }
47
48   public static void create(final GitRepository repository, final String filePath, @NotNull final String content) {
49     UIUtil.invokeAndWaitIfNeeded(new Runnable() {
50       @Override public void run() {
51         VfsTestUtil.createFile(repository.getRoot(), filePath, content);
52       }
53     });
54   }
55
56   public static void edit(final GitRepository repository, String filePath, final String newContent) {
57     final VirtualFile file = repository.getRoot().findFileByRelativePath(filePath);
58     UIUtil.invokeAndWaitIfNeeded(new Runnable() {
59       @Override public void run() {
60         AbstractVcsTestCase.editFileInCommand(repository.getProject(), file, newContent);
61       }
62     });
63   }
64   
65   @NotNull
66   public static String read(final @NotNull GitRepository repository, @NotNull String filePath) throws IOException {
67     final VirtualFile file = repository.getRoot().findFileByRelativePath(filePath);
68     assert file != null;
69     return new String(file.contentsToByteArray());
70   }
71
72   public static void add(@NotNull GitRepository repository, @NotNull String filePath) throws IOException {
73     run(repository, "add", filePath);
74   }
75
76   public static void add(@NotNull GitRepository repository) throws IOException {
77     run(repository, "add", ".");
78   }
79
80   public static void commit(@NotNull GitRepository repository) throws IOException {
81     run(repository, "commit", "-m", "message");
82   }
83   
84   public static void addCommit(@NotNull GitRepository repository, @NotNull String filePath) throws IOException {
85     add(repository, filePath);
86     commit(repository);
87   }
88   
89   public static void addCommit(@NotNull GitRepository repository) throws IOException {
90     add(repository);
91     commit(repository);
92   }
93
94   public static void createAddCommit(@NotNull GitRepository repository, @NotNull String filePath) throws IOException {
95     create(repository, filePath);
96     addCommit(repository, filePath);
97   }
98   
99   @NotNull
100   public static String branch(@NotNull GitRepository repository, String... params) throws IOException {
101     return run(repository, "branch", params);
102   }
103
104   public static void checkout(@NotNull GitRepository repository, String... params) throws IOException {
105     run(repository, "checkout", params);
106   }
107
108   public static void merge(@NotNull GitRepository repository, @NotNull String branch) throws IOException {
109     run(repository, "merge", branch);
110   }
111
112   @NotNull
113   private static String run(@NotNull GitRepository repository, @NotNull String command, String... params) throws IOException {
114     return new GitTestRunEnv(new File(repository.getRoot().getPath())).run(command, params);
115   }
116
117 }