diff --git a/issues/libpit/0002f6.rst b/issues/libpit/0002c6.rst similarity index 100% rename from issues/libpit/0002f6.rst rename to issues/libpit/0002c6.rst diff --git a/issues/libpit/0003f6.rst b/issues/libpit/0003c6.rst similarity index 100% rename from issues/libpit/0003f6.rst rename to issues/libpit/0003c6.rst diff --git a/issues/libpit/0012t1.rst b/issues/libpit/0012t1.rst new file mode 100644 index 0000000..58cf3b7 --- /dev/null +++ b/issues/libpit/0012t1.rst @@ -0,0 +1,2 @@ +Add unit tests for changing an issue's category. +================================================ diff --git a/issues/libpit/0013t1.rst b/issues/libpit/0013t1.rst new file mode 100644 index 0000000..bdf375c --- /dev/null +++ b/issues/libpit/0013t1.rst @@ -0,0 +1,2 @@ +Add unit tests for changing an issue's priority. +================================================ diff --git a/issues/libpit/0014t1.rst b/issues/libpit/0014t1.rst new file mode 100644 index 0000000..d904a7e --- /dev/null +++ b/issues/libpit/0014t1.rst @@ -0,0 +1,3 @@ +Add unit tests covering Issue construction. +=========================================== + diff --git a/issues/libpit/0015t1.rst b/issues/libpit/0015t1.rst new file mode 100644 index 0000000..a298360 --- /dev/null +++ b/issues/libpit/0015t1.rst @@ -0,0 +1,2 @@ +Add unit tests covering Project construction. +============================================= diff --git a/libpit/project.properties b/libpit/project.properties index 89988d5..8e3d867 100644 --- a/libpit/project.properties +++ b/libpit/project.properties @@ -1,6 +1,6 @@ -#Sat Feb 13 21:25:03 CST 2010 -expected.application.version=1.0.0 -build.number=5 +#Mon Feb 15 21:53:26 CST 2010 +expected.application.version=1.1.0 +build.number=2 src.dir=src release.dir=release build.dir=build diff --git a/libpit/release/pit-1.0.0.jar b/libpit/release/pit-1.0.0.jar deleted file mode 100644 index 3d4fbb3..0000000 Binary files a/libpit/release/pit-1.0.0.jar and /dev/null differ diff --git a/libpit/src/com/jdbernard/pit/Issue.groovy b/libpit/src/com/jdbernard/pit/Issue.groovy index f4d104b..5c0ef4e 100644 --- a/libpit/src/com/jdbernard/pit/Issue.groovy +++ b/libpit/src/com/jdbernard/pit/Issue.groovy @@ -2,17 +2,20 @@ package com.jdbernard.pit public class Issue { - String id + final String id Category category int priority String title String text + File source Issue(File file) { def matcher = file.name =~ /(\d{4})([bftc])(\d).*/ if (!matcher) return null + this.source = file + id = matcher[0][1] category = Category.toCategory(matcher[0][2]) priority = matcher[0][3].toInteger() @@ -21,4 +24,18 @@ public class Issue { text = file.text } + void setCategory(Category c) { + this.category = c + source.renameTo(getFilename()) + } + + void setPriority(int p) { + if (p < 0) priority = 0 + else if (p > 9) priority = 9 + else priority = p + source.renameTo(getFilename()) + } + + String getFilename() { return id + category.symbol + priority + ".rst"; } + } diff --git a/libpit/src/com/jdbernard/pit/Project.groovy b/libpit/src/com/jdbernard/pit/Project.groovy index 992ca78..37fb7c1 100644 --- a/libpit/src/com/jdbernard/pit/Project.groovy +++ b/libpit/src/com/jdbernard/pit/Project.groovy @@ -5,8 +5,14 @@ class Project { String name Map issues = [:] Map projects = [:] + File source Project(File dir, Filter filter = null) { + if (!dir.isDirectory()) + throw new IllegalArgumentException( + "${dir.name} is not a directory.") + + this.source = dir this.name = dir.name dir.eachFile { child -> @@ -31,6 +37,8 @@ class Project { } } } + + public void rename(String newName) { source.renameTo(newName) } public void eachIssue(Closure c) { for (i in issues.values()) c.call(i) diff --git a/libpit/test/com/jdbernard/pit/IssueTest.groovy b/libpit/test/com/jdbernard/pit/IssueTest.groovy new file mode 100644 index 0000000..4a45720 --- /dev/null +++ b/libpit/test/com/jdbernard/pit/IssueTest.groovy @@ -0,0 +1,65 @@ +package com.jdbernard.pit + +class IssueTest + + def issues + File testDir + + @Before void makeIssueFiles() { + File issueFile + issues = [] + + testDir = new File('testdir') + testDir.mkdirs() + + issueFile = new File(testDir, '0001f1.rst') + issueFile.write( + "Add the killer feature to the killer app.\n" + + "=========================================\n\n" + + "Make our killer app shine!.") + issues << new Issue(issueFile) + + issueFile = new File(testDir, '0002t5.rst') + issueFile.write( + "Obtain donuts.\n" + + "==============\n\n" + + "The office is seriously lacking in sugary donuts.\n\n + "We must rectify this at once!") + issues << new Issue(issueFile) + } + + @AfterClass void deleteIssueFiles() { + testDir.deleteDir() + } + + @Test void testSetCategory() { + + assert issues[0].category == Category.FEATURE + assert issues[1].category == Category.TASK + + issues[0].category == Category.CLOSED + issues[1].category == Category.TASK + + assert issues[0].category == Category.CLOSED + assert issues[1].category == Category.BUG + + assert new File(testDir, '0001c1.rst').exists() + assert new File(testDir, '0002b5.rst').exists() + assertFalse new File(testDir, '0001f1.rst').exists() + assertFalse new File(testDir, '0002t5.rst').exists() + } + + @Test void testIssueConstructor() { + File issueFile = new File(testDir, '0001f1.rst') + Issue issue = new Issue(issueFile) + + assert issue.id == "0001" + assert issue.category == Category.FEATURE + assert issue.priority == 1 + assert issue.title == "Add the killer feature to the killer app." + assert issue.text == "Add the killer feature to the killer app.\n" + + "=========================================\n\n" + + "Make our killer app shine!." + assert issue.source == issueFile + } +} diff --git a/version.properties b/version.properties index ccead97..832cfc4 100644 --- a/version.properties +++ b/version.properties @@ -1 +1 @@ -application.version=1.0.0 +application.version=1.1.0