package cli import ( "path/filepath" "strings" "testing" ) func TestAProjectIsToldToReuseItsAnswersAndToStop(t *testing.T) { db := filepath.Join(t.TempDir(), "s.db") mustRun(t, db, "org", "add", "org", "Acme") mustRun(t, db, "org", "add", "team", "ml", "--in", "Acme") mustRun(t, db, "org", "add", "project", "train", "--in", "Acme/ml") if out := mustRun(t, db, "keys", "cache", "--project", "Acme/ml/train"); !strings.Contains(out, "reuses no answers") { t.Errorf("before: %s", out) } if out := mustRun(t, db, "keys", "cache", "--project", "Acme/ml/train", "--ttl", "1h"); !strings.Contains(out, "for 1h0m0s: those asked at temperature 0") { t.Errorf("on: %s", out) } if out := mustRun(t, db, "keys", "cache", "--project", "train", "--ttl", "24h", "--any"); !strings.Contains(out, "every answer for 24h0m0s") { t.Errorf("any: %s", out) } for _, bad := range [][]string{{"--off", "--ttl", "1h"}, {"--any"}, {"--ttl", "10ms"}} { if _, err := run(t, db, append([]string{"keys", "cache", "--project", "train"}, bad...)...); err == nil { t.Errorf("%v was accepted", bad) } } if out := mustRun(t, db, "keys", "cache", "--project", "train", "--off"); !strings.Contains(out, "reuses no answers") { t.Errorf("off: %s", out) } }