Compare commits

..

No commits in common. "1cf983a6479ccef4a440476ee4b8f55e38812284" and "c6406888a9ae39fe171e9ecf5a66c47573077ede" have entirely different histories.

10 changed files with 36 additions and 116 deletions

View File

@ -22,7 +22,6 @@ tasks:
cmds:
- task: build-windows
- task: build-linux
- task: build-macos
vet:
desc: Vet the code
@ -47,12 +46,6 @@ tasks:
- GOOS=linux GOARCH=amd64 go build -ldflags "-X 'main.version={{.VERSION}}'" -o {{.BIN_DIR}}/{{.PROGRAM}}_linux_amd64
internal: true
build-macos:
desc: Build the gobs-cli project for macOS
cmds:
- GOOS=darwin GOARCH=amd64 go build -ldflags "-X 'main.version={{.VERSION}}'" -o {{.BIN_DIR}}/{{.PROGRAM}}_darwin_amd64
internal: true
test:
desc: Run tests
cmds:

View File

@ -33,7 +33,7 @@ func TestFilterListScene(t *testing.T) {
context := newContext(client, &out, StyleConfig{})
cmd := &FilterListCmd{
SourceName: "gobs-test-scene",
SourceName: "gobs-test",
}
err := cmd.Run(context)
if err != nil {

View File

@ -2,20 +2,11 @@ package main
import (
"bytes"
"os"
"strings"
"testing"
)
func skipIfSkipGroupTests(t *testing.T) {
if os.Getenv("GOBS_TEST_SKIP_GROUP_TESTS") != "" {
t.Skip("Skipping group tests due to GOBS_TEST_SKIP_GROUP_TESTS environment variable")
}
}
func TestGroupList(t *testing.T) {
skipIfSkipGroupTests(t)
client, disconnect := getClient(t)
defer disconnect()
@ -35,8 +26,6 @@ func TestGroupList(t *testing.T) {
}
func TestGroupShow(t *testing.T) {
skipIfSkipGroupTests(t)
client, disconnect := getClient(t)
defer disconnect()
@ -57,8 +46,6 @@ func TestGroupShow(t *testing.T) {
}
func TestGroupToggle(t *testing.T) {
skipIfSkipGroupTests(t)
client, disconnect := getClient(t)
defer disconnect()
@ -100,8 +87,6 @@ func TestGroupToggle(t *testing.T) {
}
func TestGroupStatus(t *testing.T) {
skipIfSkipGroupTests(t)
client, disconnect := getClient(t)
defer disconnect()

View File

@ -22,8 +22,9 @@ func TestInputList(t *testing.T) {
expectedInputs := []string{
"Desktop Audio",
"Mic/Aux",
"gobs-test-input",
"gobs-test-input-2",
"Colour Source",
"Colour Source 2",
"Colour Source 3",
}
output := out.String()
for _, input := range expectedInputs {
@ -51,8 +52,9 @@ func TestInputListFilterInput(t *testing.T) {
}
expectedFilteredOut := []string{
"Desktop Audio",
"gobs-test-input",
"gobs-test-input-2",
"Colour Source",
"Colour Source 2",
"Colour Source 3",
}
for _, input := range expectedInputs {
if !strings.Contains(out.String(), input) {
@ -84,8 +86,9 @@ func TestInputListFilterOutput(t *testing.T) {
}
expectedFilteredOut := []string{
"Mic/Aux",
"gobs-test-input",
"gobs-test-input-2",
"Colour Source",
"Colour Source 2",
"Colour Source 3",
}
for _, input := range expectedInputs {
if !strings.Contains(out.String(), input) {
@ -113,8 +116,9 @@ func TestInputListFilterColour(t *testing.T) {
}
expectedInputs := []string{
"gobs-test-input",
"gobs-test-input-2",
"Colour Source",
"Colour Source 2",
"Colour Source 3",
}
for _, input := range expectedInputs {
if !strings.Contains(out.String(), input) {

View File

@ -2,9 +2,7 @@ package main
import (
"os"
"runtime"
"testing"
"time"
"github.com/andreykaipov/goobs"
"github.com/andreykaipov/goobs/api/requests/config"
@ -64,23 +62,13 @@ func setup(client *goobs.Client) {
Key: os.Getenv("OBS_STREAM_KEY"),
}))
client.Config.CreateProfile(config.NewCreateProfileParams().
WithProfileName("gobs-test-profile"))
time.Sleep(100 * time.Millisecond) // Wait for the profile to be created
client.Config.SetProfileParameter(config.NewSetProfileParameterParams().
WithParameterCategory("SimpleOutput").
WithParameterName("RecRB").
WithParameterValue("true"))
// hack to ensure the Replay Buffer setting is applied
client.Config.SetCurrentProfile(config.NewSetCurrentProfileParams().
WithProfileName("Untitled"))
client.Config.SetCurrentProfile(config.NewSetCurrentProfileParams().
WithProfileName("gobs-test-profile"))
client.Config.SetCurrentSceneCollection(config.NewSetCurrentSceneCollectionParams().
WithSceneCollectionName("test-collection"))
client.Scenes.CreateScene(scenes.NewCreateSceneParams().
WithSceneName("gobs-test-scene"))
WithSceneName("gobs-test"))
client.Inputs.CreateInput(inputs.NewCreateInputParams().
WithSceneName("gobs-test-scene").
WithSceneName("gobs-test").
WithInputName("gobs-test-input").
WithInputKind("color_source_v3").
WithInputSettings(map[string]any{
@ -91,7 +79,7 @@ func setup(client *goobs.Client) {
}).
WithSceneItemEnabled(true))
client.Inputs.CreateInput(inputs.NewCreateInputParams().
WithSceneName("gobs-test-scene").
WithSceneName("gobs-test").
WithInputName("gobs-test-input-2").
WithInputKind("color_source_v3").
WithInputSettings(map[string]any{
@ -102,37 +90,6 @@ func setup(client *goobs.Client) {
}).
WithSceneItemEnabled(true))
// ensure Desktop Audio input is created
desktopAudioKinds := map[string]string{
"windows": "wasapi_output_capture",
"linux": "pulse_output_capture",
"darwin": "coreaudio_output_capture",
}
platform := os.Getenv("GOBS_TEST_PLATFORM")
if platform == "" {
platform = runtime.GOOS
}
client.Inputs.CreateInput(inputs.NewCreateInputParams().
WithSceneName("gobs-test-scene").
WithInputName("Desktop Audio").
WithInputKind(desktopAudioKinds[platform]).
WithInputSettings(map[string]any{
"device_id": "default",
}))
// ensure Mic/Aux input is created
micKinds := map[string]string{
"windows": "wasapi_input_capture",
"linux": "pulse_input_capture",
"darwin": "coreaudio_input_capture",
}
client.Inputs.CreateInput(inputs.NewCreateInputParams().
WithSceneName("gobs-test-scene").
WithInputName("Mic/Aux").
WithInputKind(micKinds[platform]).
WithInputSettings(map[string]any{
"device_id": "default",
}))
// Create source filter on an audio input
client.Filters.CreateSourceFilter(filters.NewCreateSourceFilterParams().
WithSourceName("Mic/Aux").
@ -149,7 +106,7 @@ func setup(client *goobs.Client) {
// Create source filter on a scene
client.Filters.CreateSourceFilter(filters.NewCreateSourceFilterParams().
WithSourceName("gobs-test-scene").
WithSourceName("gobs-test").
WithFilterName("test_filter").
WithFilterKind("luma_key_filter_v2").
WithFilterSettings(map[string]any{
@ -158,21 +115,18 @@ func setup(client *goobs.Client) {
}
func teardown(client *goobs.Client) {
client.Config.RemoveProfile(config.NewRemoveProfileParams().
WithProfileName("gobs-test-profile"))
client.Filters.RemoveSourceFilter(filters.NewRemoveSourceFilterParams().
WithSourceName("Mic/Aux").
WithFilterName("test_filter"))
client.Filters.RemoveSourceFilter(filters.NewRemoveSourceFilterParams().
WithSourceName("gobs-test-scene").
WithSourceName("gobs-test").
WithFilterName("test_filter"))
client.Scenes.RemoveScene(scenes.NewRemoveSceneParams().
WithSceneName("gobs-test-scene"))
WithSceneName("gobs-test"))
client.Config.SetCurrentSceneCollection(config.NewSetCurrentSceneCollectionParams().
WithSceneCollectionName("Untitled"))
WithSceneCollectionName("default"))
client.Stream.StopStream()
client.Record.StopRecord()

View File

@ -44,7 +44,7 @@ func TestRecordStart(t *testing.T) {
if out.String() != "Recording started successfully.\n" {
t.Fatalf("Expected output to contain 'Recording started successfully.', got '%s'", out.String())
}
time.Sleep(500 * time.Millisecond) // Wait for the recording to start
time.Sleep(1 * time.Second) // Wait for the recording to start
}
func TestRecordStop(t *testing.T) {
@ -84,7 +84,7 @@ func TestRecordStop(t *testing.T) {
if !strings.Contains(out.String(), "Recording stopped successfully. Output file: ") {
t.Fatalf("Expected output to contain 'Recording stopped successfully. Output file: ', got '%s'", out.String())
}
time.Sleep(500 * time.Millisecond) // Wait for the recording to stop
time.Sleep(1 * time.Second) // Wait for the recording to stop
}
func TestRecordToggle(t *testing.T) {
@ -112,6 +112,8 @@ func TestRecordToggle(t *testing.T) {
t.Fatalf("Failed to toggle recording: %v", err)
}
time.Sleep(1 * time.Second) // Wait for a second to ensure toggle has taken effect
if active {
if out.String() != "Recording stopped successfully.\n" {
t.Fatalf("Expected output to be 'Recording stopped successfully.', got '%s'", out.String())
@ -121,5 +123,4 @@ func TestRecordToggle(t *testing.T) {
t.Fatalf("Expected output to be 'Recording started successfully.', got '%s'", out.String())
}
}
time.Sleep(500 * time.Millisecond) // Wait for the toggle to take effect
}

View File

@ -2,21 +2,11 @@ package main
import (
"bytes"
"os"
"strings"
"testing"
"time"
)
func skipIfSkipReplayBufferTests(t *testing.T) {
if os.Getenv("GOBS_TEST_SKIP_REPLAYBUFFER_TESTS") != "" {
t.Skip("Skipping replay buffer tests due to GOBS_TEST_SKIP_REPLAYBUFFER_TESTS environment variable")
}
}
func TestReplayBufferStart(t *testing.T) {
skipIfSkipReplayBufferTests(t)
client, disconnect := getClient(t)
defer disconnect()
@ -31,12 +21,9 @@ func TestReplayBufferStart(t *testing.T) {
if out.String() != "Replay buffer started.\n" {
t.Fatalf("Expected output to be 'Replay buffer started', got '%s'", out.String())
}
time.Sleep(500 * time.Millisecond) // Wait for the replay buffer to start
}
func TestReplayBufferStop(t *testing.T) {
skipIfSkipReplayBufferTests(t)
client, disconnect := getClient(t)
defer disconnect()
@ -51,12 +38,9 @@ func TestReplayBufferStop(t *testing.T) {
if out.String() != "Replay buffer stopped.\n" {
t.Fatalf("Expected output to be 'Replay buffer stopped.', got '%s'", out.String())
}
time.Sleep(500 * time.Millisecond) // Wait for the replay buffer to stop
}
func TestReplayBufferToggle(t *testing.T) {
skipIfSkipReplayBufferTests(t)
client, disconnect := getClient(t)
defer disconnect()
@ -89,5 +73,4 @@ func TestReplayBufferToggle(t *testing.T) {
t.Fatalf("Expected output to be 'Replay buffer started.', got '%s'", out.String())
}
}
time.Sleep(500 * time.Millisecond) // Wait for the toggle to take effect
}

View File

@ -17,8 +17,8 @@ func TestSceneList(t *testing.T) {
if err != nil {
t.Fatalf("Failed to list scenes: %v", err)
}
if out.String() == "Current program scene: gobs-test-scene\n" {
t.Fatalf("Expected output to be 'Current program scene: gobs-test-scene', got '%s'", out.String())
if out.String() == "Current program scene: gobs-test\n" {
t.Fatalf("Expected output to be 'Current program scene: gobs-test', got '%s'", out.String())
}
}
@ -29,9 +29,9 @@ func TestSceneCurrent(t *testing.T) {
var out bytes.Buffer
context := newContext(client, &out, StyleConfig{})
// Set the current scene to "gobs-test-scene"
// Set the current scene to "gobs-test"
cmdSwitch := &SceneSwitchCmd{
NewScene: "gobs-test-scene",
NewScene: "gobs-test",
}
err := cmdSwitch.Run(context)
if err != nil {
@ -45,7 +45,7 @@ func TestSceneCurrent(t *testing.T) {
if err != nil {
t.Fatalf("Failed to get current scene: %v", err)
}
if out.String() != "Current program scene: gobs-test-scene\n" {
t.Fatalf("Expected output to be 'Current program scene: gobs-test-scene', got '%s'", out.String())
if out.String() != "Current program scene: gobs-test\n" {
t.Fatalf("Expected output to be 'Current program scene: gobs-test', got '%s'", out.String())
}
}

View File

@ -14,7 +14,7 @@ func TestSceneItemList(t *testing.T) {
context := newContext(client, &out, StyleConfig{})
cmd := &SceneItemListCmd{
SceneName: "gobs-test-scene",
SceneName: "gobs-test",
}
err := cmd.Run(context)
if err != nil {

View File

@ -43,7 +43,7 @@ func TestStreamStart(t *testing.T) {
if out.String() != "Stream started successfully.\n" {
t.Fatalf("Expected output to contain 'Stream started successfully.', got '%s'", out.String())
}
time.Sleep(500 * time.Millisecond) // Wait for the stream to start
time.Sleep(2 * time.Second) // Wait for the stream to start
}
func TestStreamStop(t *testing.T) {
@ -82,7 +82,7 @@ func TestStreamStop(t *testing.T) {
if out.String() != "Stream stopped successfully.\n" {
t.Fatalf("Expected output to contain 'Stream stopped successfully.', got '%s'", out.String())
}
time.Sleep(500 * time.Millisecond) // Wait for the stream to stop
time.Sleep(2 * time.Second) // Wait for the stream to stop
}
func TestStreamToggle(t *testing.T) {
@ -119,5 +119,5 @@ func TestStreamToggle(t *testing.T) {
t.Fatalf("Expected 'Stream started successfully.', got: %s", out.String())
}
}
time.Sleep(500 * time.Millisecond) // Wait for the stream to toggle
time.Sleep(2 * time.Second) // Wait for the stream to toggle
}