aboutsummaryrefslogtreecommitdiff
path: root/cmd/prognosis/args_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/prognosis/args_test.go')
-rw-r--r--cmd/prognosis/args_test.go49
1 files changed, 49 insertions, 0 deletions
diff --git a/cmd/prognosis/args_test.go b/cmd/prognosis/args_test.go
new file mode 100644
index 0000000..4a85a2d
--- /dev/null
+++ b/cmd/prognosis/args_test.go
@@ -0,0 +1,49 @@
+package main
+
+import (
+ "strings"
+ "testing"
+)
+
+// `prognosis -l Wiry, PL` is the unquoted form of `-l "Wiry, PL"`. The shell
+// splits it, so -l gets "Wiry," and "PL" arrives as a stray positional. Dropping
+// it silently is what geocoded "Wiry," to Ukraine without anyone noticing.
+func TestStrayPositionalBesideDashLIsAnError(t *testing.T) {
+ _, err := placeFromArgs("Wiry,", []string{"PL"})
+ if err == nil {
+ t.Fatal("expected an error; silently ignoring the argument hides a quoting mistake")
+ }
+ if !strings.Contains(err.Error(), "PL") {
+ t.Errorf("error %q should name the argument that was ignored", err)
+ }
+}
+
+func TestDashLIsThePlaceWhenNothingElseIsGiven(t *testing.T) {
+ got, err := placeFromArgs("Wiry, PL", nil)
+ if err != nil {
+ t.Fatal(err)
+ }
+ if got != "Wiry, PL" {
+ t.Errorf("got %q, want %q", got, "Wiry, PL")
+ }
+}
+
+func TestPositionalsJoinIntoThePlace(t *testing.T) {
+ got, err := placeFromArgs("", []string{"Wiry,", "PL"})
+ if err != nil {
+ t.Fatal(err)
+ }
+ if got != "Wiry, PL" {
+ t.Errorf("got %q, want %q: bare words are still accepted as the place", got, "Wiry, PL")
+ }
+}
+
+func TestNoPlaceAnywhereIsNotAnError(t *testing.T) {
+ got, err := placeFromArgs("", nil)
+ if err != nil {
+ t.Fatalf("unexpected error %v: the config and ~/.wegorc are consulted next", err)
+ }
+ if got != "" {
+ t.Errorf("got %q, want empty", got)
+ }
+}