From 571b9372a977d6836aed8dfacb947a1bd423e6ce Mon Sep 17 00:00:00 2001 From: Joshua May Date: Sun, 13 Oct 2019 18:20:21 -0700 Subject: [PATCH 1/9] We got our first snapshot tests for HTML rendering --- requirements.txt | 1 + sirius/coding/snapshots/__init__.py | 0 .../snapshots/snap_test_image_coding.py | 11 ++++++++++ ...se::test_snapshot_fixtures hello_world.png | Bin 0 -> 1297 bytes sirius/coding/test_image_coding.py | 19 ++++++++++++++++++ 5 files changed, 31 insertions(+) create mode 100644 sirius/coding/snapshots/__init__.py create mode 100644 sirius/coding/snapshots/snap_test_image_coding.py create mode 100644 sirius/coding/snapshots/snap_test_image_coding/ImageSnapshotCase::test_snapshot_fixtures hello_world.png diff --git a/requirements.txt b/requirements.txt index 8ab88a2..93e819e 100755 --- a/requirements.txt +++ b/requirements.txt @@ -36,5 +36,6 @@ requests==2.22.0 requests-oauthlib==1.2.0 selenium==3.141.0 six==1.12.0 +git+git://github.com/syrusakbary/snapshottest.git@4ac2b4fb09e9e7728bebb11967c164a914775d1d#snapshottest twitter==1.18.0 websocket-client==0.56.0 diff --git a/sirius/coding/snapshots/__init__.py b/sirius/coding/snapshots/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/sirius/coding/snapshots/snap_test_image_coding.py b/sirius/coding/snapshots/snap_test_image_coding.py new file mode 100644 index 0000000..d10dcb1 --- /dev/null +++ b/sirius/coding/snapshots/snap_test_image_coding.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# snapshottest: v1 - https://goo.gl/zC4yUc +from __future__ import unicode_literals + +from snapshottest import Snapshot +from snapshottest.file import FileSnapshot + + +snapshots = Snapshot() + +snapshots['ImageSnapshotCase::test_snapshot_fixtures hello_world'] = FileSnapshot('snap_test_image_coding/ImageSnapshotCase::test_snapshot_fixtures hello_world.png') diff --git a/sirius/coding/snapshots/snap_test_image_coding/ImageSnapshotCase::test_snapshot_fixtures hello_world.png b/sirius/coding/snapshots/snap_test_image_coding/ImageSnapshotCase::test_snapshot_fixtures hello_world.png new file mode 100644 index 0000000000000000000000000000000000000000..6c11f48d75c23a74f7e45085e1f2fbda3edb5280 GIT binary patch literal 1297 zcmV+s1@8KZP)%77f}H^g`PTq@qWr&r1r_SK85r=gcX-}fzb^rf8S92uNmf5%M+0B_ z_0>`S6`pr*wHqiRl1HA^=;6RRkH3KpZ~zYi7e?hy1zxC7&y#*n>@wi<9Bmj+vicG0 z0q*qpP?SHz!=@^y*b)YYjsgPs~@pl(e-!& z=<{&r7`979WUuAjk4{oyIzNt21v-Ikz*b-taPTPFbO7+E-=6@V0t<8Ay9Aq5`hh2a zl~H;FP!Fu|^m4yv7Vwro>qp>K;8>stT#jv1Z3JEhb^|w-dG=yp6EFyLdtUta`Od?A zVZsv;`Nu=pVD=8SmmNO0QaS@@01DXP_YrUj@QGhr<@I#%@4fSvD4hY+0qsMLF781U7s5dETato<85poagl)3A6%#c$?<{*Lm3;*jCrtsDJ%_-#r=qxYEOLBY#`r^z4@~p8^mMHz%<}%?3+WnzF;@- z6E<0hh}2wRjO*La!_~l=D8C7qoa6p5xXz67zQP9d0=9=gk{_`B`ip^wy{>iGc2Xy{ zntvtZc^`W`9C+t>7TBZ`!aB0gMdG$?%UQ38NLA(i1`x`n2gUgQdTgZ(whc4Uqx_)7!*22kburOrNhuJh7bB-uRFo^wx?mQK_=Ls|1`GhecsD2^=pqrb$sS| zXJh;1-JZU|uV3%!n>^i$ZKv!6PA=2t36u_l!^G2#t@vj|0F$Eo()|dBzTX13MCm@@Dlc=XKmWcmZ59z3ceaxKOWg>rFHnT2feS` zfs3$j9=}BG+k(B$n$?d(fe)jyeNo@%`*W`LXFOA(%_1WEyaKkOo;p&&3R-~E$o?Ne zt=OvktP1x}X81PIB;b%TWsBJF0gmUtor_HIPm%1tHHello, world!', + } + + for name, html in fixtures.items(): + with TemporaryDirectory() as tmpdir: + data = image_encoding.html_to_png(html) + image = Image.open(data) + + temp_file_name = os.path.join(tmpdir, '%s.png' % name) + image.save(temp_file_name, format='PNG') + self.assertMatchSnapshot(FileSnapshot(temp_file_name), name) + class PipeTestCase(unittest.TestCase): def test_specific_image_rle(self): From 0035ecf1216031fb9902ef9ea3a3bdb89ba64edb Mon Sep 17 00:00:00 2001 From: Joshua May Date: Sun, 13 Oct 2019 18:43:11 -0700 Subject: [PATCH 2/9] Mounting the code dir in Docker for dev/test, tightens up them feedback loops --- Dockerfile | 2 +- docker-compose.development.yml | 2 ++ docker-compose.test.yml | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 11c3390..ddf2df0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,7 +20,7 @@ RUN apt-get update -y && \ phantomjs \ wget \ postgresql-11 \ - git + git RUN apt-get autoremove -y diff --git a/docker-compose.development.yml b/docker-compose.development.yml index 3e212d0..9bc1383 100644 --- a/docker-compose.development.yml +++ b/docker-compose.development.yml @@ -8,6 +8,8 @@ services: - VIRTUAL_HOST=sirius.localhost - DATABASE_URL=postgresql://postgres:plop@sirius-database/sirius-dev - OAUTHLIB_INSECURE_TRANSPORT=1 + volumes: + - ./:/sirius sirius-database: ports: diff --git a/docker-compose.test.yml b/docker-compose.test.yml index ca02c6d..3167108 100644 --- a/docker-compose.test.yml +++ b/docker-compose.test.yml @@ -9,6 +9,8 @@ services: command: "bin/wait-for-it.sh sirius-database-test:5432 -- bin/docker-entrypoint.sh" environment: - DATABASE_URL=postgresql://postgres:plop@sirius-database-test/sirius-test + volumes: + - ./:/sirius sirius-database-test: container_name: sirius-database-test From 8c2fa933f1d56286daf258d1650f354969109737 Mon Sep 17 00:00:00 2001 From: Joshua May Date: Sun, 13 Oct 2019 18:43:41 -0700 Subject: [PATCH 3/9] Added shortcut for bumping snapshot tests inside of Docker, so it's a consistent env --- Makefile | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 97ec990..67786db 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,11 @@ +run: + docker-compose -f docker-compose.yml + run-development: - docker-compose -f docker-compose.yml -f docker-compose.db.yml -f docker-compose.development.yml up --build + docker-compose -f docker-compose.yml -f docker-compose.db.yml -f docker-compose.development.yml up ci: - docker-compose -f docker-compose.yml -f docker-compose.test.yml build - docker-compose -f docker-compose.yml -f docker-compose.test.yml run --rm --entrypoint "nosetests" sirius \ No newline at end of file + docker-compose -f docker-compose.yml -f docker-compose.test.yml run --rm --entrypoint "nosetests" sirius + +ci-snapshot-update: + docker-compose -f docker-compose.yml -f docker-compose.test.yml run --rm --entrypoint "nosetests --snapshot-update" sirius \ No newline at end of file From 4661e5a397ded6a449ef5509efc9f5e2bbc66e7a Mon Sep 17 00:00:00 2001 From: Joshua May Date: Sun, 13 Oct 2019 18:44:02 -0700 Subject: [PATCH 4/9] Regenerated snapshot inside of Docker, so we've got a nice stable base now --- ...se::test_snapshot_fixtures hello_world.png | Bin 1297 -> 1254 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/sirius/coding/snapshots/snap_test_image_coding/ImageSnapshotCase::test_snapshot_fixtures hello_world.png b/sirius/coding/snapshots/snap_test_image_coding/ImageSnapshotCase::test_snapshot_fixtures hello_world.png index 6c11f48d75c23a74f7e45085e1f2fbda3edb5280..b8389f2d3c69a0ac8ba7b0e68ba27823f877c005 100644 GIT binary patch delta 1247 zcmV<51R(p73g!ur7k?uN1^@s6ojBb~000E7Nklm<{~ru9?=xr4Jnvqd^S;kHvwt8-k|arzBuSDaNs=T< zk|arzBuSDaNk#L49^fGGM2d||v0s5t#w4reDm&*g(^I=Yf!CUzm84_N@inxW0`vmE z0fXuF9ohRUQfx4_=}n)h#b#h8(3iyqQtb5_`}n^pJLfXJsa@G5cscR+e)C8sCh6Ex z%LK5SxEg&K=zmYIpU>WZHpK=~o9XE@YM$MNXGyACEfawLdwxpKP5_b`*6a!3IN)yJ z>-5+T+?(Q!I2m}7sEuz2wgI;_(9a6s0Pqh{YPl-K=cd@%>3AOSJ@6OsYWDesz!qQ! z@Ex!gI4gUEqE$!ZR! zHo3=%f%ejLd?7JtJz8kj%b^RRYZ+eu9tXUaVy!9GP7IcJjh1|gWyF9yBa1zfV)+`! z6)BgB>xgq*mX0R?>w%rX#xC0eoEOYgWqbzAUyX#V*TYi_`bQq38Szai@_lptll}LfHhc z4Y0@S&ysJb8+zf2sj0pQ)hpBh#fgg z((!q~USc780YekYB4AT`Jr%g9B!`{A&smNY{S2SPHm2__Gmj`K}=%zJaLMFMnnD1keY3S(3x~z-d{Ijo3o0CFE-WlT+Vi zx){1Mk)*mca{}lib^)zqXy;1{vD0QM@I#&btq0x*9v}v5h#fjN1NRe)r4{c|`(WHj zT>Wp#VjF-nfs=@Bp1FI7T}`*9jHL)oD6fy8mBFbe4OWMvR)_(?G zIE?R;q)|;FYWKeoHRm3pR8nzgiVdbVJq*8!T}fQ6b^)IggJfm9Wd46~_7hj}`Tqjy zPp@aC_LDgDcL2*va{d;0tj6=3pK_m@#ZE})@=%q}Tti&3?<6LObqxJ>0N|~3J_9M& z2MgcV!|-#iXa_zec1i6ZwxfPP{8)>P9)=dCXAotu;&xg|I;LGqOdd1GI1fqEQ8aW@Kfh78T zj=_F`ZYFbH&eUi|m@&cl6S!V?ks$3xg)_71j} z9X_{GIs<3`3fSQH5pW6ciCpy>z4MnSodMJV?_=iz?Z8}YP)>kFIoeqSHhcMb z-lmP7K7ZfKoagl)3A6%#c$?<{*Lm3;*jCrtsDJ%_-#r=qxYESSO0ozVXzZoPV zQWK+nCGi2^i0CsXb^Rm{H(}c)Z(|3dcjv5sriVRI-n$-72lmfV$4YGPeIYOrxWMxl zVB1selqQ4lym(tCJnuN*S8O2PjJ^4@9UH`B&A>F^YwVjty1rmH@Dny!h=|l&VT|kB z&wsJarfrq`Wb=Y=NC$^e@CF6M?dpsO? z=Xn;`q!Pk9vd=~0wr$Ha!_Y2<5Bg!RJHht0r(v%_CfK0=G`8w}-peobYmY>AeCBy)WBcUYp1#4a zU+?LgJl%?Ir|bkyF4N`-ln#T##M6zf_-91rW@CHz1K78KdhFa{7j{V8>~#zPlYgT7 z()|dBzTX13MCm@@Dlc=XKmWcmZ59z3ceaxKOWg>rFHnT2feS`fs3$j9=}BG z+k(B$n$?d(fe)jyeNo@%`*W`LXMa3Xq0J&9`@90SqMkZZ!3tV{)5!iGL9N)T{HzN1 zPiFWw(InuIGG&X{?*WeIznzOr@lTQLzBiHoY(YdsGOWj5v8)@Zpoob4znoI*28f7= zh=_=Yh=_=Yh=_=Yh=_=Yh=_=Yh=_=Yh=^3x-ywcHGoyY@2><{907*qoL Date: Sun, 13 Oct 2019 18:57:51 -0700 Subject: [PATCH 5/9] Moved snapshot tests to their own file, and added template testing --- .../snapshots/snap_test_image_coding.py | 11 ----- ...se::test_snapshot_fixtures hello_world.png | Bin 1254 -> 0 bytes .../snap_test_image_coding_snapshots.py | 13 ++++++ ...se::test_snapshot_fixtures hello_world.png | Bin 0 -> 1297 bytes ...snapshot_template_fixtures hello_world.png | Bin 0 -> 8907 bytes sirius/coding/test_image_coding.py | 20 --------- sirius/coding/test_image_coding_snapshots.py | 38 ++++++++++++++++++ 7 files changed, 51 insertions(+), 31 deletions(-) delete mode 100644 sirius/coding/snapshots/snap_test_image_coding.py delete mode 100644 sirius/coding/snapshots/snap_test_image_coding/ImageSnapshotCase::test_snapshot_fixtures hello_world.png create mode 100644 sirius/coding/snapshots/snap_test_image_coding_snapshots.py create mode 100644 sirius/coding/snapshots/snap_test_image_coding_snapshots/ImageCodingSnapshotCase::test_snapshot_fixtures hello_world.png create mode 100644 sirius/coding/snapshots/snap_test_image_coding_snapshots/ImageCodingSnapshotCase::test_snapshot_template_fixtures hello_world.png create mode 100644 sirius/coding/test_image_coding_snapshots.py diff --git a/sirius/coding/snapshots/snap_test_image_coding.py b/sirius/coding/snapshots/snap_test_image_coding.py deleted file mode 100644 index d10dcb1..0000000 --- a/sirius/coding/snapshots/snap_test_image_coding.py +++ /dev/null @@ -1,11 +0,0 @@ -# -*- coding: utf-8 -*- -# snapshottest: v1 - https://goo.gl/zC4yUc -from __future__ import unicode_literals - -from snapshottest import Snapshot -from snapshottest.file import FileSnapshot - - -snapshots = Snapshot() - -snapshots['ImageSnapshotCase::test_snapshot_fixtures hello_world'] = FileSnapshot('snap_test_image_coding/ImageSnapshotCase::test_snapshot_fixtures hello_world.png') diff --git a/sirius/coding/snapshots/snap_test_image_coding/ImageSnapshotCase::test_snapshot_fixtures hello_world.png b/sirius/coding/snapshots/snap_test_image_coding/ImageSnapshotCase::test_snapshot_fixtures hello_world.png deleted file mode 100644 index b8389f2d3c69a0ac8ba7b0e68ba27823f877c005..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1254 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 Dx4Kpm literal 0 HcmV?d00001 diff --git a/sirius/coding/test_image_coding.py b/sirius/coding/test_image_coding.py index 2d529c7..c8b684f 100644 --- a/sirius/coding/test_image_coding.py +++ b/sirius/coding/test_image_coding.py @@ -1,13 +1,8 @@ -import os -from tempfile import TemporaryDirectory from PIL import Image, ImageDraw import unittest -import snapshottest -from snapshottest.file import FileSnapshot from sirius.coding import image_encoding - class ImageCase(unittest.TestCase): def test_normal_text(self): data = image_encoding.html_to_png( @@ -25,21 +20,6 @@ def test_normal_height(self): self.assertEquals(image.size[0], 384) self.assertEquals(image.size[1], 100) -class ImageSnapshotCase(snapshottest.TestCase): - def test_snapshot_fixtures(self): - fixtures = { - 'hello_world': 'Hello, world!', - } - - for name, html in fixtures.items(): - with TemporaryDirectory() as tmpdir: - data = image_encoding.html_to_png(html) - image = Image.open(data) - - temp_file_name = os.path.join(tmpdir, '%s.png' % name) - image.save(temp_file_name, format='PNG') - self.assertMatchSnapshot(FileSnapshot(temp_file_name), name) - class PipeTestCase(unittest.TestCase): def test_specific_image_rle(self): diff --git a/sirius/coding/test_image_coding_snapshots.py b/sirius/coding/test_image_coding_snapshots.py new file mode 100644 index 0000000..7c0f858 --- /dev/null +++ b/sirius/coding/test_image_coding_snapshots.py @@ -0,0 +1,38 @@ +import os +from tempfile import TemporaryDirectory +from PIL import Image + +import snapshottest +from snapshottest.file import FileSnapshot + +from sirius.coding import image_encoding +from sirius.coding import templating + + +class ImageCodingSnapshotCase(snapshottest.TestCase): + def _check_html(self, name, html): + print('Cheking fixture named: %s' % name) + + with TemporaryDirectory() as tmpdir: + data = image_encoding.html_to_png(html) + image = Image.open(data) + + temp_file_name = os.path.join(tmpdir, '%s.png' % name) + image.save(temp_file_name, format='PNG') + self.assertMatchSnapshot(FileSnapshot(temp_file_name), name) + + def test_snapshot_fixtures(self): + fixtures = { + 'hello_world': 'Hello, world!', + } + + for name, html in fixtures.items(): + self._check_html(name, html) + + def test_snapshot_template_fixtures(self): + fixtures = { + 'hello_world': '

Hello, world!

', + } + + for name, snippet in fixtures.items(): + self._check_html(name, templating.default_template(snippet, 'anonymous')) \ No newline at end of file From ca86467f46a525bcfb7d57e83462830e362d1ec4 Mon Sep 17 00:00:00 2001 From: Joshua May Date: Sun, 13 Oct 2019 19:08:17 -0700 Subject: [PATCH 6/9] We can set the datetime from the outside for default_template --- sirius/coding/templating.py | 4 ++-- sirius/coding/test_image_coding_snapshots.py | 12 +++++++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/sirius/coding/templating.py b/sirius/coding/templating.py index 188ad4d..ed52023 100644 --- a/sirius/coding/templating.py +++ b/sirius/coding/templating.py @@ -8,13 +8,13 @@ # TODO apply scrubber library if wanted. # https://pypi.python.org/pypi/scrubber -def default_template(raw_html, from_name): +def default_template(raw_html, from_name, date=datetime.datetime.now()): with open(DEFAULT_TEMPLATE_FILE) as f: template = f.read() t = ENV.from_string(template) return t.render( raw_html=raw_html, - date=datetime.datetime.now(), + date=date, from_name=from_name ) diff --git a/sirius/coding/test_image_coding_snapshots.py b/sirius/coding/test_image_coding_snapshots.py index 7c0f858..d6e920a 100644 --- a/sirius/coding/test_image_coding_snapshots.py +++ b/sirius/coding/test_image_coding_snapshots.py @@ -1,4 +1,5 @@ import os +import datetime from tempfile import TemporaryDirectory from PIL import Image @@ -34,5 +35,14 @@ def test_snapshot_template_fixtures(self): 'hello_world': '

Hello, world!

', } + fixture_username = 'somebody' + fixture_date = datetime.datetime(2012, 2, 3, 15, 46, 12) + for name, snippet in fixtures.items(): - self._check_html(name, templating.default_template(snippet, 'anonymous')) \ No newline at end of file + self._check_html( + name, templating.default_template( + snippet, + fixture_username, + fixture_date + ) + ) \ No newline at end of file From a3185acee94962824dc22f83d5f79ccfb57c48f1 Mon Sep 17 00:00:00 2001 From: Joshua May Date: Sun, 13 Oct 2019 19:08:37 -0700 Subject: [PATCH 7/9] We got updated templated snapshots goin', wee --- ...se::test_snapshot_fixtures hello_world.png | Bin 1297 -> 1254 bytes ...snapshot_template_fixtures hello_world.png | Bin 8907 -> 8313 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/sirius/coding/snapshots/snap_test_image_coding_snapshots/ImageCodingSnapshotCase::test_snapshot_fixtures hello_world.png b/sirius/coding/snapshots/snap_test_image_coding_snapshots/ImageCodingSnapshotCase::test_snapshot_fixtures hello_world.png index 6c11f48d75c23a74f7e45085e1f2fbda3edb5280..b8389f2d3c69a0ac8ba7b0e68ba27823f877c005 100644 GIT binary patch delta 1247 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 literal 8907 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 Dx4Kpm From 61d74dc2de9234b3a2703f61043e895e5b146f56 Mon Sep 17 00:00:00 2001 From: Joe Rickerby Date: Mon, 14 Oct 2019 12:39:36 +0100 Subject: [PATCH 8/9] Empty commit to test triggering CI From 044be3bf080b540fdba318d203edd6a327e56e82 Mon Sep 17 00:00:00 2001 From: Joshua May Date: Mon, 14 Oct 2019 11:07:24 -0700 Subject: [PATCH 9/9] datetime as default arg is a bad idea, turns out --- sirius/coding/templating.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/sirius/coding/templating.py b/sirius/coding/templating.py index ed52023..ef90484 100644 --- a/sirius/coding/templating.py +++ b/sirius/coding/templating.py @@ -8,7 +8,10 @@ # TODO apply scrubber library if wanted. # https://pypi.python.org/pypi/scrubber -def default_template(raw_html, from_name, date=datetime.datetime.now()): +def default_template(raw_html, from_name, date=None): + if date is None: + date = datetime.datetime.now() + with open(DEFAULT_TEMPLATE_FILE) as f: template = f.read()