testing-checklist: add LANG=C, needed for debuilder

This commit is contained in:
nick black 2020-06-14 17:39:58 -04:00
parent 0657267274
commit 8ff0d92ad7
No known key found for this signature in database
GPG Key ID: 5F43400C21CBFACC
3 changed files with 92 additions and 74 deletions

View File

@ -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`

View File

@ -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

View File

@ -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