loading up the forgejo repo on tangled to test page performance
at forgejo 2.2 kB view raw
1// Copyright 2022 The Gitea Authors. All rights reserved. 2// SPDX-License-Identifier: MIT 3 4package git 5 6import ( 7 "testing" 8 9 "github.com/stretchr/testify/assert" 10 "github.com/stretchr/testify/require" 11) 12 13func TestRunWithContextStd(t *testing.T) { 14 cmd := NewCommand(t.Context(), "--version") 15 stdout, stderr, err := cmd.RunStdString(&RunOpts{}) 16 require.NoError(t, err) 17 assert.Empty(t, stderr) 18 assert.Contains(t, stdout, "git version") 19 20 cmd = NewCommand(t.Context(), "--no-such-arg") 21 stdout, stderr, err = cmd.RunStdString(&RunOpts{}) 22 if assert.Error(t, err) { 23 assert.Equal(t, stderr, err.Stderr()) 24 assert.Contains(t, err.Stderr(), "unknown option:") 25 assert.Contains(t, err.Error(), "exit status 129 - unknown option:") 26 assert.Empty(t, stdout) 27 } 28 29 cmd = NewCommand(t.Context()) 30 cmd.AddDynamicArguments("-test") 31 require.ErrorIs(t, cmd.Run(&RunOpts{}), ErrBrokenCommand) 32 33 cmd = NewCommand(t.Context()) 34 cmd.AddDynamicArguments("--test") 35 require.ErrorIs(t, cmd.Run(&RunOpts{}), ErrBrokenCommand) 36 37 subCmd := "version" 38 cmd = NewCommand(t.Context()).AddDynamicArguments(subCmd) // for test purpose only, the sub-command should never be dynamic for production 39 stdout, stderr, err = cmd.RunStdString(&RunOpts{}) 40 require.NoError(t, err) 41 assert.Empty(t, stderr) 42 assert.Contains(t, stdout, "git version") 43} 44 45func TestGitArgument(t *testing.T) { 46 assert.True(t, isValidArgumentOption("-x")) 47 assert.True(t, isValidArgumentOption("--xx")) 48 assert.False(t, isValidArgumentOption("")) 49 assert.False(t, isValidArgumentOption("x")) 50 51 assert.True(t, isSafeArgumentValue("")) 52 assert.True(t, isSafeArgumentValue("x")) 53 assert.False(t, isSafeArgumentValue("-x")) 54} 55 56func TestCommandString(t *testing.T) { 57 cmd := NewCommandContextNoGlobals(t.Context(), "a", "-m msg", "it's a test", `say "hello"`) 58 assert.Equal(t, cmd.prog+` a "-m msg" "it's a test" "say \"hello\""`, cmd.String()) 59 60 cmd = NewCommandContextNoGlobals(t.Context(), "url: https://a:b@c/") 61 assert.Equal(t, cmd.prog+` "url: https://sanitized-credential@c/"`, cmd.toString(true)) 62} 63 64func TestGrepOnlyFunction(t *testing.T) { 65 cmd := NewCommand(t.Context(), "anything-but-grep") 66 assert.Panics(t, func() { 67 cmd.AddGitGrepExpression("whatever") 68 }) 69}