2016-02-22 21 views
0

我寫了一個Spock測試來學習如何使用JGit。測試的總體思路步驟如下:JGit的狀態不會列出任何文件時它應該

  1. 創建一個「TestRepo」目錄
  2. 初始化新的Git倉庫有(「TestRepo/git的」)
  3. 創建父目錄的新文件(TestRepo),並設置其文本的東西佔用空間
  4. 呼叫「混帳地位」
  5. (調試)Groovy的轉儲返回Status對象
  6. 斷言返回Status對象具有文件裏被認爲是untracked

當我運行下面的測試時,它失敗。爲什麼?

state.dump()打印

下面
[email protected] 
    diff=org.eclipse.[email protected] 
    clean=true 
    hasUncommittedChanges=false 

代碼:

class GitActionsSpec extends Specification { 
    public static final ROOT_DIR_PATH = Paths.get(System.getProperty("user.home"), "TestRepo") 
    public static final ROOT_DIR_STRING = ROOT_DIR_PATH.toString() 
    public static final GIT_DIR_PATH = ROOT_DIR_PATH.resolve(".git") 

    @Shared 
    Git git 

    /** 
    * Creates a repository in rootDirPath 
    */ 
    def setupSpec() { 
     if (Files.exists(ROOT_DIR_PATH)) { 
      deleteDirectory(ROOT_DIR_PATH) 
     } 
     Files.createDirectory(ROOT_DIR_PATH) 

     /* 
     GitActions.createRepoIn(File parentDirectory) { 
      return Git.init().setDirectory(f).call() 
     } 
     */ 
     git = GitActions.createRepoIn(ROOT_DIR_PATH.toFile()) 
     assert git.repository.getDirectory().exists() 
    } 

    // The actual test 
    def "A newly-created file should be listed as 'untracked'"() { 
     given: "A new file" 
     Path file = ROOT_DIR_PATH.relativize(ROOT_DIR_PATH.resolve("file.txt")) 
     file.text = "filler text" 
     assert Files.exists(file) 

     when: "user requests the status" 
     Status state = git.status().addPath(file.toString()).call() 

     then: "Git lists that file as untracked" 
     println state.dump() 
     !state.getUntracked().isEmpty() 
    } 

    def cleanupSpec() { 
     git.close() 
     deleteDirectory(ROOT_DIR_PATH) 
    } 

    def deleteDirectory(Path directory) { 
     Files.walkFileTree(directory, new SimpleFileVisitor<Path>() { 
      @Override 
      FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException { 
       Files.delete(dir) 
       return FileVisitResult.CONTINUE 
      } 

      @Override 
      FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { 
       Files.delete(file) 
       return FileVisitResult.CONTINUE 
      } 
     }) 
    } 
} 

回答

0

原來的問題,設置了file代碼撒謊。

文件的toString()回報A,否B:

答:/home/user/Project/Module/file.txt

B:/home/user/TestRepo/file.txt

相關問題