* [PATCH 2/2] cache.c: cache ls_cache output properly
2013-05-18 17:46 [PATCH 1/2] tests: introduce strip_header() helper function john
@ 2013-05-18 17:46 ` john
2013-05-22 10:50 ` Jason
2013-05-18 17:47 ` [PATCH 1/2] tests: introduce strip_header() helper function john
1 sibling, 1 reply; 5+ messages in thread
From: john @ 2013-05-18 17:46 UTC (permalink / raw)
By using the standard library's printf, cache_ls does not redirect its
output to the cache when we change the process' stdout file descriptor
to point to the cache file. Fix this by using "htmlf" in the same way
that we do for writing HTTP headers.
Signed-off-by: John Keeping <john at keeping.me.uk>
---
cache.c | 13 +++++++------
tests/t0020-validate-cache.sh | 8 +++++++-
2 files changed, 14 insertions(+), 7 deletions(-)
diff --git a/cache.c b/cache.c
index c1d777b..265d392 100644
--- a/cache.c
+++ b/cache.c
@@ -15,6 +15,7 @@
#include "cgit.h"
#include "cache.h"
+#include "html.h"
#define CACHE_BUFSIZE (1024 * 4)
@@ -398,12 +399,12 @@ int cache_ls(const char *path)
fullname.buf, strerror(err), err);
continue;
}
- printf("%s %s %10"PRIuMAX" %s\n",
- fullname.buf,
- sprintftime("%Y-%m-%d %H:%M:%S",
- slot.cache_st.st_mtime),
- (uintmax_t)slot.cache_st.st_size,
- slot.buf);
+ htmlf("%s %s %10"PRIuMAX" %s\n",
+ fullname.buf,
+ sprintftime("%Y-%m-%d %H:%M:%S",
+ slot.cache_st.st_mtime),
+ (uintmax_t)slot.cache_st.st_size,
+ slot.buf);
close_slot(&slot);
}
slot.cache_name = strbuf_detach(&fullname, NULL);
diff --git a/tests/t0020-validate-cache.sh b/tests/t0020-validate-cache.sh
index 7e7379a..657765d 100755
--- a/tests/t0020-validate-cache.sh
+++ b/tests/t0020-validate-cache.sh
@@ -66,7 +66,13 @@ test_expect_success 'verify cache-size=1021' '
cgit_url "bar/diff" &&
cgit_url "bar/patch" &&
ls cache >output &&
- test_line_count = 13 output
+ test_line_count = 13 output &&
+ cgit_url "foo/ls_cache" >output.full &&
+ strip_headers <output.full >output &&
+ test_line_count = 13 output &&
+ # Check that ls_cache output is cached correctly
+ cgit_url "foo/ls_cache" >output.second &&
+ test_cmp output.full output.second
'
test_done
--
1.8.3.rc2.285.gfc18c2c
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/2] tests: introduce strip_header() helper function
2013-05-18 17:46 [PATCH 1/2] tests: introduce strip_header() helper function john
2013-05-18 17:46 ` [PATCH 2/2] cache.c: cache ls_cache output properly john
@ 2013-05-18 17:47 ` john
2013-05-22 10:49 ` Jason
1 sibling, 1 reply; 5+ messages in thread
From: john @ 2013-05-18 17:47 UTC (permalink / raw)
On Sat, May 18, 2013 at 06:46:38PM +0100, John Keeping wrote:
> This means that we can avoid hardcoding the number of headers we expect
> CGit to generate in test cases and simply remove whatever headers happen
> to by there when we are checking body content.
>
> Signed-off-by: John Keeping <john at keeping.me.uk>
> ---
> This was previously sent with a different command message and
> justification[1] but wasn't picked up. I still think this is a useful
> function to have in the test suite and it's used by patch 2/2 here.
Should have included the reference here...
[1] http://article.gmane.org/gmane.comp.version-control.cgit/1349
> tests/setup.sh | 8 ++++++++
> tests/t0107-snapshot.sh | 4 ++--
> 2 files changed, 10 insertions(+), 2 deletions(-)
>
> diff --git a/tests/setup.sh b/tests/setup.sh
> index a573444..1d8677a 100755
> --- a/tests/setup.sh
> +++ b/tests/setup.sh
> @@ -98,4 +98,12 @@ cgit_url()
> CGIT_CONFIG="$PWD/cgitrc" QUERY_STRING="url=$1" cgit
> }
>
> +strip_headers () {
> + while read -r line
> + do
> + test -z "$line" && break
> + done
> + cat
> +}
> +
> test -z "$CGIT_TEST_NO_CREATE_REPOS" && setup_repos
> diff --git a/tests/t0107-snapshot.sh b/tests/t0107-snapshot.sh
> index 053062c..6cf7aaa 100755
> --- a/tests/t0107-snapshot.sh
> +++ b/tests/t0107-snapshot.sh
> @@ -16,7 +16,7 @@ test_expect_success 'check html headers' '
> '
>
> test_expect_success 'strip off the header lines' '
> - tail -n +6 tmp > master.tar.gz
> + strip_headers <tmp >master.tar.gz
> '
>
> test_expect_success 'verify gzip format' '
> @@ -51,7 +51,7 @@ test_expect_success 'check HTML headers (zip)' '
> '
>
> test_expect_success 'strip off the header lines (zip)' '
> - tail -n +6 tmp >master.zip
> + strip_headers <tmp >master.zip
> '
>
> if test -n "$(which unzip 2>/dev/null)"; then
> --
> 1.8.3.rc2.285.gfc18c2c
>
^ permalink raw reply [flat|nested] 5+ messages in thread