Skip to content

Commit

Permalink
Include all wiki files under version control
Browse files Browse the repository at this point in the history
FitNesseRoot is used for tests on the code base. Therefore there is a chance files are added to a distribution that are not under version control. This change ensures wiki files are only added if under version control.

This fixes unclebob#1112 in a different way.
  • Loading branch information
amolenaar committed Jan 13, 2018
1 parent 158b396 commit 30b496e
Show file tree
Hide file tree
Showing 5 changed files with 46 additions and 79 deletions.
2 changes: 1 addition & 1 deletion .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ indent_size = 2
[*.js]
indent_size = 4

[*.java]
[*.{java,groovy}]
indent_size = 2

[*.gradle]
Expand Down
32 changes: 9 additions & 23 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ plugins {

apply plugin: "info.solidsoft.pitest"


version = new Date().format('yyyyMMdd')

println "Building FitNesse v${project.version}..."
Expand Down Expand Up @@ -99,6 +98,12 @@ task compileBootstrap(type: LessCompiler) {

task createUpdateLists(type: WikiFileListBuilderTask) {
outputDirectory = "${sourceSets.main.output.resourcesDir}/Resources"

files = {
// Make sure only files in version control are added to the default wiki contents
"git ls-files FitNesseRoot".execute().text.readLines()
}

doNotReplaceFiles = [
"FitNesseRoot/content.txt",
"FitNesseRoot/properties.xml",
Expand All @@ -118,13 +123,6 @@ task createUpdateLists(type: WikiFileListBuilderTask) {
"FitNesseRoot/TemplateLibrary/SuitePage/properties.xml",
"FitNesseRoot/TemplateLibrary/TestPage/content.txt",
"FitNesseRoot/TemplateLibrary/TestPage/properties.xml" ]
mainDirectories = [
"FitNesseRoot/FitNesse",
"FitNesseRoot/FrontPage",
"FitNesseRoot/PageFooter",
"FitNesseRoot/PlugIns",
"FitNesseRoot/PageHeader",
"FitNesseRoot/TemplateLibrary" ]
}

processResources.dependsOn "fitNesseVersion", "compileBootstrap", "createUpdateLists"
Expand Down Expand Up @@ -157,20 +155,7 @@ jar {
dependsOn createUpdateLists
into('Resources') {
from('.') {
include 'FitNesseRoot/content.txt'
include 'FitNesseRoot/properties.xml'
include 'FitNesseRoot/FitNesse/**/content.txt'
include 'FitNesseRoot/FitNesse/**/properties.xml'
include 'FitNesseRoot/FrontPage/**/content.txt'
include 'FitNesseRoot/FrontPage/**/properties.xml'
include 'FitNesseRoot/PageFooter/**/content.txt'
include 'FitNesseRoot/PageFooter/**/properties.xml'
include 'FitNesseRoot/PlugIns/**/properties.xml'
include 'FitNesseRoot/PlugIns/**/content.txt'
include 'FitNesseRoot/PageHeader/**/content.txt'
include 'FitNesseRoot/PageHeader/**/properties.xml'
include 'FitNesseRoot/TemplateLibrary/**/content.txt'
include 'FitNesseRoot/TemplateLibrary/**/properties.xml'
include createUpdateLists.wikiFiles as String[]
}
}
manifest {
Expand All @@ -179,7 +164,8 @@ jar {
}
}

task standaloneJar(type: Jar, dependsOn: jar) {
task standaloneJar(type: Jar) {
dependsOn jar
baseName = 'fitnesse'
classifier = 'standalone'
from {
Expand Down
36 changes: 8 additions & 28 deletions buildSrc/src/main/groovy/WikiFileListBuilder.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -15,50 +15,30 @@ public class WikiFileListBuilder {

private static final List<String> VALID_FILE_NAMES = Arrays.asList("content.txt", "properties.xml", ".gitignore");

private List<String> mainDirectories = []
private List<String> doNotReplaceFiles = []
private Collection<String> files = []
private Collection<String> doNotReplaceFiles = []

private File updateListFile
private File updateDoNotCopyOverListFile

private String updateListContent = "";
private String updateDoNotCopyOverContent = "";

WikiFileListBuilder(List<String> mainDirectories, List<String> doNotReplaceFiles, File updateListFile, File updateDoNotCopyOverListFile) {
this.mainDirectories = mainDirectories
WikiFileListBuilder(Collection<String> files, Collection<String> doNotReplaceFiles, File updateListFile, File updateDoNotCopyOverListFile) {
this.files = files
this.doNotReplaceFiles = doNotReplaceFiles
this.updateListFile = updateListFile
this.updateDoNotCopyOverListFile = updateDoNotCopyOverListFile
}

WikiFileListBuilder(List<String> mainDirectories) {
// for testing mainly
this.mainDirectories = mainDirectories
for (String file : files)
addFilePathsToList(file);
}

public void createUpdateLists() {
if (directoriesAreValid()) {
createUpdateList();
createDoNotUpdateList();
} else {
throw new RuntimeException("Some directories are invalid. Aborting.");
}
}

public boolean directoriesAreValid() {
for (String dirName : mainDirectories) {
File checkFile = new File(dirName);
if (!checkFile.exists()) {
return false;
}
}
return true;
createUpdateList();
createDoNotUpdateList();
}

public File createUpdateList() {
for (String dirName : mainDirectories)
addFilePathsToList(dirName);

updateListFile.parentFile.mkdirs()
updateListFile.text = updateListContent
updateListFile
Expand Down
39 changes: 27 additions & 12 deletions buildSrc/src/main/groovy/WikiFileListBuilderTask.groovy
Original file line number Diff line number Diff line change
@@ -1,37 +1,52 @@
import java.io.File;
import java.util.List;
import java.util.Set;
import org.gradle.api.DefaultTask;
import org.gradle.api.tasks.InputDirectory;
import org.gradle.api.tasks.OutputFile;
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.InputFiles
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.OutputFile
import org.gradle.api.tasks.SourceSet;
import org.gradle.api.tasks.TaskAction;

public class WikiFileListBuilderTask extends DefaultTask {
List<String> mainDirectories
private List<String> doNotReplaceFiles
@InputFiles
Closure<Collection<String>> filesClosure

private Collection<String> doNotReplaceFiles

@OutputFile
File updateListFile
@OutputFile
File updateDoNotCopyOverListFile

Collection<String> wikiFiles

@TaskAction
public void taskAction() {
def updater = new WikiFileListBuilder(mainDirectories, doNotReplaceFiles, updateListFile, updateDoNotCopyOverListFile)
def updater = new WikiFileListBuilder(getWikiFiles(), doNotReplaceFiles, updateListFile, updateDoNotCopyOverListFile)
updater.createUpdateLists()
}

public void setDoNotReplaceFiles(final List<String> doNotReplaceFiles) {
public void setDoNotReplaceFiles(final Collection<String> doNotReplaceFiles) {
this.doNotReplaceFiles = doNotReplaceFiles
}

public void setMainDirectories(final List<String> mainDirectories) {
this.mainDirectories = mainDirectories
public void setFiles(final Closure<Collection<String>> files) {
this.filesClosure = files
}

public void setFiles(final Collection<String> files) {
this.filesClosure = { files }
}

public void setFiles(final SourceSet files) {
this.filesClosure = { files.collect { it.name } }
}

public void setOutputDirectory(final String outputDirectory) {
this.updateListFile = new File(outputDirectory, "updateList")
this.updateDoNotCopyOverListFile = new File(outputDirectory, "updateDoNotCopyOverList")
}

public List<String> getWikiFiles() {
if (wikiFiles == null) wikiFiles = filesClosure()
wikiFiles
}
}
16 changes: 1 addition & 15 deletions buildSrc/src/test/groovy/WikiFileListBuilderTest.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,6 @@ class WikiFileListBuilderTest {
createMultiLevelDirectory();
}

@Test
public void shouldKnowIfAGivenDirectoryExists() throws Exception {
File testFolder = new File("TestFolder");
testFolder.mkdir();
WikiFileListBuilder updater = new WikiFileListBuilder(["TestFolder"]);
assertTrue(updater.directoriesAreValid());
testFolder.deleteDir();
assertFalse(updater.directoriesAreValid());
}

@Test
public void shouldMakeUpdateListWithMultiLevelFolders() throws Exception {
String content = runCreateFileAndGetContent(["MasterFolder"]);
Expand Down Expand Up @@ -65,15 +55,11 @@ class WikiFileListBuilderTest {
}

class MockedWikiFileListBuilder extends WikiFileListBuilder {
def exitCalled = false

MockedWikiFileListBuilder() {
super([])
super([], [], null, null)
}

@Override
public boolean directoriesAreValid() { false }
void exit() { exitCalled = true }
}

@Test(expected = RuntimeException)
Expand Down

0 comments on commit 30b496e

Please sign in to comment.