mirror of
				https://codeberg.org/forgejo/forgejo.git
				synced 2025-10-30 14:01:02 +00:00 
			
		
		
		
	assert.Fail() will continue to execute the code while assert.FailNow() not. I thought those uses of assert.Fail() should exit immediately. PS: perhaps it's a good idea to use [require](https://pkg.go.dev/github.com/stretchr/testify/require) somewhere because the assert package's default behavior does not exit when an error occurs, which makes it difficult to find the root error reason.
		
			
				
	
	
		
			97 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright 2021 The Gitea Authors. All rights reserved.
 | |
| // SPDX-License-Identifier: MIT
 | |
| 
 | |
| package git
 | |
| 
 | |
| import (
 | |
| 	"testing"
 | |
| 	"time"
 | |
| 
 | |
| 	"github.com/stretchr/testify/assert"
 | |
| )
 | |
| 
 | |
| func Test_nulSeparatedAttributeWriter_ReadAttribute(t *testing.T) {
 | |
| 	wr := &nulSeparatedAttributeWriter{
 | |
| 		attributes: make(chan attributeTriple, 5),
 | |
| 	}
 | |
| 
 | |
| 	testStr := ".gitignore\"\n\x00linguist-vendored\x00unspecified\x00"
 | |
| 
 | |
| 	n, err := wr.Write([]byte(testStr))
 | |
| 
 | |
| 	assert.Len(t, testStr, n)
 | |
| 	assert.NoError(t, err)
 | |
| 	select {
 | |
| 	case attr := <-wr.ReadAttribute():
 | |
| 		assert.Equal(t, ".gitignore\"\n", attr.Filename)
 | |
| 		assert.Equal(t, "linguist-vendored", attr.Attribute)
 | |
| 		assert.Equal(t, "unspecified", attr.Value)
 | |
| 	case <-time.After(100 * time.Millisecond):
 | |
| 		assert.FailNow(t, "took too long to read an attribute from the list")
 | |
| 	}
 | |
| 	// Write a second attribute again
 | |
| 	n, err = wr.Write([]byte(testStr))
 | |
| 
 | |
| 	assert.Len(t, testStr, n)
 | |
| 	assert.NoError(t, err)
 | |
| 
 | |
| 	select {
 | |
| 	case attr := <-wr.ReadAttribute():
 | |
| 		assert.Equal(t, ".gitignore\"\n", attr.Filename)
 | |
| 		assert.Equal(t, "linguist-vendored", attr.Attribute)
 | |
| 		assert.Equal(t, "unspecified", attr.Value)
 | |
| 	case <-time.After(100 * time.Millisecond):
 | |
| 		assert.FailNow(t, "took too long to read an attribute from the list")
 | |
| 	}
 | |
| 
 | |
| 	// Write a partial attribute
 | |
| 	_, err = wr.Write([]byte("incomplete-file"))
 | |
| 	assert.NoError(t, err)
 | |
| 	_, err = wr.Write([]byte("name\x00"))
 | |
| 	assert.NoError(t, err)
 | |
| 
 | |
| 	select {
 | |
| 	case <-wr.ReadAttribute():
 | |
| 		assert.FailNow(t, "There should not be an attribute ready to read")
 | |
| 	case <-time.After(100 * time.Millisecond):
 | |
| 	}
 | |
| 	_, err = wr.Write([]byte("attribute\x00"))
 | |
| 	assert.NoError(t, err)
 | |
| 	select {
 | |
| 	case <-wr.ReadAttribute():
 | |
| 		assert.FailNow(t, "There should not be an attribute ready to read")
 | |
| 	case <-time.After(100 * time.Millisecond):
 | |
| 	}
 | |
| 
 | |
| 	_, err = wr.Write([]byte("value\x00"))
 | |
| 	assert.NoError(t, err)
 | |
| 
 | |
| 	attr := <-wr.ReadAttribute()
 | |
| 	assert.Equal(t, "incomplete-filename", attr.Filename)
 | |
| 	assert.Equal(t, "attribute", attr.Attribute)
 | |
| 	assert.Equal(t, "value", attr.Value)
 | |
| 
 | |
| 	_, err = wr.Write([]byte("shouldbe.vendor\x00linguist-vendored\x00set\x00shouldbe.vendor\x00linguist-generated\x00unspecified\x00shouldbe.vendor\x00linguist-language\x00unspecified\x00"))
 | |
| 	assert.NoError(t, err)
 | |
| 	attr = <-wr.ReadAttribute()
 | |
| 	assert.NoError(t, err)
 | |
| 	assert.EqualValues(t, attributeTriple{
 | |
| 		Filename:  "shouldbe.vendor",
 | |
| 		Attribute: "linguist-vendored",
 | |
| 		Value:     "set",
 | |
| 	}, attr)
 | |
| 	attr = <-wr.ReadAttribute()
 | |
| 	assert.NoError(t, err)
 | |
| 	assert.EqualValues(t, attributeTriple{
 | |
| 		Filename:  "shouldbe.vendor",
 | |
| 		Attribute: "linguist-generated",
 | |
| 		Value:     "unspecified",
 | |
| 	}, attr)
 | |
| 	attr = <-wr.ReadAttribute()
 | |
| 	assert.NoError(t, err)
 | |
| 	assert.EqualValues(t, attributeTriple{
 | |
| 		Filename:  "shouldbe.vendor",
 | |
| 		Attribute: "linguist-language",
 | |
| 		Value:     "unspecified",
 | |
| 	}, attr)
 | |
| }
 |