aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/cli/internal/encoding/gitoutput/validators_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'cli/internal/encoding/gitoutput/validators_test.go')
-rw-r--r--cli/internal/encoding/gitoutput/validators_test.go514
1 files changed, 0 insertions, 514 deletions
diff --git a/cli/internal/encoding/gitoutput/validators_test.go b/cli/internal/encoding/gitoutput/validators_test.go
deleted file mode 100644
index 29e1274..0000000
--- a/cli/internal/encoding/gitoutput/validators_test.go
+++ /dev/null
@@ -1,514 +0,0 @@
-package gitoutput
-
-import (
- "testing"
-)
-
-func Test_checkValid(t *testing.T) {
- type args struct {
- fieldType Field
- value []byte
- }
- tests := []struct {
- name string
- args args
- wantErr bool
- }{
- {
- name: "ObjectMode",
- args: args{
- fieldType: ObjectMode,
- value: []byte("100644"),
- },
- wantErr: false,
- },
- {
- name: "ObjectType",
- args: args{
- fieldType: ObjectType,
- value: []byte("blob"),
- },
- wantErr: false,
- },
- {
- name: "ObjectName",
- args: args{
- fieldType: ObjectName,
- value: []byte("8992ebf37df05fc5ff64c0f811a3259adff10d70"),
- },
- wantErr: false,
- },
- {
- name: "ObjectStage",
- args: args{
- fieldType: ObjectStage,
- value: []byte("0"),
- },
- wantErr: false,
- },
- {
- name: "StatusX",
- args: args{
- fieldType: StatusX,
- value: []byte("!"),
- },
- wantErr: false,
- },
- {
- name: "StatusY",
- args: args{
- fieldType: StatusY,
- value: []byte("?"),
- },
- wantErr: false,
- },
- {
- name: "Path",
- args: args{
- fieldType: Path,
- value: []byte("/hello/world"),
- },
- wantErr: false,
- },
- {
- name: "Unknown",
- args: args{
- fieldType: Field(12),
- value: []byte("unused"),
- },
- wantErr: true,
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- if err := checkValid(tt.args.fieldType, tt.args.value); (err != nil) != tt.wantErr {
- t.Errorf("checkValid() error = %v, wantErr %v", err, tt.wantErr)
- }
- })
- }
-}
-
-func Test_checkObjectMode(t *testing.T) {
- type args struct {
- value []byte
- }
- tests := []struct {
- name string
- args args
- wantErr bool
- }{
- {
- name: "Simple",
- args: args{
- value: []byte("100644"),
- },
- wantErr: false,
- },
- {
- name: "All sevens",
- args: args{
- value: []byte("777777"),
- },
- wantErr: false,
- },
- {
- name: "All zeroes",
- args: args{
- value: []byte("000000"),
- },
- wantErr: false,
- },
- {
- name: "Non-octal chars",
- args: args{
- value: []byte("sixsix"),
- },
- wantErr: true,
- },
- {
- name: "nul",
- args: args{
- value: []byte("\000\000\000\000\000\000"),
- },
- wantErr: true,
- },
- {
- name: "too long",
- args: args{
- value: []byte("1234567"),
- },
- wantErr: true,
- },
- {
- name: "off by plus one",
- args: args{
- value: []byte("888888"),
- },
- wantErr: true,
- },
- {
- name: "off by minus one",
- args: args{
- value: []byte("//////"),
- },
- wantErr: true,
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- if err := checkObjectMode(tt.args.value); (err != nil) != tt.wantErr {
- t.Errorf("checkObjectMode() error = %v, wantErr %v", err, tt.wantErr)
- }
- })
- }
-}
-
-func Test_checkObjectType(t *testing.T) {
- type args struct {
- value []byte
- }
- tests := []struct {
- name string
- args args
- wantErr bool
- }{
- {
- name: "Finds blob",
- args: args{
- value: []byte("blob"),
- },
- wantErr: false,
- },
- {
- name: "Finds tree",
- args: args{
- value: []byte("tree"),
- },
- wantErr: false,
- },
- {
- name: "Finds commit",
- args: args{
- value: []byte("commit"),
- },
- wantErr: false,
- },
- {
- name: "nonsense input",
- args: args{
- value: []byte("input"),
- },
- wantErr: true,
- },
- {
- name: "Knows too much about the implementation details (all 3)",
- args: args{
- value: []byte("blob tree commit"),
- },
- wantErr: true,
- },
- {
- name: "Knows too much about the implementation details (first two)",
- args: args{
- value: []byte("blob tree"),
- },
- wantErr: true,
- },
- {
- name: "Knows too much about the implementation details (last two)",
- args: args{
- value: []byte("tree commit"),
- },
- wantErr: true,
- },
- {
- name: "Knows too much about the implementation details (arbitrary substring)",
- args: args{
- value: []byte("tree c"),
- },
- wantErr: true,
- },
- {
- name: "Knows too much about the implementation details (space)",
- args: args{
- value: []byte(" "),
- },
- wantErr: true,
- },
- {
- name: "Knows too much about the implementation details (empty string)",
- args: args{
- value: []byte(""),
- },
- wantErr: true,
- },
- {
- name: "Knows too much about the implementation details (leading space)",
- args: args{
- value: []byte(" tree"),
- },
- wantErr: true,
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- if err := checkObjectType(tt.args.value); (err != nil) != tt.wantErr {
- t.Errorf("checkObjectType() error = %v, wantErr %v", err, tt.wantErr)
- }
- })
- }
-}
-
-func TestCheckObjectName(t *testing.T) {
- type args struct {
- value []byte
- }
- tests := []struct {
- name string
- args args
- wantErr bool
- }{
- {
- name: "Simple",
- args: args{
- value: []byte("8992ebf37df05fc5ff64c0f811a3259adff10d70"),
- },
- wantErr: false,
- },
- {
- name: "Too short",
- args: args{
- value: []byte("8992ebf37df05fc5ff64"),
- },
- wantErr: true,
- },
- {
- name: "Too long",
- args: args{
- value: []byte("8992ebf37df05fc5ff64c0f811a3259adff10d708992ebf37df05fc5ff64c0f811a3259adff10d70"),
- },
- wantErr: true,
- },
- {
- name: "Not hex",
- args: args{
- value: []byte("z992ebf37df05fc5ff64c0f811a3259adff10d70"),
- },
- wantErr: true,
- },
- {
- name: "Not lowercase",
- args: args{
- value: []byte("8992EBF37DF05FC5FF64C0F811A3259ADFF10D70"),
- },
- wantErr: true,
- },
- {
- name: "Off by plus one in the ASCII table (a-f).",
- args: args{
- value: []byte("gggggggggggggggggggggggggggggggggggggggg"),
- },
- wantErr: true,
- },
- {
- name: "Off by minus one in the ASCII table (a-f).",
- args: args{
- value: []byte("````````````````````````````````````````"),
- },
- wantErr: true,
- },
- {
- name: "Off by minus one in the ASCII table (0-9).",
- args: args{
- value: []byte("////////////////////////////////////////"),
- },
- wantErr: true,
- },
- {
- name: "Off by plus one in the ASCII table (0-9).",
- args: args{
- value: []byte("::::::::::::::::::::::::::::::::::::::::"),
- },
- wantErr: true,
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- if err := CheckObjectName(tt.args.value); (err != nil) != tt.wantErr {
- t.Errorf("CheckObjectName() error = %v, wantErr %v", err, tt.wantErr)
- }
- })
- }
-}
-
-func Test_checkObjectStage(t *testing.T) {
- type args struct {
- value []byte
- }
- tests := []struct {
- name string
- args args
- wantErr bool
- }{
- {
- name: "0",
- args: args{
- value: []byte("0"),
- },
- wantErr: false,
- },
- {
- name: "1",
- args: args{
- value: []byte("1"),
- },
- wantErr: false,
- },
- {
- name: "2",
- args: args{
- value: []byte("2"),
- },
- wantErr: false,
- },
- {
- name: "3",
- args: args{
- value: []byte("3"),
- },
- wantErr: false,
- },
- {
- name: "/",
- args: args{
- value: []byte("/"),
- },
- wantErr: true,
- },
- {
- name: "4",
- args: args{
- value: []byte("4"),
- },
- wantErr: true,
- },
- {
- name: "00",
- args: args{
- value: []byte("00"),
- },
- wantErr: true,
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- if err := checkObjectStage(tt.args.value); (err != nil) != tt.wantErr {
- t.Errorf("checkObjectStage() error = %v, wantErr %v", err, tt.wantErr)
- }
- })
- }
-}
-
-func Test_checkStatus(t *testing.T) {
- type args struct {
- value []byte
- }
- tests := []struct {
- name string
- args args
- wantErr bool
- }{
- {
- name: "Simple",
- args: args{
- value: []byte("D"),
- },
- wantErr: false,
- },
- {
- name: "Space",
- args: args{
- value: []byte(" "),
- },
- wantErr: false,
- },
- {
- name: "Empty",
- args: args{
- value: []byte(""),
- },
- wantErr: true,
- },
- {
- name: "Too long",
- args: args{
- value: []byte("?!"),
- },
- wantErr: true,
- },
- {
- name: "nul",
- args: args{
- value: []byte("\000"),
- },
- wantErr: true,
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- if err := checkStatusX(tt.args.value); (err != nil) != tt.wantErr {
- t.Errorf("checkStatusX() error = %v, wantErr %v", err, tt.wantErr)
- }
- if err := checkStatusY(tt.args.value); (err != nil) != tt.wantErr {
- t.Errorf("checkStatusY() error = %v, wantErr %v", err, tt.wantErr)
- }
- })
- }
-}
-
-func Test_checkPath(t *testing.T) {
- type args struct {
- value []byte
- }
- tests := []struct {
- name string
- args args
- wantErr bool
- }{
- {
- name: "Simple",
- args: args{
- value: []byte("./"),
- },
- wantErr: false,
- },
- {
- name: "newline",
- args: args{
- value: []byte("has\nnewline"),
- },
- wantErr: false,
- },
- {
- name: "Empty",
- args: args{
- value: []byte(""),
- },
- wantErr: true,
- },
- {
- name: "newline",
- args: args{
- value: []byte("\n"),
- },
- wantErr: false,
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- if err := checkPath(tt.args.value); (err != nil) != tt.wantErr {
- t.Errorf("checkPath() error = %v, wantErr %v", err, tt.wantErr)
- }
- })
- }
-}