From 8ff0d92ad74dd8973e01c32ec1bf52a318d18410 Mon Sep 17 00:00:00 2001 From: nick black Date: Sun, 14 Jun 2020 17:39:58 -0400 Subject: [PATCH] testing-checklist: add LANG=C, needed for debuilder --- doc/release-checklist.md | 35 +++++++---- doc/testing-checklist.md | 3 +- tests/visual.cpp | 128 ++++++++++++++++++++------------------- 3 files changed, 92 insertions(+), 74 deletions(-) diff --git a/doc/release-checklist.md b/doc/release-checklist.md index a5a74e4e4..32a38315a 100644 --- a/doc/release-checklist.md +++ b/doc/release-checklist.md @@ -1,7 +1,14 @@ +# Release procedure + +## Precheck + * Review the testing checklist (doc/testing-checklist.md) * clang-tidy check with something like: * `cmake "-DCMAKE_CXX_CLANG_TIDY=/usr/bin/clang-tidy-11;-checks=-*,clang-analyzer-*,modernize-*,performance-*" ..` * `scan-build cmake .. && scan-build make` + +## Release + * Run tools/release.sh $OLDVERSION $VERSION * Finalize CHANGELOG.md * Bumps version numbers everywhere they need bumping @@ -11,6 +18,17 @@ * Draft new release at https://github.com/dankamongmen/notcurses/releases * Title is "v$VERSION—some quip" * That's an em dash (U+2014, UTF-8 e2 80 94), get it right +* Upload new Rust crate with `cargo publish` +* Upload new Python pip with + * `python3 setup.py sdist` + * `twine upload dist/*` +* Generate and upload new HTML documentation via `make html` + * `scp *.html ../doc/man/index.html qemfd.net:/var/www/notcurses/` +* Generate and upload new Doxygen documentation via `doxygen ../doc/Doxyfile` + * `scp -r html qemfd.net:/var/www/notcurses/` + +## Debian + * In gbp repository: * Update Debian changelog, if necessary: `dch -v $VERSION+dfsg.1-1` * Finalize Debian changelog with `dch -r` @@ -25,23 +43,18 @@ * perform this in xterm with TERM=xterm-256color * beware: freak TERMs won't be present in pbuilder * Copy `../*notcurses*$VERSION*` to apt repo, import with `reprepro` +* Update Debian changelog with `dch -v $NEXTVERSION-1` +* Update CMakeLists.txt with next version + +## Arch + * Upload new AUR information * Update `pkgver` and `sha256sums` entries * `makepkg --printsrcinfo > .SRCINFO` * Test that package builds with `makepkg` * `git commit -a` -* Upload new Rust crate with `cargo publish` -* Upload new Python pip with - * `python3 setup.py sdist` - * `twine upload dist/*` -* Generate and upload new HTML documentation via `make html` - * `scp *.html ../doc/man/index.html qemfd.net:/var/www/notcurses/` -* Generate and upload new Doxygen documentation via `doxygen ../doc/Doxyfile` - * `scp -r html qemfd.net:/var/www/notcurses/` -* Update Debian changelog with `dch -v $NEXTVERSION-1` -* Update CMakeLists.txt with next version -==FreeBSD== +## FreeBSD * Update svn checkout of Ports tree: `cd /usr/ports && svn up` * Upgrade ports: `portupgrade -uap` diff --git a/doc/testing-checklist.md b/doc/testing-checklist.md index bdcec6f3b..4e6ee8035 100644 --- a/doc/testing-checklist.md +++ b/doc/testing-checklist.md @@ -4,7 +4,8 @@ Run unit tests (`make && make test`): * In each multimedia configuration (`ffmpeg`, `oiio`, `none`) -* With LANG set to `fr_FR.UTF-8` (to test comma as decimal separator) +* With `LANG` set to `fr_FR.UTF-8` (to test comma as decimal separator) +* With `LANG` set to `C` (to test ASCII mode, necessary for debuilder) * All must pass ## Manual tests diff --git a/tests/visual.cpp b/tests/visual.cpp index 5c0779c83..50700003c 100644 --- a/tests/visual.cpp +++ b/tests/visual.cpp @@ -167,78 +167,82 @@ TEST_CASE("Visual") { // write a checkerboard pattern and verify the NCBLIT_2x1 output SUBCASE("Dualblitter") { - constexpr int DIMY = 10; - constexpr int DIMX = 11; // odd number to get checkerboard effect - auto rgba = new uint32_t[DIMY * DIMX]; - for(int i = 0 ; i < DIMY * DIMX ; ++i){ - CHECK(0 == ncpixel_set_a(&rgba[i], 0xff)); - if(i % 2){ - CHECK(0 == ncpixel_set_g(&rgba[i], 0xff)); - CHECK(0 == ncpixel_set_r(&rgba[i], 0)); - }else{ - CHECK(0 == ncpixel_set_r(&rgba[i], 0xff)); - CHECK(0 == ncpixel_set_g(&rgba[i], 0)); + if(enforce_utf8()){ + constexpr int DIMY = 10; + constexpr int DIMX = 11; // odd number to get checkerboard effect + auto rgba = new uint32_t[DIMY * DIMX]; + for(int i = 0 ; i < DIMY * DIMX ; ++i){ + CHECK(0 == ncpixel_set_a(&rgba[i], 0xff)); + if(i % 2){ + CHECK(0 == ncpixel_set_g(&rgba[i], 0xff)); + CHECK(0 == ncpixel_set_r(&rgba[i], 0)); + }else{ + CHECK(0 == ncpixel_set_r(&rgba[i], 0xff)); + CHECK(0 == ncpixel_set_g(&rgba[i], 0)); + } + CHECK(0 == ncpixel_set_b(&rgba[i], 0)); } - CHECK(0 == ncpixel_set_b(&rgba[i], 0)); - } - auto ncv = ncvisual_from_rgba(rgba, DIMY, DIMX * sizeof(uint32_t), DIMX); - REQUIRE(nullptr != ncv); - struct ncvisual_options vopts{}; - vopts.n = n_; - vopts.blitter = NCBLIT_2x1; - vopts.flags = NCVISUAL_OPTION_NODEGRADE; - CHECK(n_ == ncvisual_render(nc_, ncv, &vopts)); - CHECK(0 == notcurses_render(nc_)); - for(int y = 0 ; y < DIMY / 2 ; ++y){ - for(int x = 0 ; x < DIMX ; ++x){ - uint32_t attrword; - uint64_t channels; - char* egc = notcurses_at_yx(nc_, y, x, &attrword, &channels); - REQUIRE(nullptr != egc); - CHECK((rgba[y * 2 * DIMX + x] & 0xffffff) == channels_bg(channels)); - CHECK((rgba[(y * 2 + 1) * DIMX + x] & 0xffffff) == channels_fg(channels)); - free(egc); + auto ncv = ncvisual_from_rgba(rgba, DIMY, DIMX * sizeof(uint32_t), DIMX); + REQUIRE(nullptr != ncv); + struct ncvisual_options vopts{}; + vopts.n = n_; + vopts.blitter = NCBLIT_2x1; + vopts.flags = NCVISUAL_OPTION_NODEGRADE; + CHECK(n_ == ncvisual_render(nc_, ncv, &vopts)); + CHECK(0 == notcurses_render(nc_)); + for(int y = 0 ; y < DIMY / 2 ; ++y){ + for(int x = 0 ; x < DIMX ; ++x){ + uint32_t attrword; + uint64_t channels; + char* egc = notcurses_at_yx(nc_, y, x, &attrword, &channels); + REQUIRE(nullptr != egc); + CHECK((rgba[y * 2 * DIMX + x] & 0xffffff) == channels_bg(channels)); + CHECK((rgba[(y * 2 + 1) * DIMX + x] & 0xffffff) == channels_fg(channels)); + free(egc); + } } + delete[] rgba; } - delete[] rgba; } // write a checkerboard pattern and verify the NCBLIT_2x2 output SUBCASE("Quadblitter") { - constexpr int DIMY = 10; - constexpr int DIMX = 11; // odd number to get checkerboard effect - auto rgba = new uint32_t[DIMY * DIMX]; - for(int i = 0 ; i < DIMY * DIMX ; ++i){ - CHECK(0 == ncpixel_set_a(&rgba[i], 0xff)); - if(i % 2){ - CHECK(0 == ncpixel_set_g(&rgba[i], 0xff)); - CHECK(0 == ncpixel_set_b(&rgba[i], 0)); - }else{ - CHECK(0 == ncpixel_set_b(&rgba[i], 0xff)); - CHECK(0 == ncpixel_set_g(&rgba[i], 0)); + if(enforce_utf8()){ + constexpr int DIMY = 10; + constexpr int DIMX = 11; // odd number to get checkerboard effect + auto rgba = new uint32_t[DIMY * DIMX]; + for(int i = 0 ; i < DIMY * DIMX ; ++i){ + CHECK(0 == ncpixel_set_a(&rgba[i], 0xff)); + if(i % 2){ + CHECK(0 == ncpixel_set_g(&rgba[i], 0xff)); + CHECK(0 == ncpixel_set_b(&rgba[i], 0)); + }else{ + CHECK(0 == ncpixel_set_b(&rgba[i], 0xff)); + CHECK(0 == ncpixel_set_g(&rgba[i], 0)); + } + CHECK(0 == ncpixel_set_r(&rgba[i], 0)); } - CHECK(0 == ncpixel_set_r(&rgba[i], 0)); - } - auto ncv = ncvisual_from_rgba(rgba, DIMY, DIMX * sizeof(uint32_t), DIMX); - REQUIRE(nullptr != ncv); - struct ncvisual_options vopts{}; - vopts.n = n_; - vopts.blitter = NCBLIT_2x2; - vopts.flags = NCVISUAL_OPTION_NODEGRADE; - CHECK(n_ == ncvisual_render(nc_, ncv, &vopts)); - CHECK(0 == notcurses_render(nc_)); - for(int y = 0 ; y < DIMY / 2 ; ++y){ - for(int x = 0 ; x < DIMX / 2 ; ++x){ - uint32_t attrword; - uint64_t channels; - char* egc = notcurses_at_yx(nc_, y, x, &attrword, &channels); - REQUIRE(nullptr != egc); - CHECK((rgba[(y * 2 * DIMX) + (x * 2)] & 0xffffff) == channels_fg(channels)); - CHECK((rgba[(y * 2 + 1) * DIMX + (x * 2) + 1] & 0xffffff) == channels_fg(channels)); - free(egc); + auto ncv = ncvisual_from_rgba(rgba, DIMY, DIMX * sizeof(uint32_t), DIMX); + REQUIRE(nullptr != ncv); + struct ncvisual_options vopts{}; + vopts.n = n_; + vopts.blitter = NCBLIT_2x2; + vopts.flags = NCVISUAL_OPTION_NODEGRADE; + CHECK(n_ == ncvisual_render(nc_, ncv, &vopts)); + CHECK(0 == notcurses_render(nc_)); + for(int y = 0 ; y < DIMY / 2 ; ++y){ + for(int x = 0 ; x < DIMX / 2 ; ++x){ + uint32_t attrword; + uint64_t channels; + char* egc = notcurses_at_yx(nc_, y, x, &attrword, &channels); + REQUIRE(nullptr != egc); + CHECK((rgba[(y * 2 * DIMX) + (x * 2)] & 0xffffff) == channels_fg(channels)); + CHECK((rgba[(y * 2 + 1) * DIMX + (x * 2) + 1] & 0xffffff) == channels_fg(channels)); + free(egc); + } } + delete[] rgba; } - delete[] rgba; } // close-in verification of each quadblitter output EGC