From 2ab7b77474e7f3f34a42184c4db97a81fbccbeb4 Mon Sep 17 00:00:00 2001 From: Steven Esser Date: Mon, 14 Oct 2019 11:12:36 -0400 Subject: [PATCH 1/3] Update boolean.py library * Bump boolean.py library to v3.7, which adds the ability to sort OR leave boolean expressions unsorted. * Add test case for simplify() sorting Addresses: #32 Signed-off-by: Steven Esser --- tests/test_license_expression.py | 8 ++++++++ .../prod/boolean.py-3.6-py2.py3-none-any.whl | Bin 21969 -> 0 bytes .../boolean.py-3.6-py2.py3-none-any.whl.ABOUT | 15 --------------- .../prod/boolean.py-3.7-py2.py3-none-any.whl | Bin 0 -> 22169 bytes .../boolean.py-3.7-py2.py3-none-any.whl.ABOUT | 8 ++++++++ ... boolean.py-3.7-py2.py3-none-any.whl.NOTICE} | 0 6 files changed, 16 insertions(+), 15 deletions(-) delete mode 100644 thirdparty/prod/boolean.py-3.6-py2.py3-none-any.whl delete mode 100644 thirdparty/prod/boolean.py-3.6-py2.py3-none-any.whl.ABOUT create mode 100644 thirdparty/prod/boolean.py-3.7-py2.py3-none-any.whl create mode 100644 thirdparty/prod/boolean.py-3.7-py2.py3-none-any.whl.ABOUT rename thirdparty/prod/{boolean.py-3.6-py2.py3-none-any.whl.NOTICE => boolean.py-3.7-py2.py3-none-any.whl.NOTICE} (100%) diff --git a/tests/test_license_expression.py b/tests/test_license_expression.py index 826a029..d14c0b6 100644 --- a/tests/test_license_expression.py +++ b/tests/test_license_expression.py @@ -552,6 +552,14 @@ def test_parse_simplify_and_contain_and_equal(self): expr3 = licensing.parse('mit and LGPL2.1') self.assertTrue(expr3 in expr2) + def test_parse_simplify_no_sort(self): + licensing = Licensing() + + expr = licensing.parse('gpl-2.0 OR apache-2.0 OR gpl-2.0') + + self.assertEqual(expr.simplify(), expr.simplify(sort=False)) + self.assertNotEqual(expr.simplify().pretty(), expr.simplify(sort=False).pretty()) + def test_license_expression_is_equivalent(self): lic = Licensing() is_equiv = lic.is_equivalent diff --git a/thirdparty/prod/boolean.py-3.6-py2.py3-none-any.whl b/thirdparty/prod/boolean.py-3.6-py2.py3-none-any.whl deleted file mode 100644 index b1f55798d533bebaff07df4b5cf9100f242fb29e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21969 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�@PHZYNURDQ;mU}~K84V-&+(q9P& zsH!d#$$;jkQ9=wdUZ&e8ouMhsm1UK`CqD>aI%8<}`*b;ux%^JL7|wtT>xfCKiGcgeza%fvT>t zP1*p%trPAq{2j<&af8(OuD7sy-+=&A3Ky|7{5sgZ_qb9*M4ToQI$ihA{J^$M;4Z$^_ih<*Lnrj*?!dB86Rp;@JqUf zRSA~RfEP{ry3J&SLmYgfHg|!hIgr!?mm~m|!W|I`pLWqGRE+X)E6CFXyTqR|4izQ8 znL=&s^yUTbxYdFoGc7s{+V{C8F_S6F|bU=3H~;dJuo9ud709EKVVuOnDgZ zEoWOJ#uC=v$lPDIi@+5{823G@c@v>0$igBH6tN_2)qI#L?32hc_=4~bPwP|xpT3*#hkeLLN;4BOKt=W3m-u4i;4%1-4W_ z|AoDdOp>CD{weIEvADwMJd{{?ySveHUJM5pf=pBn9*fW(1uxHxbs@YEc8N0G&cg^R z69U@Zi0$=mwf93`Uy_X>P+%T|<%;i!kRJ>1USw3qQ+5p9YKi}mJ%QH`?xGLVhWcm6 z=(}&YD(+9cyc^93_Ng*( z-`tW-d`mSETpfb9PiF(;+L9u*9**Zb<a%E@y?{D^JHXfBzf*# zBy*X;yV%0OXAgTSvcfw3k-KJ@Qeb6W)?s$guToDIJA8K0_(te4uo zgtSot3jVIh;9({?r>3b``v-UN7nK6tDl-#3cI3r#GNx3u9lnfXs5^#X-FC)&NYbX$ zsOG43N7sBgeI8rUEmGyud^CU;NjTVPB#6(`@Su~wj@HzHl;Cw$Cbkd-;nb8Ub3qVs zy!m}ast^zE_|_EOTm8q8EqvTqb|RYUII(SuyT>3glip2Ab&~Cg8X?8F{YP(em7o8p zMJ%<5rRrEg_Q8H6%W-i7Zx6aQbJuNnycQ8V%B7hUj7dh8xr>Gsb+2}_r`x-qH~v$G zb3?D#W3C%B`dr65)9+#(0lBA%Q2t}6*72S-jVh)Gix*CVt=m~9;f&gA%fHe+H z88J-?APAFdMqP3n#i5@od4Bcu&Ur)O;V$m7jyp)u)P!63qA!#ClC042hbQl?dHO@v zIfOi!jhy4=cjLp%Zr>&n0B%`X0FM9waCU+8v6%mwh|a8%NX~44!U$4mxI?tcbTaR6 zZBOVg;;cmA3Q{iCSSv@F9m!7^5V2jEv3pHEd|mf_HP#cKOs>mk39F_Z#QTA@H9V8v zZLt3+mJFxqM}+%517D6p;#_k}&Djz^XK~P>QaPx2IduT(RJj zAZ3%6zr5a}fmjsS|9_*+>m~i~Qy%c=^e=5U{|@-KR*wHO2LQ?g=C8x#FTl?Noxj`v zTV2mj``g!x`j`DLRX%@*{M%vcC!_`Xe~{lEy?!PBn!J7z+u*+;{v(zB%KSBj{bb(O z_zm;F3GG+buQ}%@tMGTMzcSFTxL;-c6PKj@8`u6PaxEAx-k%2e*DvyVU$D{n^Xorv CvcMJq diff --git a/thirdparty/prod/boolean.py-3.6-py2.py3-none-any.whl.ABOUT b/thirdparty/prod/boolean.py-3.6-py2.py3-none-any.whl.ABOUT deleted file mode 100644 index 3df1f3a..0000000 --- a/thirdparty/prod/boolean.py-3.6-py2.py3-none-any.whl.ABOUT +++ /dev/null @@ -1,15 +0,0 @@ -about_resource: boolean.py-3.6-py2.py3-none-any.whl -attribute: true -checksum_md5: da39999eb131b589e84ad935dc4ca642 -checksum_sha1: d31b55e7ad2ee917232b3213afe3ae9678156a9f -copyright: Copyright (c) 2009-2016 Sebastian Kraemer, basti.kr@gmail.com and others -description: Implements boolean algebra in one module. -download_url: https://files.pythonhosted.org/packages/9b/27/d22062a221010e17935237ba4b574cd828238ea02e0765337c238466a512/boolean.py-3.6-py2.py3-none-any.whl -homepage_url: https://github.com/bastikr/boolean.py -license_expression: bsd-simplified -license_file: bsd-simplified.LICENSE -name: boolean.py -notice_file: boolean.py-3.6-py2.py3-none-any.whl.NOTICE -notice_url: https://github.com/bastikr/boolean.py/blob/master/LICENSE.txt -owner: Sebastian Kraemer -version: '3.6' diff --git a/thirdparty/prod/boolean.py-3.7-py2.py3-none-any.whl b/thirdparty/prod/boolean.py-3.7-py2.py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..6f153e95710718197a332e399b692a71360b43e2 GIT binary patch literal 22169 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 literal 0 HcmV?d00001 diff --git a/thirdparty/prod/boolean.py-3.7-py2.py3-none-any.whl.ABOUT b/thirdparty/prod/boolean.py-3.7-py2.py3-none-any.whl.ABOUT new file mode 100644 index 0000000..2380120 --- /dev/null +++ b/thirdparty/prod/boolean.py-3.7-py2.py3-none-any.whl.ABOUT @@ -0,0 +1,8 @@ +about_resource: boolean.py-3.7-py2.py3-none-any.whl +download_url: https://files.pythonhosted.org/packages/dc/53/b9c4f026bac231cbf7ddc214d879c3bdb5cda9a57adbe10520deeae4f154/boolean.py-3.7-py2.py3-none-any.whl +attribute: yes +checksum_md5: 97af5906f5eaa22539a034a99c24c824 +checksum_sha1: 514c2b60f10521988063a9e6b56e3fae24b393c7 +license_expression: bsd-simplified +name: boolean.py +version: '3.7' diff --git a/thirdparty/prod/boolean.py-3.6-py2.py3-none-any.whl.NOTICE b/thirdparty/prod/boolean.py-3.7-py2.py3-none-any.whl.NOTICE similarity index 100% rename from thirdparty/prod/boolean.py-3.6-py2.py3-none-any.whl.NOTICE rename to thirdparty/prod/boolean.py-3.7-py2.py3-none-any.whl.NOTICE From 83695f9a2d43640dcc1a9763d95895b623c8593f Mon Sep 17 00:00:00 2001 From: Steven Esser Date: Mon, 14 Oct 2019 12:46:34 -0400 Subject: [PATCH 2/3] Address PR review comments * Update test case code for clarity * Remove un-needed blank lines * Update Windows azure pipeline to use python3.7.4 Addresses: #32 Signed-off-by: Steven Esser --- azure-pipelines.yml | 2 +- tests/test_license_expression.py | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 7201e21..dc0a03d 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -62,7 +62,7 @@ jobs: python_version: '3.6' python_architecture: 'x86' py37: - python_version: '3.7.3' + python_version: '3.7.4' python_architecture: 'x86' - template: etc/ci/azure-win.yml diff --git a/tests/test_license_expression.py b/tests/test_license_expression.py index d14c0b6..57d9d6e 100644 --- a/tests/test_license_expression.py +++ b/tests/test_license_expression.py @@ -554,11 +554,13 @@ def test_parse_simplify_and_contain_and_equal(self): def test_parse_simplify_no_sort(self): licensing = Licensing() + expr = licensing.parse('gpl-2.0 OR apache-2.0') + expr2 = licensing.parse('apache-2.0 OR gpl-2.0') - expr = licensing.parse('gpl-2.0 OR apache-2.0 OR gpl-2.0') - - self.assertEqual(expr.simplify(), expr.simplify(sort=False)) - self.assertNotEqual(expr.simplify().pretty(), expr.simplify(sort=False).pretty()) + self.assertEqual(expr, expr2) + self.assertEqual(expr.simplify(), expr2.simplify()) + self.assertEqual(expr.simplify(sort=False), expr2.simplify()) + self.assertNotEqual(expr.simplify(sort=False).pretty(), expr2.pretty()) def test_license_expression_is_equivalent(self): lic = Licensing() From a9cb3ae4f83a40c2a4412491f919c3249dc156e7 Mon Sep 17 00:00:00 2001 From: Steven Esser Date: Tue, 15 Oct 2019 09:44:18 -0400 Subject: [PATCH 3/3] Update travis build environment Signed-off-by: Steven Esser --- .travis.yml | 76 +++++++++++++++++++++++++++++++++-------------------- 1 file changed, 47 insertions(+), 29 deletions(-) diff --git a/.travis.yml b/.travis.yml index 72773ea..3c2c8d1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,49 +1,67 @@ matrix: include: - os: osx - language: generic env: - - PYENV_PYTHON="2.7.14" + - PYTHON="3.6.8" + - TEST_SUITE="bin/py.test -vvs" + language: generic + python: - os: osx - language: generic env: - - PYENV_PYTHON="3.6.1" - - - os: linux + - PYTHON="2.7.15" + - TEST_SUITE="bin/py.test -vvs" language: generic - env: - - PYENV_PYTHON="2.7.14" + python: - os: linux - language: generic - env: - - PYENV_PYTHON="3.6.1" + sudo: required + env: TEST_SUITE="bin/py.test -vvs" + language: python + python: "2.7" + dist: xenial + + - os: linux + sudo: required + env: TEST_SUITE="bin/py.test -vvs" + language: python + python: "2.7" + dist: bionic + + - os: linux + sudo: required + env: TEST_SUITE="bin/py.test -vvs" + language: python + python: "3.6" + dist: xenial + + - os: linux + sudo: required + env: TEST_SUITE="bin/py.test -vvs" + language: python + python: "3.6" + dist: bionic +addons: + homebrew: + packages: + - openssl + - readline + - sqlite3 + - xz + - zlib + - pyenv + update: true install: - - | - if [[ $TRAVIS_OS_NAME == 'osx' ]]; then - rm -rf ~/.pyenv - git clone https://github.com/pyenv/pyenv.git ~/.pyenv - echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile - echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile - echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bash_profile - exec "$SHELL" - fi - - which pyenv - - pyenv install --list - - python --version - - pyenv install "$PYENV_PYTHON" - - pyenv global "$PYENV_PYTHON" - - python --version - ./configure - script: + # If debugging, use a subset of tests to wait less: + # - ./bin/py.test -n 2 -vvs --cov=src tests/scancode + # - echo $TEST_SUITE - bin/about-code check --verbose . - - "bin/py.test -vvs" - + - $TEST_SUITE notifications: irc: