mirror of https://github.com/harness/drone.git
115 lines
2.7 KiB
Go
115 lines
2.7 KiB
Go
// Copyright 2023 Harness, Inc.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package command
|
|
|
|
import (
|
|
"bytes"
|
|
"context"
|
|
"io"
|
|
"os"
|
|
"strings"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/harness/gitness/errors"
|
|
|
|
"github.com/rs/zerolog/log"
|
|
)
|
|
|
|
func TestCreateBareRepository(t *testing.T) {
|
|
cmd := New("init", WithFlag("--bare"), WithArg("samplerepo"))
|
|
|
|
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
|
defer cancel()
|
|
err := cmd.Run(ctx)
|
|
defer os.RemoveAll("samplerepo")
|
|
if err != nil {
|
|
t.Errorf("expected: %v error, got: %v", nil, err)
|
|
return
|
|
}
|
|
|
|
cmd = New("rev-parse", WithFlag("--is-bare-repository"))
|
|
output := &bytes.Buffer{}
|
|
err = cmd.Run(context.Background(), WithDir("samplerepo"), WithStdout(output))
|
|
if err != nil {
|
|
t.Errorf("expected: %v error, got: %v", nil, err)
|
|
return
|
|
}
|
|
got := strings.TrimSpace(output.String())
|
|
exp := "true"
|
|
if got != exp {
|
|
t.Errorf("expected value: %s, got: %s", exp, got)
|
|
return
|
|
}
|
|
}
|
|
|
|
func TestCommandContextTimeout(t *testing.T) {
|
|
cmd := New("init", WithFlag("--bare"), WithArg("samplerepo"))
|
|
|
|
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
|
|
defer cancel()
|
|
|
|
err := cmd.Run(ctx)
|
|
defer os.RemoveAll("samplerepo")
|
|
if err != nil {
|
|
t.Errorf("expected: %v error, got: %v", nil, err)
|
|
}
|
|
|
|
inbuff := &bytes.Buffer{}
|
|
inbuff.WriteString("some content")
|
|
outbuffer := &bytes.Buffer{}
|
|
|
|
cmd = New("hash-object", WithFlag("--stdin"))
|
|
err = cmd.Run(ctx,
|
|
WithDir("./samplerepo"),
|
|
WithStdin(inbuff),
|
|
WithStdout(outbuffer),
|
|
)
|
|
if err != nil {
|
|
t.Errorf("hashing object failed: %v", err)
|
|
return
|
|
}
|
|
|
|
log.Info().Msgf("outbuffer %s", outbuffer.String())
|
|
|
|
cmd = New("cat-file", WithFlag("--batch"))
|
|
|
|
pr, pw := io.Pipe()
|
|
defer pr.Close()
|
|
|
|
outbuffer.Reset()
|
|
|
|
go func() {
|
|
defer pw.Close()
|
|
for i := 0; i < 3; i++ {
|
|
_, _ = pw.Write(outbuffer.Bytes())
|
|
time.Sleep(1 * time.Second)
|
|
}
|
|
}()
|
|
|
|
runCtx, runCancel := context.WithTimeout(context.Background(), 1*time.Second)
|
|
defer runCancel()
|
|
|
|
err = cmd.Run(runCtx,
|
|
WithDir("./samplerepo"),
|
|
WithStdin(pr),
|
|
WithStdout(outbuffer),
|
|
)
|
|
|
|
if !errors.Is(err, context.DeadlineExceeded) {
|
|
t.Errorf("expected: %v error, got: %v", context.DeadlineExceeded, err)
|
|
}
|
|
}
|