diff --git a/src/Microdown-BookTester-Tests/MicReferenceCheckerTest.class.st b/src/Microdown-BookTester-Tests/MicReferenceCheckerTest.class.st index 561af919..2a6441eb 100644 --- a/src/Microdown-BookTester-Tests/MicReferenceCheckerTest.class.st +++ b/src/Microdown-BookTester-Tests/MicReferenceCheckerTest.class.st @@ -702,6 +702,44 @@ MicReferenceCheckerTest >> testRefersToUnkAncS1 [ self assert: visitor results first source equals: '/fileRefAncS1.md' ] +{ #category : 'tests - duplicated' } +MicReferenceCheckerTest >> testReportingSTONFormatDuplicatedAnchors [ + + | defAncS0TripleAncS1RefAncS1AncS0 checker | + defAncS0TripleAncS1RefAncS1AncS0 := self defAncS0TripleAncS1RefAncS1AncS0. + checker := MicReferenceChecker new. + checker checkList: { defAncS0TripleAncS1RefAncS1AncS0 }. + + self assert: checker reportSTONFormat equals: '[''type'':''DuplicatedAnchor'',[''ancS1'':''/myDirectory/defAncS0TripleAncS1RefAncS1AncS0.md'',''ancS1'':''/myDirectory/defAncS0TripleAncS1RefAncS1AncS0.md'']]' + + +] + +{ #category : 'tests - duplicated' } +MicReferenceCheckerTest >> testReportingSTONFormatDuplicatedFigure [ + + | checker | + self fileRefAncS1. + checker := MicReferenceChecker new. + checker rootDirectory: dir. + checker checkProject: refAncS1. + + self assert: checker reportSTONFormat equals: '[''type'':''UndefinedAnchor'',[''ancS1'':''/fileRefAncS1.md'']]' +] + +{ #category : 'tests - duplicated' } +MicReferenceCheckerTest >> testReportingSTONFormatUnknownAnchorDir [ + + | checker | + self fileRefAncS1. + checker := MicReferenceChecker new. + checker rootDirectory: dir. + checker checkProject: refAncS1. + + self assert: checker reportSTONFormat equals: '[''type'':''UndefinedAnchor'',[''ancS1'':''/fileRefAncS1.md'']]' + +] + { #category : 'skipped for now' } MicReferenceCheckerTest >> testReportingUnknownAnchorDir [ diff --git a/src/Microdown-BookTester-Tests/MicResultTest.class.st b/src/Microdown-BookTester-Tests/MicResultTest.class.st index e5650aef..73065e4c 100644 --- a/src/Microdown-BookTester-Tests/MicResultTest.class.st +++ b/src/Microdown-BookTester-Tests/MicResultTest.class.st @@ -37,6 +37,44 @@ MicResultTest >> testExplanationUndefinedAnchor [ ] +{ #category : 'tests' } +MicResultTest >> testSTONFormatExplanationDuplicatedAnchor [ + + | res association | + res := MicDuplicatedAnchorResult new. + res anchorLabel: 'ancS0'. + "pay attention since in this package fromFile is pass a fullName and not a file we will have to change + this later" + res source: '/myDir/chapter1.md'. + + association := res stonFormatExplanation. + + self + assert: (association isKindOf: Association ); + assert: association key equals: 'ancS0'; + assert: association value equals: '/myDir/chapter1.md' + +] + +{ #category : 'tests' } +MicResultTest >> testSTONFormatExplanationUndefinedAnchor [ + + | res association | + res := MicUndefinedAnchorResult new. + res anchorLabel: 'ancS0'. + "pay attention since in this package fromFile is pass a fullName and not a file we will have to change + this later" + res source: '/myDir/chapter1.md'. + + association := res stonFormatExplanation. + + self + assert: (association isKindOf: Association ); + assert: association key equals: 'ancS0'; + assert: association value equals: '/myDir/chapter1.md' + +] + { #category : 'tests' } MicResultTest >> testUndefinedFigureFile [ diff --git a/src/Microdown-BookTester/MicAnchorResult.class.st b/src/Microdown-BookTester/MicAnchorResult.class.st index 2c8cfad6..d15a28c9 100644 --- a/src/Microdown-BookTester/MicAnchorResult.class.st +++ b/src/Microdown-BookTester/MicAnchorResult.class.st @@ -8,6 +8,12 @@ Class { #package : 'Microdown-BookTester' } +{ #category : 'kinds' } +MicAnchorResult class >> errorType [ + + ^ 'UndefinedAnchor' +] + { #category : 'accessing' } MicAnchorResult >> anchorLabel [ @@ -31,3 +37,10 @@ MicAnchorResult >> explanation [ MicAnchorResult >> isWhat [ ^ 'undefined' ] + +{ #category : 'accessing' } +MicAnchorResult >> stonFormatExplanation [ + + ^ Association new key: anchorLabel value: source + +] diff --git a/src/Microdown-BookTester/MicBookTestResult.class.st b/src/Microdown-BookTester/MicBookTestResult.class.st index ab924a0f..2156351a 100644 --- a/src/Microdown-BookTester/MicBookTestResult.class.st +++ b/src/Microdown-BookTester/MicBookTestResult.class.st @@ -141,6 +141,29 @@ MicBookTestResult >> isValid [ ^ status ] +{ #category : 'accessing' } +MicBookTestResult >> stonFormatExplanation [ + + ^ '{', String cr , '"status" : "', + (self class allMessages at: self status asString) asString ,'",', + String cr , + '"isExpectedFailure" : "', + self isExpectedFailure asString ,'",', + String cr , + '"Description" : "' , + self message asString ,'",', + String cr , + '"codeBlock" : "', + self text , '",', + String cr , + '"sourceFile" : "' , + self source asString , '"', + String cr , '}' + + + +] + { #category : 'accessing' } MicBookTestResult >> text [ diff --git a/src/Microdown-BookTester/MicDuplicatedAnchorResult.class.st b/src/Microdown-BookTester/MicDuplicatedAnchorResult.class.st index 29c91f98..b9ccfb27 100644 --- a/src/Microdown-BookTester/MicDuplicatedAnchorResult.class.st +++ b/src/Microdown-BookTester/MicDuplicatedAnchorResult.class.st @@ -5,6 +5,12 @@ Class { #package : 'Microdown-BookTester' } +{ #category : 'kinds' } +MicDuplicatedAnchorResult class >> errorType [ + + ^ 'DuplicatedAnchor' +] + { #category : 'kinds' } MicDuplicatedAnchorResult class >> headerString [ diff --git a/src/Microdown-BookTester/MicFileResult.class.st b/src/Microdown-BookTester/MicFileResult.class.st index dbd80f7f..92f41e9e 100644 --- a/src/Microdown-BookTester/MicFileResult.class.st +++ b/src/Microdown-BookTester/MicFileResult.class.st @@ -12,6 +12,13 @@ MicFileResult >> explanation [ ] +{ #category : 'accessing' } +MicFileResult >> stonFormatExplanation [ + + ^ '"', self what,'" : "', source , '"' + +] + { #category : 'accessing' } MicFileResult >> what [ diff --git a/src/Microdown-BookTester/MicReferenceChecker.class.st b/src/Microdown-BookTester/MicReferenceChecker.class.st index 96d725aa..2b1506b6 100644 --- a/src/Microdown-BookTester/MicReferenceChecker.class.st +++ b/src/Microdown-BookTester/MicReferenceChecker.class.st @@ -57,6 +57,7 @@ MicReferenceChecker >> addDuplicatedAnchor: anAnchor [ MicReferenceChecker >> buildReportOn: str [ | dict | + dict := results groupedBy: [ :each | each class ]. dict keysAndValuesDo: [ :k :v | str cr; nextPutAll: '## ' ;nextPutAll: k headerString; cr; cr. @@ -65,6 +66,22 @@ MicReferenceChecker >> buildReportOn: str [ ] ] +{ #category : 'reporting' } +MicReferenceChecker >> buildReportSTONFormatOn: str [ + + | dict list | + dict := results groupedBy: [ :each | each class ]. + dict keysAndValuesDo: [ :k :v | |array| + array := Array new: 2. + list := OrderedCollection new. + self reportElementsSTONFormatOn: list. + list := list asArray. + array at: 1 put: (Association new key: 'type' value: k errorType); + at: 2 put: list. + (String streamContents: [ :out | STON put: array onStream: str ]) + ] +] + { #category : 'main API' } MicReferenceChecker >> checkDirectory: aDir [ "Take the directory, parse all its children with microdown file parser and let the visitor visit each time then return visitor is ok which should be true if every thing is okay, the visitor turned out to treat the many documents that it visits as one, so if anchor is duplicated in another file it will detect that . " @@ -197,6 +214,21 @@ MicReferenceChecker >> reportElementsOn: aStream [ ] +{ #category : 'reporting' } +MicReferenceChecker >> reportElementsSTONFormatOn: aList [ + + results do: [ :each | aList add: each stonFormatExplanation ]. + +] + +{ #category : 'reporting' } +MicReferenceChecker >> reportSTONFormat [ + + ^ String streamContents: [ :str | + self buildReportSTONFormatOn: str + ] +] + { #category : 'accessing' } MicReferenceChecker >> results [ diff --git a/src/Microdown-BookTester/MicResult.class.st b/src/Microdown-BookTester/MicResult.class.st index 99c8f08b..5426cbc5 100644 --- a/src/Microdown-BookTester/MicResult.class.st +++ b/src/Microdown-BookTester/MicResult.class.st @@ -23,6 +23,12 @@ Class { #package : 'Microdown-BookTester' } +{ #category : 'kinds' } +MicResult class >> errorType [ + + ^ self subclassResponsibility +] + { #category : 'kinds' } MicResult class >> headerString [ @@ -70,3 +76,9 @@ MicResult >> status: anObject [ status := anObject ] + +{ #category : 'accessing' } +MicResult >> stonFormatExplanation [ + + ^ self subclassResponsibility +] diff --git a/src/Microdown-BookTester/MicUndefinedAnchorResult.class.st b/src/Microdown-BookTester/MicUndefinedAnchorResult.class.st index 2d09e914..ef46c28a 100644 --- a/src/Microdown-BookTester/MicUndefinedAnchorResult.class.st +++ b/src/Microdown-BookTester/MicUndefinedAnchorResult.class.st @@ -5,6 +5,12 @@ Class { #package : 'Microdown-BookTester' } +{ #category : 'kinds' } +MicUndefinedAnchorResult class >> errorType [ + + ^ 'UndefinedAnchor' +] + { #category : 'kinds' } MicUndefinedAnchorResult class >> headerString [ diff --git a/src/Microdown-BookTester/MicUndefinedFigureFileResult.class.st b/src/Microdown-BookTester/MicUndefinedFigureFileResult.class.st index bac5e8e2..4bdfaf66 100644 --- a/src/Microdown-BookTester/MicUndefinedFigureFileResult.class.st +++ b/src/Microdown-BookTester/MicUndefinedFigureFileResult.class.st @@ -8,6 +8,12 @@ Class { #package : 'Microdown-BookTester' } +{ #category : 'kinds' } +MicUndefinedFigureFileResult class >> errorType [ + + ^ 'UndefinedFigureFiles:' +] + { #category : 'kinds' } MicUndefinedFigureFileResult class >> headerString [ diff --git a/src/Microdown-BookTester/MicUndefinedInputFileResult.class.st b/src/Microdown-BookTester/MicUndefinedInputFileResult.class.st index 170a435e..7e389538 100644 --- a/src/Microdown-BookTester/MicUndefinedInputFileResult.class.st +++ b/src/Microdown-BookTester/MicUndefinedInputFileResult.class.st @@ -8,6 +8,12 @@ Class { #package : 'Microdown-BookTester' } +{ #category : 'kinds' } +MicUndefinedInputFileResult class >> errorType [ + + ^ 'UndefinedInputFiles' +] + { #category : 'kinds' } MicUndefinedInputFileResult class >> headerString [