all repos — mdget @ master

Unnamed repository; edit this file 'description' to name the repository.

test/test_args.go (view raw)

  1package main
  2
  3import (
  4	"fmt"
  5	"os"
  6)
  7
  8func main() {
  9	fmt.Println("Testing command-line arguments...")
 10	
 11	allPassed := true
 12	
 13	// Test 1: No arguments shows error
 14	fmt.Print("Test 1: No arguments shows error... ")
 15	output, err := runMdget()
 16	if !assertError("No arguments", err, true) {
 17		allPassed = false
 18	} else if !assertContains("No arguments error message", output, "Error: URL is required") {
 19		allPassed = false
 20	} else {
 21		fmt.Println("✅")
 22	}
 23	
 24	// Test 2: Help flag shows help
 25	fmt.Print("Test 2: Help flag shows help... ")
 26	output, err = runMdget("--help")
 27	if !assertError("Help flag", err, false) {
 28		allPassed = false
 29	} else if !assertContains("Help text", output, "Fetch a URL and convert its HTML content to Markdown.") {
 30		allPassed = false
 31	} else {
 32		fmt.Println("✅")
 33	}
 34	
 35	// Test 3: Version flag shows version
 36	fmt.Print("Test 3: Version flag shows version... ")
 37	output, err = runMdget("--version")
 38	if !assertError("Version flag", err, false) {
 39		allPassed = false
 40	} else if !assertContains("Version text", output, "mdget v0.1.0") {
 41		allPassed = false
 42	} else {
 43		fmt.Println("✅")
 44	}
 45	
 46	// Test 4: URL with http prefix (should work)
 47	fmt.Print("Test 4: URL with http prefix (should fail with no network)... ")
 48	output, err = runMdget("http://localhost:99999/invalid")
 49	// This should fail because the URL is invalid, not because of argument parsing
 50	if err == nil {
 51		fmt.Println("⚠️  (expected network error but got success)")
 52	} else {
 53		// Should fail with network error, not argument error
 54		if !assertContains("Network error", output, "Error fetching URL") {
 55			allPassed = false
 56		} else {
 57			fmt.Println("✅ (failed as expected with network error)")
 58		}
 59	}
 60	
 61	// Test 5: URL without http prefix gets https
 62	fmt.Print("Test 5: URL without http prefix gets https... ")
 63	output, err = runMdget("localhost:99999/invalid")
 64	if err == nil {
 65		fmt.Println("⚠️  (expected network error but got success)")
 66	} else {
 67		// Should fail with network error
 68		if !assertContains("Network error with auto-https", output, "Error fetching URL") {
 69			allPassed = false
 70		} else {
 71			fmt.Println("✅ (failed as expected with network error)")
 72		}
 73	}
 74	
 75	// Test 6: Output flag parsing
 76	fmt.Print("Test 6: Output flag parsing... ")
 77	output, err = runMdget("--output", "/tmp/nonexistent/test.md", "http://localhost:99999/invalid")
 78	if err == nil {
 79		fmt.Println("⚠️  (expected error but got success)")
 80		allPassed = false
 81	} else {
 82		// Should fail with either file creation error or network error
 83		if !assertContains("Output flag error", output, "Error") {
 84			allPassed = false
 85		} else {
 86			fmt.Println("✅ (failed as expected)")
 87		}
 88	}
 89	
 90	// Test 7: Timeout flag parsing
 91	fmt.Print("Test 7: Timeout flag parsing... ")
 92	output, err = runMdget("--timeout", "10", "http://localhost:99999/invalid")
 93	if err == nil {
 94		fmt.Println("⚠️  (expected error but got success)")
 95		allPassed = false
 96	} else {
 97		if !assertContains("Timeout flag error", output, "Error fetching URL") {
 98			allPassed = false
 99		} else {
100			fmt.Println("✅ (failed as expected with network error)")
101		}
102	}
103	
104	// Test 8: User-Agent flag parsing
105	fmt.Print("Test 8: User-Agent flag parsing... ")
106	output, err = runMdget("--user-agent", "TestAgent/1.0", "http://localhost:99999/invalid")
107	if err == nil {
108		fmt.Println("⚠️  (expected error but got success)")
109		allPassed = false
110	} else {
111		if !assertContains("User-Agent flag error", output, "Error fetching URL") {
112			allPassed = false
113		} else {
114			fmt.Println("✅ (failed as expected with network error)")
115		}
116	}
117	
118	if allPassed {
119		fmt.Println("\n✅ All command-line argument tests passed!")
120		os.Exit(0)
121	} else {
122		fmt.Println("\n❌ Some command-line argument tests failed!")
123		os.Exit(1)
124	}
125}