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  }