|
Litmus
information about litmus
LitmusLitmus is a WebDAV compliance testing tool. It tries to cover most features and problem areas. It currently only tests against the standard, so passing the litmus test does mean your server will also work for every client. Our stanceLitmus is a strict tester, and passing it will also require the server to be strict. Our philosophy is "be liberal in what you accept, be strict in what you produce" and these two things don't always match. Generally if a client would be misbehaving, but an accurate assumption can be made on what the intention of the request was it would be our choice to accept the requests. As an example, Windows clients might make a PROPPATCH request with no body. While this is non-standard, this is interpreted as a PROPPATCH request containing the <allprops /> instruction. Implementing this non-standard feature is required to make the Windows client work, and causes no harm on compliant clients. That being said, we pass every test. Test statusThis is from the current SVN trunk (r238), litmus 0.12.1 and Apache2 were used for testing. The Sabre_DAV_FSExt_* classes were used for this server, as this implementation supports locking and custom properties. Currently all tests are passed. When using Nginx a warning will be thrown for the delete_fragment test. This is because nginx automatically strips url-fragments (#). Nginx also never completes the expect100 http test. I presume this is a bug in my nginx version. -> running `basic': 0. init.................. pass 1. begin................. pass 2. options............... pass 3. put_get............... pass 4. put_get_utf8_segment.. pass 5. put_no_parent......... pass 6. mkcol_over_plain...... pass 7. delete................ pass 8. delete_null........... pass 9. delete_fragment....... pass 10. mkcol................. pass 11. mkcol_again........... pass 12. delete_coll........... pass 13. mkcol_no_parent....... pass 14. mkcol_with_body....... pass 15. finish................ pass <- summary for `basic': of 16 tests run: 16 passed, 0 failed. 100.0% -> running `copymove': 0. init.................. pass 1. begin................. pass 2. copy_init............. pass 3. copy_simple........... pass 4. copy_overwrite........ pass 5. copy_nodestcoll....... pass 6. copy_cleanup.......... pass 7. copy_coll............. pass 8. copy_shallow.......... pass 9. move.................. pass 10. move_coll............. pass 11. move_cleanup.......... pass 12. finish................ pass <- summary for `copymove': of 13 tests run: 13 passed, 0 failed. 100.0% -> running `props': 0. init.................. pass 1. begin................. pass 2. propfind_invalid...... pass 3. propfind_invalid2..... pass 4. propfind_d0........... pass 5. propinit.............. pass 6. propset............... pass 7. propget............... pass 8. propextended.......... pass 9. propmove.............. pass 10. propget............... pass 11. propdeletes........... pass 12. propget............... pass 13. propreplace........... pass 14. propget............... pass 15. propnullns............ pass 16. propget............... pass 17. prophighunicode....... pass 18. propget............... pass 19. propremoveset......... pass 20. propget............... pass 21. propsetremove......... pass 22. propget............... pass 23. propvalnspace......... pass 24. propwformed........... pass 25. propinit.............. pass 26. propmanyns............ pass 27. propget............... pass 28. propcleanup........... pass 29. finish................ pass <- summary for `props': of 30 tests run: 30 passed, 0 failed. 100.0% -> running `locks': 0. init.................. pass 1. begin................. pass 2. options............... pass 3. precond............... pass 4. init_locks............ pass 5. put................... pass 6. lock_excl............. pass 7. discover.............. pass 8. refresh............... pass 9. notowner_modify....... pass 10. notowner_lock......... pass 11. owner_modify.......... pass 12. notowner_modify....... pass 13. notowner_lock......... pass 14. copy.................. pass 15. cond_put.............. pass 16. fail_cond_put......... pass 17. cond_put_with_not..... pass 18. cond_put_corrupt_token pass 19. complex_cond_put...... pass 20. fail_complex_cond_put. pass 21. unlock................ pass 22. fail_cond_put_unlocked pass 23. lock_shared........... pass 24. notowner_modify....... pass 25. notowner_lock......... pass 26. owner_modify.......... pass 27. double_sharedlock..... pass 28. notowner_modify....... pass 29. notowner_lock......... pass 30. unlock................ pass 31. prep_collection....... pass 32. lock_collection....... pass 33. owner_modify.......... pass 34. notowner_modify....... pass 35. refresh............... pass 36. indirect_refresh...... pass 37. unlock................ pass 38. unmapped_lock......... pass 39. unlock................ pass 40. finish................ pass <- summary for `locks': of 41 tests run: 41 passed, 0 failed. 100.0% -> running `http': 0. init.................. pass 1. begin................. pass 2. expect100............. pass 3. finish................ pass <- summary for `http': of 4 tests run: 4 passed, 0 failed. 100.0% -> running `largefile': 0. init.................. pass 1. begin................. pass 2. init_largefile........ pass 3. large_put............. pass 4. large_get............. pass 5. finish................ pass <- summary for `largefile': of 6 tests run: 6 passed, 0 failed. 100.0% |
Sign in to add a comment