1- use assert_cmd:: prelude :: * ;
1+ use assert_cmd:: Command ;
22use predicates:: prelude:: * ;
3- use std:: process:: Command ;
3+ use std:: io:: BufRead ;
4+ use transformrs:: Provider ;
5+
6+ fn ata ( ) -> Command {
7+ Command :: cargo_bin ( "ata" ) . unwrap ( )
8+ }
49
510#[ test]
611fn unexpected_argument ( ) -> Result < ( ) , Box < dyn std:: error:: Error > > {
7- let mut cmd = Command :: cargo_bin ( "ata" ) ?;
8-
12+ let mut cmd = ata ( ) ;
913 cmd. arg ( "foobar" ) ;
1014 cmd. assert ( )
1115 . failure ( )
@@ -16,12 +20,54 @@ fn unexpected_argument() -> Result<(), Box<dyn std::error::Error>> {
1620
1721#[ test]
1822fn help ( ) -> Result < ( ) , Box < dyn std:: error:: Error > > {
19- let mut cmd = Command :: cargo_bin ( "ata" ) ?;
20-
23+ let mut cmd = ata ( ) ;
2124 cmd. arg ( "--help" ) ;
2225 cmd. assert ( )
2326 . success ( )
2427 . stdout ( predicate:: str:: contains ( "Usage: ata" ) ) ;
2528
2629 Ok ( ( ) )
2730}
31+
32+ /// Load a key from the local .env file.
33+ ///
34+ /// This is used for testing only. Expects the .env file to contain keys for providers in the following format:
35+ ///
36+ /// ```
37+ /// DEEPINFRA_KEY="<KEY>"
38+ /// OPENAI_KEY="<KEY>"
39+ /// ```
40+ fn load_key ( provider : & Provider ) -> String {
41+ fn finder ( line : & Result < String , std:: io:: Error > , provider : & Provider ) -> bool {
42+ line. as_ref ( )
43+ . unwrap ( )
44+ . starts_with ( & provider. key_name ( ) )
45+ }
46+ let path = std:: path:: Path :: new ( "test.env" ) ;
47+ let file = std:: fs:: File :: open ( path) . expect ( "Failed to open .env file" ) ;
48+ let reader = std:: io:: BufReader :: new ( file) ;
49+ let mut lines = reader. lines ( ) ;
50+ let key = lines
51+ . find ( |line| finder ( line, provider) )
52+ . unwrap ( )
53+ . unwrap ( ) ;
54+ key. split ( "=" ) . nth ( 1 ) . unwrap ( ) . to_string ( )
55+ }
56+
57+ #[ test]
58+ fn tts_no_args ( ) -> Result < ( ) , Box < dyn std:: error:: Error > > {
59+ let dir = tempfile:: tempdir ( ) . unwrap ( ) ;
60+ let mut cmd = ata ( ) ;
61+ let key = load_key ( & Provider :: OpenAI ) ;
62+ cmd. arg ( "--tts" )
63+ . env ( "OPENAI_KEY" , key)
64+ . write_stdin ( "Hello world" )
65+ . current_dir ( & dir)
66+ . assert ( )
67+ . success ( ) ;
68+
69+ let path = dir. path ( ) . join ( "output.mp3" ) ;
70+ assert ! ( path. exists( ) ) ;
71+
72+ Ok ( ( ) )
73+ }
0 commit comments