mirror of
https://github.com/onyx-and-iris/gobs-cli.git
synced 2026-04-20 16:13:40 +00:00
Compare commits
5 Commits
040ece840c
...
fix-tests
| Author | SHA1 | Date | |
|---|---|---|---|
| 1cf983a647 | |||
| dbc26bf6ff | |||
| 101c7552b2 | |||
| 1c0ef025c1 | |||
| 2b7b8e0bd5 |
@@ -22,6 +22,7 @@ tasks:
|
|||||||
cmds:
|
cmds:
|
||||||
- task: build-windows
|
- task: build-windows
|
||||||
- task: build-linux
|
- task: build-linux
|
||||||
|
- task: build-macos
|
||||||
|
|
||||||
vet:
|
vet:
|
||||||
desc: Vet the code
|
desc: Vet the code
|
||||||
@@ -46,6 +47,12 @@ tasks:
|
|||||||
- GOOS=linux GOARCH=amd64 go build -ldflags "-X 'main.version={{.VERSION}}'" -o {{.BIN_DIR}}/{{.PROGRAM}}_linux_amd64
|
- GOOS=linux GOARCH=amd64 go build -ldflags "-X 'main.version={{.VERSION}}'" -o {{.BIN_DIR}}/{{.PROGRAM}}_linux_amd64
|
||||||
internal: true
|
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:
|
test:
|
||||||
desc: Run tests
|
desc: Run tests
|
||||||
cmds:
|
cmds:
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ func TestFilterListScene(t *testing.T) {
|
|||||||
context := newContext(client, &out, StyleConfig{})
|
context := newContext(client, &out, StyleConfig{})
|
||||||
|
|
||||||
cmd := &FilterListCmd{
|
cmd := &FilterListCmd{
|
||||||
SourceName: "gobs-test",
|
SourceName: "gobs-test-scene",
|
||||||
}
|
}
|
||||||
err := cmd.Run(context)
|
err := cmd.Run(context)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
71
main_test.go
71
main_test.go
@@ -2,6 +2,7 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
"os"
|
||||||
|
"runtime"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@@ -56,22 +57,6 @@ func TestMain(m *testing.M) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func setup(client *goobs.Client) {
|
func setup(client *goobs.Client) {
|
||||||
client.Config.CreateProfile(config.NewCreateProfileParams().
|
|
||||||
WithProfileName("gobs-test-profile"))
|
|
||||||
time.Sleep(2 * time.Second) // wait for profile creation to propagate
|
|
||||||
client.Config.SetProfileParameter(config.NewSetProfileParameterParams().
|
|
||||||
WithParameterCategory("SimpleOutput").
|
|
||||||
WithParameterName("RecRB").
|
|
||||||
WithParameterValue("true"))
|
|
||||||
client.Config.SetProfileParameter(config.NewSetProfileParameterParams().
|
|
||||||
WithParameterCategory("AdvOut").
|
|
||||||
WithParameterName("RecRB").
|
|
||||||
WithParameterValue("true"))
|
|
||||||
client.Config.SetCurrentProfile(config.NewSetCurrentProfileParams().
|
|
||||||
WithProfileName("Untitled"))
|
|
||||||
client.Config.SetCurrentProfile(config.NewSetCurrentProfileParams().
|
|
||||||
WithProfileName("gobs-test-profile"))
|
|
||||||
|
|
||||||
client.Config.SetStreamServiceSettings(config.NewSetStreamServiceSettingsParams().
|
client.Config.SetStreamServiceSettings(config.NewSetStreamServiceSettingsParams().
|
||||||
WithStreamServiceType("rtmp_common").
|
WithStreamServiceType("rtmp_common").
|
||||||
WithStreamServiceSettings(&typedefs.StreamServiceSettings{
|
WithStreamServiceSettings(&typedefs.StreamServiceSettings{
|
||||||
@@ -79,13 +64,23 @@ func setup(client *goobs.Client) {
|
|||||||
Key: os.Getenv("OBS_STREAM_KEY"),
|
Key: os.Getenv("OBS_STREAM_KEY"),
|
||||||
}))
|
}))
|
||||||
|
|
||||||
client.Config.SetCurrentSceneCollection(config.NewSetCurrentSceneCollectionParams().
|
client.Config.CreateProfile(config.NewCreateProfileParams().
|
||||||
WithSceneCollectionName("test-collection"))
|
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.Scenes.CreateScene(scenes.NewCreateSceneParams().
|
client.Scenes.CreateScene(scenes.NewCreateSceneParams().
|
||||||
WithSceneName("gobs-test"))
|
WithSceneName("gobs-test-scene"))
|
||||||
client.Inputs.CreateInput(inputs.NewCreateInputParams().
|
client.Inputs.CreateInput(inputs.NewCreateInputParams().
|
||||||
WithSceneName("gobs-test").
|
WithSceneName("gobs-test-scene").
|
||||||
WithInputName("gobs-test-input").
|
WithInputName("gobs-test-input").
|
||||||
WithInputKind("color_source_v3").
|
WithInputKind("color_source_v3").
|
||||||
WithInputSettings(map[string]any{
|
WithInputSettings(map[string]any{
|
||||||
@@ -96,7 +91,7 @@ func setup(client *goobs.Client) {
|
|||||||
}).
|
}).
|
||||||
WithSceneItemEnabled(true))
|
WithSceneItemEnabled(true))
|
||||||
client.Inputs.CreateInput(inputs.NewCreateInputParams().
|
client.Inputs.CreateInput(inputs.NewCreateInputParams().
|
||||||
WithSceneName("gobs-test").
|
WithSceneName("gobs-test-scene").
|
||||||
WithInputName("gobs-test-input-2").
|
WithInputName("gobs-test-input-2").
|
||||||
WithInputKind("color_source_v3").
|
WithInputKind("color_source_v3").
|
||||||
WithInputSettings(map[string]any{
|
WithInputSettings(map[string]any{
|
||||||
@@ -108,10 +103,32 @@ func setup(client *goobs.Client) {
|
|||||||
WithSceneItemEnabled(true))
|
WithSceneItemEnabled(true))
|
||||||
|
|
||||||
// ensure Desktop Audio input is created
|
// 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().
|
client.Inputs.CreateInput(inputs.NewCreateInputParams().
|
||||||
WithSceneName("gobs-test").
|
WithSceneName("gobs-test-scene").
|
||||||
WithInputName("Desktop Audio").
|
WithInputName("Desktop Audio").
|
||||||
WithInputKind("wasapi_output_capture").
|
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{
|
WithInputSettings(map[string]any{
|
||||||
"device_id": "default",
|
"device_id": "default",
|
||||||
}))
|
}))
|
||||||
@@ -132,7 +149,7 @@ func setup(client *goobs.Client) {
|
|||||||
|
|
||||||
// Create source filter on a scene
|
// Create source filter on a scene
|
||||||
client.Filters.CreateSourceFilter(filters.NewCreateSourceFilterParams().
|
client.Filters.CreateSourceFilter(filters.NewCreateSourceFilterParams().
|
||||||
WithSourceName("gobs-test").
|
WithSourceName("gobs-test-scene").
|
||||||
WithFilterName("test_filter").
|
WithFilterName("test_filter").
|
||||||
WithFilterKind("luma_key_filter_v2").
|
WithFilterKind("luma_key_filter_v2").
|
||||||
WithFilterSettings(map[string]any{
|
WithFilterSettings(map[string]any{
|
||||||
@@ -148,14 +165,14 @@ func teardown(client *goobs.Client) {
|
|||||||
WithSourceName("Mic/Aux").
|
WithSourceName("Mic/Aux").
|
||||||
WithFilterName("test_filter"))
|
WithFilterName("test_filter"))
|
||||||
client.Filters.RemoveSourceFilter(filters.NewRemoveSourceFilterParams().
|
client.Filters.RemoveSourceFilter(filters.NewRemoveSourceFilterParams().
|
||||||
WithSourceName("gobs-test").
|
WithSourceName("gobs-test-scene").
|
||||||
WithFilterName("test_filter"))
|
WithFilterName("test_filter"))
|
||||||
|
|
||||||
client.Scenes.RemoveScene(scenes.NewRemoveSceneParams().
|
client.Scenes.RemoveScene(scenes.NewRemoveSceneParams().
|
||||||
WithSceneName("gobs-test"))
|
WithSceneName("gobs-test-scene"))
|
||||||
|
|
||||||
client.Config.SetCurrentSceneCollection(config.NewSetCurrentSceneCollectionParams().
|
client.Config.SetCurrentSceneCollection(config.NewSetCurrentSceneCollectionParams().
|
||||||
WithSceneCollectionName("default"))
|
WithSceneCollectionName("Untitled"))
|
||||||
|
|
||||||
client.Stream.StopStream()
|
client.Stream.StopStream()
|
||||||
client.Record.StopRecord()
|
client.Record.StopRecord()
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ func TestRecordStart(t *testing.T) {
|
|||||||
if out.String() != "Recording started successfully.\n" {
|
if out.String() != "Recording started successfully.\n" {
|
||||||
t.Fatalf("Expected output to contain 'Recording started successfully.', got '%s'", out.String())
|
t.Fatalf("Expected output to contain 'Recording started successfully.', got '%s'", out.String())
|
||||||
}
|
}
|
||||||
time.Sleep(1 * time.Second) // Wait for the recording to start
|
time.Sleep(500 * time.Millisecond) // Wait for the recording to start
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestRecordStop(t *testing.T) {
|
func TestRecordStop(t *testing.T) {
|
||||||
@@ -84,7 +84,7 @@ func TestRecordStop(t *testing.T) {
|
|||||||
if !strings.Contains(out.String(), "Recording stopped successfully. Output file: ") {
|
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())
|
t.Fatalf("Expected output to contain 'Recording stopped successfully. Output file: ', got '%s'", out.String())
|
||||||
}
|
}
|
||||||
time.Sleep(1 * time.Second) // Wait for the recording to stop
|
time.Sleep(500 * time.Millisecond) // Wait for the recording to stop
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestRecordToggle(t *testing.T) {
|
func TestRecordToggle(t *testing.T) {
|
||||||
@@ -112,8 +112,6 @@ func TestRecordToggle(t *testing.T) {
|
|||||||
t.Fatalf("Failed to toggle recording: %v", err)
|
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 active {
|
||||||
if out.String() != "Recording stopped successfully.\n" {
|
if out.String() != "Recording stopped successfully.\n" {
|
||||||
t.Fatalf("Expected output to be 'Recording stopped successfully.', got '%s'", out.String())
|
t.Fatalf("Expected output to be 'Recording stopped successfully.', got '%s'", out.String())
|
||||||
@@ -123,4 +121,5 @@ func TestRecordToggle(t *testing.T) {
|
|||||||
t.Fatalf("Expected output to be 'Recording started successfully.', got '%s'", out.String())
|
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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
func skipIfSkipReplayBufferTests(t *testing.T) {
|
func skipIfSkipReplayBufferTests(t *testing.T) {
|
||||||
@@ -30,6 +31,7 @@ func TestReplayBufferStart(t *testing.T) {
|
|||||||
if out.String() != "Replay buffer started.\n" {
|
if out.String() != "Replay buffer started.\n" {
|
||||||
t.Fatalf("Expected output to be 'Replay buffer started', got '%s'", out.String())
|
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) {
|
func TestReplayBufferStop(t *testing.T) {
|
||||||
@@ -49,6 +51,7 @@ func TestReplayBufferStop(t *testing.T) {
|
|||||||
if out.String() != "Replay buffer stopped.\n" {
|
if out.String() != "Replay buffer stopped.\n" {
|
||||||
t.Fatalf("Expected output to be 'Replay buffer stopped.', got '%s'", out.String())
|
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) {
|
func TestReplayBufferToggle(t *testing.T) {
|
||||||
@@ -86,4 +89,5 @@ func TestReplayBufferToggle(t *testing.T) {
|
|||||||
t.Fatalf("Expected output to be 'Replay buffer started.', got '%s'", out.String())
|
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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,8 +17,8 @@ func TestSceneList(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Failed to list scenes: %v", err)
|
t.Fatalf("Failed to list scenes: %v", err)
|
||||||
}
|
}
|
||||||
if out.String() == "Current program scene: gobs-test\n" {
|
if out.String() == "Current program scene: gobs-test-scene\n" {
|
||||||
t.Fatalf("Expected output to be 'Current program scene: gobs-test', got '%s'", out.String())
|
t.Fatalf("Expected output to be 'Current program scene: gobs-test-scene', got '%s'", out.String())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -29,9 +29,9 @@ func TestSceneCurrent(t *testing.T) {
|
|||||||
var out bytes.Buffer
|
var out bytes.Buffer
|
||||||
context := newContext(client, &out, StyleConfig{})
|
context := newContext(client, &out, StyleConfig{})
|
||||||
|
|
||||||
// Set the current scene to "gobs-test"
|
// Set the current scene to "gobs-test-scene"
|
||||||
cmdSwitch := &SceneSwitchCmd{
|
cmdSwitch := &SceneSwitchCmd{
|
||||||
NewScene: "gobs-test",
|
NewScene: "gobs-test-scene",
|
||||||
}
|
}
|
||||||
err := cmdSwitch.Run(context)
|
err := cmdSwitch.Run(context)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -45,7 +45,7 @@ func TestSceneCurrent(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Failed to get current scene: %v", err)
|
t.Fatalf("Failed to get current scene: %v", err)
|
||||||
}
|
}
|
||||||
if out.String() != "Current program scene: gobs-test\n" {
|
if out.String() != "Current program scene: gobs-test-scene\n" {
|
||||||
t.Fatalf("Expected output to be 'Current program scene: gobs-test', got '%s'", out.String())
|
t.Fatalf("Expected output to be 'Current program scene: gobs-test-scene', got '%s'", out.String())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ func TestSceneItemList(t *testing.T) {
|
|||||||
context := newContext(client, &out, StyleConfig{})
|
context := newContext(client, &out, StyleConfig{})
|
||||||
|
|
||||||
cmd := &SceneItemListCmd{
|
cmd := &SceneItemListCmd{
|
||||||
SceneName: "gobs-test",
|
SceneName: "gobs-test-scene",
|
||||||
}
|
}
|
||||||
err := cmd.Run(context)
|
err := cmd.Run(context)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ func TestStreamStart(t *testing.T) {
|
|||||||
if out.String() != "Stream started successfully.\n" {
|
if out.String() != "Stream started successfully.\n" {
|
||||||
t.Fatalf("Expected output to contain 'Stream started successfully.', got '%s'", out.String())
|
t.Fatalf("Expected output to contain 'Stream started successfully.', got '%s'", out.String())
|
||||||
}
|
}
|
||||||
time.Sleep(2 * time.Second) // Wait for the stream to start
|
time.Sleep(500 * time.Millisecond) // Wait for the stream to start
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestStreamStop(t *testing.T) {
|
func TestStreamStop(t *testing.T) {
|
||||||
@@ -82,7 +82,7 @@ func TestStreamStop(t *testing.T) {
|
|||||||
if out.String() != "Stream stopped successfully.\n" {
|
if out.String() != "Stream stopped successfully.\n" {
|
||||||
t.Fatalf("Expected output to contain 'Stream stopped successfully.', got '%s'", out.String())
|
t.Fatalf("Expected output to contain 'Stream stopped successfully.', got '%s'", out.String())
|
||||||
}
|
}
|
||||||
time.Sleep(2 * time.Second) // Wait for the stream to stop
|
time.Sleep(500 * time.Millisecond) // Wait for the stream to stop
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestStreamToggle(t *testing.T) {
|
func TestStreamToggle(t *testing.T) {
|
||||||
@@ -119,5 +119,5 @@ func TestStreamToggle(t *testing.T) {
|
|||||||
t.Fatalf("Expected 'Stream started successfully.', got: %s", out.String())
|
t.Fatalf("Expected 'Stream started successfully.', got: %s", out.String())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
time.Sleep(2 * time.Second) // Wait for the stream to toggle
|
time.Sleep(500 * time.Millisecond) // Wait for the stream to toggle
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user