Adding upstream version 3.10.8.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
37e9b6d587
commit
03bfe4079e
356 changed files with 28857 additions and 0 deletions
166
f3/file_format_test.go
Normal file
166
f3/file_format_test.go
Normal file
|
@ -0,0 +1,166 @@
|
|||
// Copyright Earl Warren <contact@earl-warren.org>
|
||||
// Copyright Loïc Dachary <loic@dachary.org>
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
package f3
|
||||
|
||||
import (
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/santhosh-tekuri/jsonschema/v6"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestStoreLoad(t *testing.T) {
|
||||
tmpDir := t.TempDir()
|
||||
|
||||
type S struct {
|
||||
A int
|
||||
B string
|
||||
}
|
||||
original := S{A: 1, B: "B"}
|
||||
p := filepath.Join(tmpDir, "s.json")
|
||||
assert.NoError(t, Store(p, original))
|
||||
var loaded S
|
||||
assert.NoError(t, Load(p, &loaded, false))
|
||||
assert.EqualValues(t, original, loaded)
|
||||
}
|
||||
|
||||
func TestF3_CI(t *testing.T) {
|
||||
var ci CI
|
||||
err := Load("file_format_testdata/ci/good.json", &ci, true)
|
||||
assert.NoError(t, err)
|
||||
err = Load("file_format_testdata/ci/bad.json", &ci, true)
|
||||
assert.ErrorContains(t, err, "'/index': value must be one of")
|
||||
}
|
||||
|
||||
func TestF3_User(t *testing.T) {
|
||||
var user User
|
||||
err := Load("file_format_testdata/user/good.json", &user, true)
|
||||
assert.NoError(t, err)
|
||||
err = Load("file_format_testdata/user/bad.json", &user, true)
|
||||
assert.ErrorContains(t, err, "missing properties 'index'")
|
||||
}
|
||||
|
||||
func TestF3_Organization(t *testing.T) {
|
||||
var organization Organization
|
||||
err := Load("file_format_testdata/organization/good.json", &organization, true)
|
||||
assert.NoError(t, err)
|
||||
err = Load("file_format_testdata/organization/bad.json", &organization, true)
|
||||
assert.ErrorContains(t, err, "missing properties 'index'")
|
||||
}
|
||||
|
||||
func TestF3_Project(t *testing.T) {
|
||||
var project Project
|
||||
err := Load("file_format_testdata/project/good.json", &project, true)
|
||||
assert.NoError(t, err)
|
||||
err = Load("file_format_testdata/project/bad.json", &project, true)
|
||||
assert.ErrorContains(t, err, "'/stars': got string, want number")
|
||||
}
|
||||
|
||||
func TestF3_Issue(t *testing.T) {
|
||||
var issue Issue
|
||||
err := Load("file_format_testdata/issue/good.json", &issue, true)
|
||||
assert.NoError(t, err)
|
||||
err = Load("file_format_testdata/issue/bad.json", &issue, true)
|
||||
assert.ErrorContains(t, err, "missing property 'index'")
|
||||
}
|
||||
|
||||
func TestF3_PullRequest(t *testing.T) {
|
||||
var pullRequest PullRequest
|
||||
err := Load("file_format_testdata/pullrequest/good.json", &pullRequest, true)
|
||||
assert.NoError(t, err)
|
||||
err = Load("file_format_testdata/pullrequest/bad.json", &pullRequest, true)
|
||||
assert.ErrorContains(t, err, "missing properties 'index'")
|
||||
}
|
||||
|
||||
func TestF3_Release(t *testing.T) {
|
||||
var release Release
|
||||
err := Load("file_format_testdata/release/good.json", &release, true)
|
||||
assert.NoError(t, err)
|
||||
err = Load("file_format_testdata/release/bad.json", &release, true)
|
||||
assert.ErrorContains(t, err, "missing properties 'index'")
|
||||
}
|
||||
|
||||
func TestF3_ReleaseAsset(t *testing.T) {
|
||||
var releaseAsset ReleaseAsset
|
||||
err := Load("file_format_testdata/releaseasset/good.json", &releaseAsset, true)
|
||||
assert.NoError(t, err)
|
||||
err = Load("file_format_testdata/releaseasset/bad.json", &releaseAsset, true)
|
||||
assert.ErrorContains(t, err, "missing properties 'index'")
|
||||
}
|
||||
|
||||
func TestF3_Comment(t *testing.T) {
|
||||
var comment Comment
|
||||
err := Load("file_format_testdata/comment/good.json", &comment, true)
|
||||
assert.NoError(t, err)
|
||||
err = Load("file_format_testdata/comment/bad.json", &comment, true)
|
||||
assert.ErrorContains(t, err, "'/created': 'AAAAAAAAA' is not valid date-time")
|
||||
}
|
||||
|
||||
func TestF3_Label(t *testing.T) {
|
||||
var label Label
|
||||
err := Load("file_format_testdata/label/good.json", &label, true)
|
||||
assert.NoError(t, err)
|
||||
err = Load("file_format_testdata/label/bad.json", &label, true)
|
||||
assert.ErrorContains(t, err, "'/exclusive': got string, want boolean")
|
||||
}
|
||||
|
||||
func TestF3_Milestone(t *testing.T) {
|
||||
var milestone Milestone
|
||||
err := Load("file_format_testdata/milestone/good.json", &milestone, true)
|
||||
assert.NoError(t, err)
|
||||
err = Load("file_format_testdata/milestone/bad.json", &milestone, true)
|
||||
assert.ErrorContains(t, err, "missing properties 'index'")
|
||||
}
|
||||
|
||||
func TestF3_Review(t *testing.T) {
|
||||
var review Review
|
||||
err := Load("file_format_testdata/review/good.json", &review, true)
|
||||
assert.NoError(t, err)
|
||||
err = Load("file_format_testdata/review/bad.json", &review, true)
|
||||
assert.ErrorContains(t, err, "missing properties 'index'")
|
||||
}
|
||||
|
||||
func TestF3_Reaction(t *testing.T) {
|
||||
var reaction Reaction
|
||||
err := Load("file_format_testdata/reaction/good.json", &reaction, true)
|
||||
assert.NoError(t, err)
|
||||
err = Load("file_format_testdata/reaction/bad.json", &reaction, true)
|
||||
assert.ErrorContains(t, err, "missing properties 'index'")
|
||||
}
|
||||
|
||||
func TestF3_Repository(t *testing.T) {
|
||||
var repository Repository
|
||||
err := Load("file_format_testdata/repository/good.json", &repository, true)
|
||||
assert.NoError(t, err)
|
||||
err = Load("file_format_testdata/repository/bad.json", &repository, true)
|
||||
assert.ErrorContains(t, err, "missing property 'name'")
|
||||
}
|
||||
|
||||
func TestF3_ReviewComment(t *testing.T) {
|
||||
var reviewComment ReviewComment
|
||||
err := Load("file_format_testdata/reviewcomment/good.json", &reviewComment, true)
|
||||
assert.NoError(t, err)
|
||||
err = Load("file_format_testdata/reviewcomment/bad.json", &reviewComment, true)
|
||||
assert.ErrorContains(t, err, "missing properties 'index'")
|
||||
}
|
||||
|
||||
func TestF3_Topic(t *testing.T) {
|
||||
var topic Topic
|
||||
err := Load("file_format_testdata/topic.json", &topic, true)
|
||||
assert.NoError(t, err)
|
||||
}
|
||||
|
||||
func TestF3_ValidationFail(t *testing.T) {
|
||||
var issue Issue
|
||||
err := Load("file_format_testdata/issue/bad.json", &issue, true)
|
||||
if _, ok := err.(*jsonschema.ValidationError); ok {
|
||||
errors := strings.Split(err.(*jsonschema.ValidationError).GoString(), "\n")
|
||||
assert.Contains(t, errors[1], "missing property")
|
||||
} else {
|
||||
t.Fatalf("got: type %T with value %s, want: *jsonschema.ValidationError", err, err)
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue