github.com/darmach/terratest@v0.34.8-0.20210517103231-80931f95e3ff/modules/logger/parser/failed_test_marker_test.go (about) 1 package parser 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 ) 8 9 func createTestStack() TestResultMarkerStack { 10 return TestResultMarkerStack{ 11 TestResultMarker{ 12 TestName: "TestSnafu", 13 IndentLevel: 0, 14 }, 15 TestResultMarker{ 16 TestName: "TestSnafu/Situation", 17 IndentLevel: 4, 18 }, 19 TestResultMarker{ 20 TestName: "TestSnafu/Normal", 21 IndentLevel: 4, 22 }, 23 } 24 } 25 26 // Test that pushing items to the stack appends to the list 27 func TestStackPush(t *testing.T) { 28 t.Parallel() 29 30 markers := createTestStack() 31 newMarker := TestResultMarker{ 32 TestName: "TestThatEverythingWorks", 33 IndentLevel: 0, 34 } 35 markers = markers.push(newMarker) 36 assert.Equal(t, len(markers), 4) 37 assert.Equal(t, markers[3], newMarker) 38 } 39 40 // Test that popping items off the stack will remove it from the stack and return the LAST item in list 41 func TestStackPop(t *testing.T) { 42 t.Parallel() 43 44 originalMarkers := createTestStack() 45 markers := createTestStack() 46 markers, poppedMarker := markers.pop() 47 assert.Equal(t, poppedMarker, originalMarkers[2]) 48 assert.Equal(t, len(markers), 2) 49 markers, poppedMarker = markers.pop() 50 assert.Equal(t, poppedMarker, originalMarkers[1]) 51 assert.Equal(t, len(markers), 1) 52 markers, poppedMarker = markers.pop() 53 assert.Equal(t, poppedMarker, originalMarkers[0]) 54 assert.Equal(t, len(markers), 0) 55 } 56 57 // Test that popping item off an empty stack will return an empty TestResultMarker 58 func TestStackPopEmpty(t *testing.T) { 59 t.Parallel() 60 61 markers := TestResultMarkerStack{} 62 markers, poppedMarker := markers.pop() 63 assert.Equal(t, len(markers), 0) 64 assert.Equal(t, poppedMarker, NULL_TEST_RESULT_MARKER) 65 } 66 67 // Test that peek will return the LAST item in the list WITHOUT removing it. 68 func TestPeek(t *testing.T) { 69 t.Parallel() 70 71 originalMarkers := createTestStack() 72 markers := createTestStack() 73 peekedMarker := markers.peek() 74 assert.Equal(t, peekedMarker, originalMarkers[2]) 75 assert.Equal(t, originalMarkers, markers) 76 } 77 78 // Test that peeking an empty stack will return an empty TestResultMarker 79 func TestPeekEmpty(t *testing.T) { 80 t.Parallel() 81 82 markers := TestResultMarkerStack{} 83 peekedMarker := markers.peek() 84 assert.Equal(t, len(markers), 0) 85 assert.Equal(t, peekedMarker, NULL_TEST_RESULT_MARKER) 86 } 87 88 // Test isEmpty only returns True on empty stack 89 func TestIsEmpty(t *testing.T) { 90 t.Parallel() 91 92 emptyMarkerStack := TestResultMarkerStack{} 93 fullMarkerStack := createTestStack() 94 assert.True(t, emptyMarkerStack.isEmpty()) 95 assert.False(t, fullMarkerStack.isEmpty()) 96 } 97 98 // Test that removeDedentedTestResultMarkers remove items that are dedented from the current level, assuming the stack 99 // is ordered by indent level. 100 func TestRemoveDedentedTestResultMarkers(t *testing.T) { 101 t.Parallel() 102 103 originalMarkers := createTestStack() 104 newMarkers := originalMarkers.removeDedentedTestResultMarkers(2) 105 assert.Equal(t, len(newMarkers), 1) 106 assert.Equal(t, newMarkers, originalMarkers[:1]) 107 } 108 109 // Test that removeDedentedTestResultMarkers handles empty stack. 110 func TestRemoveDedentedTestResultMarkersEmpty(t *testing.T) { 111 t.Parallel() 112 113 originalMarkers := TestResultMarkerStack{} 114 newMarkers := originalMarkers.removeDedentedTestResultMarkers(2) 115 assert.Equal(t, len(newMarkers), 0) 116 } 117 118 // Test that removeDedentedTestResultMarkers handles removing everything 119 func TestRemoveDedentedTestResultMarkersAll(t *testing.T) { 120 t.Parallel() 121 122 originalMarkers := TestResultMarkerStack{} 123 newMarkers := originalMarkers.removeDedentedTestResultMarkers(-1) 124 assert.Equal(t, len(newMarkers), 0) 125 }