diff --git a/htmldoc/document_store.go b/htmldoc/document_store.go index adf4386..7a986f9 100644 --- a/htmldoc/document_store.go +++ b/htmldoc/document_store.go @@ -30,6 +30,22 @@ func NewDocumentStore() DocumentStore { } } +// DocumentCount : Return number of documents in the document store. +func (dS *DocumentStore) DocumentCount() int { + return len(dS.Documents) +} + +// IgnoredDocCount : Return number of documents in the document store where `IgnoreTest` is true. +func (dS *DocumentStore) IgnoredDocCount() int { + count := 0 + for _, document := range dS.Documents { + if document.IgnoreTest { + count++ + } + } + return count +} + // AddDocument : Add a document to the document store. func (dS *DocumentStore) AddDocument(doc *Document) { // Save reference to document to various data stores @@ -70,6 +86,8 @@ func (dS *DocumentStore) discoverRecurse(dPath string) { fis, err := f.Readdir(-1) output.CheckErrorPanic(err) + isDirIgnored := dS.isDirIgnored(dPath) + // Iterate over contents of directory for _, fileinfo := range fis { fPath := path.Join(dPath, fileinfo.Name()) @@ -82,7 +100,7 @@ func (dS *DocumentStore) discoverRecurse(dPath string) { FilePath: path.Join(dS.BasePath, fPath), SitePath: fPath, BasePath: dPath, - IgnoreTest: dS.isDirIgnored(dPath), + IgnoreTest: isDirIgnored, } newDoc.Init() dS.AddDocument(newDoc) @@ -94,7 +112,7 @@ func (dS *DocumentStore) discoverRecurse(dPath string) { } -// ResolvePath : Resolves internal absolute paths to documents. +// ResolvePath : Resolves internal paths to documents. func (dS *DocumentStore) ResolvePath(refPath string) (*Document, bool) { // Match root document if refPath == "/" { diff --git a/htmldoc/document_store_test.go b/htmldoc/document_store_test.go index 95dce03..2deb84b 100644 --- a/htmldoc/document_store_test.go +++ b/htmldoc/document_store_test.go @@ -6,6 +6,9 @@ import ( "github.com/daviddengcn/go-assert" ) +// Expected number of .html files under "fixtures/documents" +const ExpectedHtmlDocumentCount = 6 + func TestDocumentStoreDiscover(t *testing.T) { // documentstore can scan an os directory dS := NewDocumentStore() @@ -13,8 +16,12 @@ func TestDocumentStoreDiscover(t *testing.T) { dS.DocumentExtension = ".html" // Ignores .htm dS.DirectoryIndex = "index.html" dS.Discover() - // Fixtures dir has eight documents in various folders - assert.Equals(t, "document count", len(dS.Documents), 6) + assert.Equals(t, "document count", dS.DocumentCount(), ExpectedHtmlDocumentCount) + assert.Equals(t, "ignored document count", dS.IgnoredDocCount(), 0) + + for _, document := range dS.Documents { + assert.IsFalse(t, document.SitePath+" is not ignored", document.IgnoreTest) + } } func TestDocumentStoreIgnorePatterns(t *testing.T) { @@ -25,8 +32,20 @@ func TestDocumentStoreIgnorePatterns(t *testing.T) { dS.DirectoryIndex = "index.html" dS.IgnorePatterns = []interface{}{"^lib/"} dS.Discover() - // Fixtures dir has seven documents in various folders, (one ignored in lib) - assert.Equals(t, "document count", len(dS.Documents), 6) + // IgnorePatterns does not affect stored document count + assert.Equals(t, "document count", dS.DocumentCount(), ExpectedHtmlDocumentCount) + assert.Equals(t, "ignored document count", dS.IgnoredDocCount(), 1) + + ignoredFile := "lib/unwanted-file.html" + f, exists := dS.DocumentPathMap[ignoredFile] + assert.IsTrue(t, ignoredFile+" exists", exists) + assert.IsTrue(t, ignoredFile+" is flagged as ignored", f.IgnoreTest) + + for _, document := range dS.Documents { + if document.SitePath != ignoredFile { + assert.IsFalse(t, document.FilePath+" is not ignored", document.IgnoreTest) + } + } } func TestDocumentStoreDocumentExists(t *testing.T) { diff --git a/htmltest/htmltest.go b/htmltest/htmltest.go index e30bc62..7bb14df 100644 --- a/htmltest/htmltest.go +++ b/htmltest/htmltest.go @@ -298,5 +298,10 @@ func (hT *HTMLTest) CountErrors() int { // CountDocuments : Return number of documents in hT document store func (hT *HTMLTest) CountDocuments() int { - return len(hT.documentStore.Documents) + return hT.documentStore.DocumentCount() +} + +// CountTestedDocuments : Return number of documents in hT document store that were tested +func (hT *HTMLTest) CountTestedDocuments() int { + return hT.documentStore.DocumentCount() - hT.documentStore.IgnoredDocCount() } diff --git a/htmltest/htmltest_test.go b/htmltest/htmltest_test.go index 30d359f..2f43e03 100644 --- a/htmltest/htmltest_test.go +++ b/htmltest/htmltest_test.go @@ -84,7 +84,8 @@ func TestNormalLookingPage(t *testing.T) { func TestCountDocuments(t *testing.T) { hT := tTestDirectory("fixtures/documents/folder-ok") - assert.Equals(t, "CountDocuments", hT.CountDocuments(), 3) + assert.Equals(t, "CountTestedDocuments", hT.CountTestedDocuments(), 3) + assert.Equals(t, "CountErrors", hT.CountErrors(), 0) } func TestCountErrors(t *testing.T) { @@ -105,7 +106,7 @@ func TestFileExtensionOption(t *testing.T) { "FileExtension": ".htm", "DirectoryIndex": "index.htm", }) - assert.Equals(t, "CountDocuments", hT.CountDocuments(), 3) + assert.Equals(t, "CountTestedDocuments", hT.CountTestedDocuments(), 3) tExpectIssueCount(t, hT, 1) } diff --git a/main.go b/main.go index 554d0c8..6d568f6 100644 --- a/main.go +++ b/main.go @@ -175,7 +175,14 @@ func run(options optsMap) int { color.Set(color.FgHiGreen) fmt.Println("✔✔✔ passed in", timeEnd.Sub(timeStart)) if !fileMode { - fmt.Println("tested", hT.CountDocuments(), "documents") + testedDocCount := hT.CountTestedDocuments() + fmt.Print("tested ", testedDocCount, " documents") + docCount := hT.CountDocuments() + if testedDocCount < docCount { + fmt.Println(" out of", docCount) + } else { + fmt.Println() + } } color.Unset() return 0