// test_file_watcher.cc - Unit tests for file change detection #include "util/file_watcher.h" #include #include #include #if !defined(STRIP_ALL) int main() { // Create a temporary test file const char* test_file = "/tmp/test_watcher_file.txt"; { std::ofstream f(test_file); f << "initial content\n"; } FileWatcher watcher; watcher.add_file(test_file); // Initial check - no changes yet bool changed = watcher.check_changes(); if (changed) { fprintf(stderr, "FAIL: Expected no changes on first check\n"); return 1; } // Sleep to ensure mtime changes (some filesystems have 1s granularity) sleep(1); // Modify the file { std::ofstream f(test_file, std::ios::app); f << "modified\n"; } // Check for changes changed = watcher.check_changes(); if (!changed) { fprintf(stderr, "FAIL: Expected changes after file modification\n"); return 1; } // Reset and check again - should be no changes watcher.reset(); changed = watcher.check_changes(); if (changed) { fprintf(stderr, "FAIL: Expected no changes after reset\n"); return 1; } printf("PASS: FileWatcher tests\n"); return 0; } #else int main() { printf("SKIP: FileWatcher tests (STRIP_ALL build)\n"); return 0; } #endif