Skip to content

Commit

Permalink
fix #51
Browse files Browse the repository at this point in the history
  • Loading branch information
kazurayam committed Aug 11, 2020
1 parent 5a4aa91 commit b114566
Show file tree
Hide file tree
Showing 5 changed files with 82 additions and 45 deletions.
5 changes: 3 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ task pinpoint(type: Test) {
//include "**/impl/MaterialCoreImplSpec.class"
//include "**/impl/MaterialImplSpec.class"
//include "**/impl/MaterialPairImpl.class"
include "**/impl/MaterialRepositoryImplSpec.class"
//include "**/impl/MaterialRepositoryImplSpec.class"
//include "**/impl/MaterialStorageImplSpec.class"
//include "**/impl/TSuiteResultImplSpec.class"
//include "**/IndexerFactorySpec.class"
Expand All @@ -139,7 +139,7 @@ task pinpoint(type: Test) {
//include "**/MaterialPairSpec.class"
//include "**/MaterialPairsSpec.class"
//include "**/MaterialRepositoryFactorySpec.class"
include "**/MaterialRepositorySpec.class"
//include "**/MaterialRepositorySpec.class"
//include "**/MaterialSpec.class"
//include "**/MaterialStorageSpec.class"
//include "**/MiscSpec.class"
Expand Down Expand Up @@ -172,6 +172,7 @@ task pinpoint(type: Test) {
//include "**/view/IndexerParallelSpec.class"
//include "**/view/JUnitReportWrapperSpec.class"
//include "**/view/RepositoryVisitorGeneratingBootstrapTreeviewDataSpec.class"
include "**/view/RepositoryVisitorGeneratingHtmlDivsAsModalBaseSpec.class"
//include "**/view/RepositoryVisitorGeneratingHtmlDivsAsModalCarouselSpec.class"
//include "**/view/RepositoryVisitorGeneratingHtmlDivsAsModalConciseSpec.class"
//include "**/view/RepositoryVisitorGeneratingHtmlDivsAsModalParallelSpec.class"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -263,9 +263,9 @@ abstract class RepositoryVisitorGeneratingHtmlDivsAsModalBase
}
}
} else {
String msg = this.class.getSimpleName() + "#generateAnchorsToOrigins this.comparisonResultBundle_ is found to be null"
String msg = this.class.getSimpleName() + "#generateAnchorsToOrigins this.comparisonResultBundle_ is null"
logger_.warn(msg)
vtLogger_.info(msg)
vtLogger_.warn(msg)
}
}

Expand Down Expand Up @@ -412,20 +412,20 @@ abstract class RepositoryVisitorGeneratingHtmlDivsAsModalBase
}
}
*/
private String getExpectedMaterialOriginHref(Path baseDir, ComparisonResult cr) {
String getExpectedMaterialOriginHref(Path baseDir, ComparisonResult cr) {
def jsonObject = new JsonSlurper().parseText(cr.toJsonText())
return getXMaterialOriginHref(baseDir, jsonObject.ComparisonResult.expectedMaterial.Material.hrefRelativeToRepositoryRoot)
}

private String getActualMaterialOriginHref(Path baseDir, ComparisonResult cr) {
String getActualMaterialOriginHref(Path baseDir, ComparisonResult cr) {
def jsonObject = new JsonSlurper().parseText(cr.toJsonText())
return getXMaterialOriginHref(baseDir, jsonObject.ComparisonResult.actualMaterial.Material.hrefRelativeToRepositoryRoot)
}

private String getXMaterialOriginHref(Path baseDir, String hrefRelativeToRepositoryRoot) {
String[] components = hrefRelativeToRepositoryRoot.split('/') // [ '47news.chronos_capture', '20190404_111956', '47news.visitSite', 'top.png' ]
String getXMaterialOriginHref(Path baseDir, String hrefRelativeToRepositoryRoot) {
String[] components = hrefRelativeToRepositoryRoot.split('/') // [ '47news.chronos_capture', 'default', '20190923_112138', '47news.visitSite', 'top.png' ]
if (components.length > 2) {
Path metadataBundlePath = baseDir.resolve(components[0]).resolve(components[1]).resolve(MaterialMetadataBundle.SERIALIZED_FILE_NAME)
Path metadataBundlePath = baseDir.resolve(components[0]).resolve(components[1]).resolve(components[2]).resolve(MaterialMetadataBundle.SERIALIZED_FILE_NAME)
if (Files.exists(metadataBundlePath)) {
MaterialMetadataBundle metadataBundle = MaterialMetadataBundle.deserialize(metadataBundlePath)
MaterialMetadata metadata = metadataBundle.findLastByMaterialPath(hrefRelativeToRepositoryRoot)
Expand All @@ -435,14 +435,17 @@ abstract class RepositoryVisitorGeneratingHtmlDivsAsModalBase
* {
* "MaterialMetadataBundle": [
* {
* "MaterialMetadata": {
* "MaterialPath": "47news.chronos_capture/20190404_112053/47news.visitSite/top.png",
* "TCaseName": "Test Cases/47news/visitSite",
* "InvokedMethodName": "resolveScreenshotPathByUrlPathComponents",
* "SubPath": "",
* "URL": "https://www.47news.jp/",
* "ExecutionProfileName": "default"
* }
* "MaterialMetadata": {
* "MaterialPath": "47News.chronos_exam/default/20190923_112817/47News.ImageDiff_chronos/47News.visitSite/TOP(7.07).png",
* "TCaseName": "Test Cases/47News/ImageDiff_chronos",
* "MaterialDescription": {
* "category": "category text",
* "description": "description text"
* },
* "InvokedMethodName": "resolveMaterialPath",
* "SubPath": "47News.visitSite",
* "FileName": "TOP(7.07).png"
* }
* }
* ]
* }
Expand All @@ -456,7 +459,7 @@ abstract class RepositoryVisitorGeneratingHtmlDivsAsModalBase
return null
}
} else {
String msg = "#getXMaterialOriginHref ${metadataBundlePath} does ot exist"
String msg = "#getXMaterialOriginHref ${metadataBundlePath} does not exist"
logger_.warn(msg)
vtLogger_.failed(msg)
return null
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ class RepositoryVisitorGeneratingHtmlDivsAsModalConcise
*/
@Override
void generateImgTags(Material mate) {
println "${this.getClass().getName()}#generateImgTags(${mate}) was invoked"
if (this.comparisonResultBundle_ != null &&
this.comparisonResultBundle_.containsImageDiff(mate.getPath())) {
// This material is a diff image, so render it in Carousel format of Diff > Expected + Actual
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@
]
}
},
"path": "/Users/urayamakazuaki/katalon-workspace/VT_47News/Materials/47News.chronos_capture/20190923_112138/47News.visitSite/TOP.png",
"hrefRelativeToRepositoryRoot": "47News.chronos_capture/20190923_112138/47News.visitSite/TOP.png",
"path": "/Users/urayamakazuaki/katalon-workspace/VT_47News/Materials/47News.chronos_capture/default/20190923_112138/47News.visitSite/TOP.png",
"hrefRelativeToRepositoryRoot": "47News.chronos_capture/default/20190923_112138/47News.visitSite/TOP.png",
"lastModified": "2019-09-23T02:22:27",
"description": "20190923_112138"
},
Expand All @@ -41,16 +41,16 @@
]
}
},
"path": "/Users/urayamakazuaki/katalon-workspace/VT_47News/Materials/47News.chronos_capture/20190923_112816/47News.visitSite/TOP.png",
"hrefRelativeToRepositoryRoot": "47News.chronos_capture/20190923_112816/47News.visitSite/TOP.png",
"path": "/Users/urayamakazuaki/katalon-workspace/VT_47News/Materials/47News.chronos_capture/default/20190923_112816/47News.visitSite/TOP.png",
"hrefRelativeToRepositoryRoot": "47News.chronos_capture/default/20190923_112816/47News.visitSite/TOP.png",
"lastModified": "2019-09-23T02:29",
"description": "20190923_112816"
}
},
"diffMaterial": {
"Material": {
"path": "/Users/urayamakazuaki/katalon-workspace/VT_47News/Materials/47News.chronos_exam/20190923_112817/47News.ImageDiff_chronos/47News.visitSite/TOP(7.07).png",
"hrefRelativeToRepositoryRoot": "47News.chronos_exam/20190923_112817/47News.ImageDiff_chronos/47News.visitSite/TOP(7.07).png"
"path": "/Users/urayamakazuaki/katalon-workspace/VT_47News/Materials/47News.chronos_exam/default/20190923_112817/47News.ImageDiff_chronos/47News.visitSite/TOP(7.07).png",
"hrefRelativeToRepositoryRoot": "47News.chronos_exam/default/20190923_112817/47News.ImageDiff_chronos/47News.visitSite/TOP(7.07).png"
}
},
"criteriaPercentage": 1.00,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,11 @@ import com.kazurayam.materials.TSuiteName
import com.kazurayam.materials.TSuiteResult
import com.kazurayam.materials.TSuiteResultId
import com.kazurayam.materials.TSuiteTimestamp
import com.kazurayam.materials.imagedifference.ComparisonResult
import com.kazurayam.materials.imagedifference.ComparisonResultBundle
import com.kazurayam.materials.impl.MaterialCoreImpl
import com.kazurayam.materials.repository.RepositoryVisitor
import com.kazurayam.materials.repository.RepositoryWalker
import groovy.xml.MarkupBuilder
import spock.lang.Ignore
import spock.lang.Specification
Expand All @@ -29,7 +33,7 @@ class RepositoryVisitorGeneratingHtmlDivsAsModalBaseSpec extends Specification {

private static Path specOutputDir_
private static Path fixture_ = Paths.get(
"./src/test/fixtures/com.kazurayam.materials.view.RepositoryVisitorGeneratingHtmlDivsXXXXSpec")
"./src/test/fixtures/com.kazurayam.materials.view.RepositoryVisitorGeneratingHtmlDivsXXXXSpec")

def setupSpec() {
specOutputDir_ = Paths.get(
Expand All @@ -41,6 +45,7 @@ class RepositoryVisitorGeneratingHtmlDivsAsModalBaseSpec extends Specification {
def cleanup() {}
def cleanupSpec() {}


@Ignore
def test_findTestSuiteTimestamp() {
expect:
Expand All @@ -54,31 +59,48 @@ class RepositoryVisitorGeneratingHtmlDivsAsModalBaseSpec extends Specification {
Helpers.copyDirectory(fixture_, caseOutputDir)
//
Path materialsDir = caseOutputDir.resolve('Materials')
Path storageDir = caseOutputDir.resolve('Storage')
Path reportsDir = caseOutputDir.resolve('Reports')
MaterialRepository mr = MaterialRepositoryFactory.createInstance(materialsDir)
MaterialStorage ms = MaterialStorageFactory.createInstance(storageDir)
// copy files from the Storage directory to the Materials directory
ms.restore(mr, [
TSuiteResultId.newInstance(
new TSuiteName('Test Suites/47News/chronos_capture'),
new TExecutionProfile('default'),
new TSuiteTimestamp('20190923_112138')),
TSuiteResultId.newInstance(
new TSuiteName('Test Suites/47News/chronos_capture'),
new TExecutionProfile('default'),
new TSuiteTimestamp('20190923_112816')),
])
ReportsAccessor ra = ReportsAccessorFactory.createInstance(reportsDir)
mr.scan()
TSuiteResult tsr = mr.getTSuiteResult(TSuiteResultId.newInstance(
new TSuiteName('Test Suites/47News/chronos_capture'),
new TExecutionProfile('default'),
new TSuiteTimestamp('20190923_112816')
))
assert tsr != null
TCaseResult tcr = tsr.getTCaseResult(
new TCaseName('Test Cases/47News/visitSite'))
assert tcr != null
List<Material> materialList = tcr.getMaterialList()
assert materialList != null
Material mate = materialList.get(0)

when:
Path output = materialsDir.resolve("test_findExecutionProfileName.html")
Writer writer = new OutputStreamWriter(new FileOutputStream(output.toFile()), 'utf-8')
MarkupBuilder markupBuilder = new MarkupBuilder(writer)
RepositoryVisitorGeneratingHtmlDivsAsModalConcise visitor = new RepositoryVisitorGeneratingHtmlDivsAsModalConcise(mr.getRepositoryRoot(), markupBuilder)
visitor.setReportsAccessor(ra)
assert visitor != null
//
MaterialCore mc = new MaterialCoreImpl(mate.getBaseDir(), mate.getPath())
String executionProfile = visitor.findExecutionProfileName(mr.getRepositoryRoot(), mc)
then:
executionProfile != null
executionProfile == 'default'
}

when:
def test_getExpectedMaterialOriginHref() {
setup:
// copy files from the fixtures directory to the Storage directory
Path caseOutputDir = specOutputDir_.resolve('test_getExpectedMaterialOriginHref')
Helpers.copyDirectory(fixture_, caseOutputDir)
//
Path materialsDir = caseOutputDir.resolve('Materials')
Path reportsDir = caseOutputDir.resolve('Reports')
MaterialRepository mr = MaterialRepositoryFactory.createInstance(materialsDir)
ReportsAccessor ra = ReportsAccessorFactory.createInstance(reportsDir)
mr.scan()
TSuiteResult tsr = mr.getTSuiteResult(TSuiteResultId.newInstance(
new TSuiteName('Test Suites/47News/chronos_capture'),
Expand All @@ -92,10 +114,22 @@ class RepositoryVisitorGeneratingHtmlDivsAsModalBaseSpec extends Specification {
List<Material> materialList = tcr.getMaterialList()
assert materialList != null
Material mate = materialList.get(0)
MaterialCore mc = new MaterialCoreImpl(mate.getBaseDir(), mate.getPath())
String executionProfile = visitor.findExecutionProfileName(mr.getRepositoryRoot(), mc)

when:
Path output = materialsDir.resolve("test_findExecutionProfileName.html")
Writer writer = new OutputStreamWriter(new FileOutputStream(output.toFile()), 'utf-8')
MarkupBuilder markupBuilder = new MarkupBuilder(writer)
RepositoryVisitorGeneratingHtmlDivsAsModalConcise visitor = new RepositoryVisitorGeneratingHtmlDivsAsModalConcise(mr.getRepositoryRoot(), markupBuilder)
visitor.setReportsAccessor(ra)
assert visitor != null
//
Path comparisonResultBundlePath = mr.getBaseDir().resolve("47News.chronos_exam/default/20190923_112817/47News.ImageDiff_chronos/comparison-result-bundle.json")
assert Files.exists(comparisonResultBundlePath)
String fullText = comparisonResultBundlePath.toFile().text
ComparisonResultBundle crb = new ComparisonResultBundle(mr.getBaseDir(), fullText)
String expectedHref = visitor.getExpectedMaterialOriginHref(mate.getBaseDir(), crb.get(0))
then:
executionProfile != null
executionProfile == 'default'
expectedHref == "https://www.47news.jp/"
}
}

}

0 comments on commit b114566

Please sign in to comment.