1616)
1717
1818
19+ def _make_knowledge_or_skip ():
20+ """Create a Knowledge() instance, skipping if OpenAI API key is unavailable."""
21+ from praisonaiagents import Knowledge
22+ try :
23+ return Knowledge ()
24+ except Exception as e :
25+ if "api_key" in str (e ).lower () or "openai" in str (e ).lower ():
26+ pytest .skip (f"Skipping: OpenAI API key required for embeddings: { e } " )
27+ raise
28+
29+
1930@requires_knowledge
2031class TestDirectoryIngestion :
2132 """Test that directories are properly processed and file contents stored."""
@@ -42,10 +53,14 @@ def temp_knowledge_dir(self):
4253
4354 def test_directory_ingestion_stores_text_not_path (self , temp_knowledge_dir ):
4455 """Test that ingesting a directory stores file contents, not the directory path."""
45- from praisonaiagents import Knowledge
56+ knowledge = _make_knowledge_or_skip ()
4657
47- knowledge = Knowledge ()
48- result = knowledge .add (temp_knowledge_dir , user_id = 'test_user' )
58+ try :
59+ result = knowledge .add (temp_knowledge_dir , user_id = 'test_user' )
60+ except Exception as e :
61+ if "api_key" in str (e ).lower () or "openai" in str (e ).lower ():
62+ pytest .skip (f"Skipping: OpenAI API key required: { e } " )
63+ raise
4964
5065 # Should have results from files
5166 assert 'results' in result
@@ -65,10 +80,14 @@ def test_directory_ingestion_stores_text_not_path(self, temp_knowledge_dir):
6580
6681 def test_directory_ingestion_processes_multiple_files (self , temp_knowledge_dir ):
6782 """Test that all files in a directory are processed."""
68- from praisonaiagents import Knowledge
83+ knowledge = _make_knowledge_or_skip ()
6984
70- knowledge = Knowledge ()
71- result = knowledge .add (temp_knowledge_dir , user_id = 'test_user' )
85+ try :
86+ knowledge .add (temp_knowledge_dir , user_id = 'test_user' )
87+ except Exception as e :
88+ if "api_key" in str (e ).lower () or "openai" in str (e ).lower ():
89+ pytest .skip (f"Skipping: OpenAI API key required: { e } " )
90+ raise
7291
7392 # Search for content from both files
7493 search1 = knowledge .search ('ZEBRA-71' , user_id = 'test_user' )
@@ -80,10 +99,14 @@ def test_directory_ingestion_processes_multiple_files(self, temp_knowledge_dir):
8099
81100 def test_directory_ingestion_sets_metadata (self , temp_knowledge_dir ):
82101 """Test that file metadata is properly set."""
83- from praisonaiagents import Knowledge
102+ knowledge = _make_knowledge_or_skip ()
84103
85- knowledge = Knowledge ()
86- knowledge .add (temp_knowledge_dir , user_id = 'test_user' )
104+ try :
105+ knowledge .add (temp_knowledge_dir , user_id = 'test_user' )
106+ except Exception as e :
107+ if "api_key" in str (e ).lower () or "openai" in str (e ).lower ():
108+ pytest .skip (f"Skipping: OpenAI API key required: { e } " )
109+ raise
87110
88111 search_result = knowledge .search ('ZEBRA-71' , user_id = 'test_user' )
89112
@@ -114,15 +137,20 @@ def test_agent_context_contains_text_not_path(self, temp_knowledge_dir):
114137 """Test that Agent._get_knowledge_context returns text, not path."""
115138 from praisonaiagents import Agent
116139
117- agent = Agent (
118- name = 'TestAgent' ,
119- instructions = 'Answer based on knowledge.' ,
120- knowledge = [temp_knowledge_dir ],
121- output = 'silent' ,
122- )
123-
124- # Ensure knowledge is processed
125- agent ._ensure_knowledge_processed ()
140+ try :
141+ agent = Agent (
142+ name = 'TestAgent' ,
143+ instructions = 'Answer based on knowledge.' ,
144+ knowledge = [temp_knowledge_dir ],
145+ output = 'silent' ,
146+ )
147+
148+ # Ensure knowledge is processed
149+ agent ._ensure_knowledge_processed ()
150+ except Exception as e :
151+ if "api_key" in str (e ).lower () or "openai" in str (e ).lower ():
152+ pytest .skip (f"Skipping: OpenAI API key required: { e } " )
153+ raise
126154
127155 # Get context
128156 context , _ = agent ._get_knowledge_context ('What is the password?' , use_rag = True )
0 commit comments