1- from tomlkit import loads
21import pytest
3- from exasol .toolbox .nox ._dependencies_check import (
4- _source_filter ,
5- _dependencies_check
6- )
2+ from exasol .toolbox .nox ._dependencies_check import DependenciesCheck
73
84
95@pytest .mark .parametrize (
10- "filters,source ,expected" ,
6+ "toml ,expected" ,
117 [
128 (
13- ['url' , 'git' , 'path' ],
14- """example-url = {url = "https://example.com/my-package-0.1.0.tar.gz"}""" ,
15- 'url' ),
16- (
17- ['url' , 'git' , 'path' ],
18- """example-git = {git = "[email protected] :requests/requests.git"}""" , 19- 'git' ),
9+ """
10+ """ ,
11+ {}
12+ ),
2013 (
21- ['url' , 'git' , 'path' ],
22- """example-path = {path = "../my-package/dist/my-package-0.1.0.tar.gz"}""" ,
23- 'path' ),
14+ """
15+ [tool.poetry.dependencies]
16+ python = "^3.8"
17+ example-url1 = {url = "https://example.com/my-package-0.1.0.tar.gz"}
18+
19+ [tool.poetry.dev.dependencies]
20+ nox = ">=2022.8.7"
21+ example-url2 = {url = "https://example.com/my-package-0.2.0.tar.gz"}
22+
23+ [tool.poetry.group.test.dependencies]
24+ sphinx = ">=5.3,<8"
25+ example-git = {git = "[email protected] :requests/requests.git"} 26+
27+ [tool.poetry.group.dev.dependencies]
28+ pytest = ">=7.2.2,<9"
29+ example-path1 = {path = "../my-package/dist/my-package-0.1.0.tar.gz"}
30+ """ ,
31+ {
32+ "tool.poetry.dependencies" : ["example-url1 = {'url': 'https://example.com/my-package-0.1.0.tar.gz'}" ],
33+ "tool.poetry.dev.dependencies" : ["example-url2 = {'url': 'https://example.com/my-package-0.2.0.tar.gz'}" ],
34+ "tool.poetry.group.test.dependencies" : ["example-git = {'git': '[email protected] :requests/requests.git'}" ], 35+ "tool.poetry.group.dev.dependencies" : ["example-path1 = {'path': '../my-package/dist/my-package-0.1.0.tar.gz'}" ],
36+ }
37+ ),
2438 (
25- ['url' , 'git' , 'path' ],
26- """example-url = {platform = "darwin", url = "https://example.com/my-package-0.1.0.tar.gz"}""" ,
27- 'url' ),
39+ """
40+ [tool.poetry.dev.dependencies]
41+ nox = ">=2022.8.7"
42+ example-url2 = {url = "https://example.com/my-package-0.2.0.tar.gz"}
43+
44+ [tool.poetry.group.test.dependencies]
45+ sphinx = ">=5.3,<8"
46+ example-git = {git = "[email protected] :requests/requests.git"} 47+
48+ [tool.poetry.group.dev.dependencies]
49+ pytest = ">=7.2.2,<9"
50+ example-path1 = {path = "../my-package/dist/my-package-0.1.0.tar.gz"}
51+ """ ,
52+ {
53+ "tool.poetry.dev.dependencies" : ["example-url2 = {'url': 'https://example.com/my-package-0.2.0.tar.gz'}" ],
54+ "tool.poetry.group.test.dependencies" : ["example-git = {'git': '[email protected] :requests/requests.git'}" ], 55+ "tool.poetry.group.dev.dependencies" : ["example-path1 = {'path': '../my-package/dist/my-package-0.1.0.tar.gz'}" ],
56+ }
57+ ),
2858 (
29- ['url' , 'git' , 'path' ],
30- """example = "^2.31.0.6" """ ,
31- None ),
59+ """
60+ [tool.poetry.dependencies]
61+ python = "^3.8"
62+ example-url1 = {url = "https://example.com/my-package-0.1.0.tar.gz"}
63+
64+ [tool.poetry.group.test.dependencies]
65+ sphinx = ">=5.3,<8"
66+ example-git = {git = "[email protected] :requests/requests.git"} 67+
68+ [tool.poetry.group.dev.dependencies]
69+ pytest = ">=7.2.2,<9"
70+ example-path1 = {path = "../my-package/dist/my-package-0.1.0.tar.gz"}
71+ """ ,
72+ {
73+ "tool.poetry.dependencies" : ["example-url1 = {'url': 'https://example.com/my-package-0.1.0.tar.gz'}" ],
74+ "tool.poetry.group.test.dependencies" : ["example-git = {'git': '[email protected] :requests/requests.git'}" ], 75+ "tool.poetry.group.dev.dependencies" : ["example-path1 = {'path': '../my-package/dist/my-package-0.1.0.tar.gz'}" ],
76+ }
77+ ),
3278 (
33- ['url' , 'git' , 'path' ],
34- """python = ">=3.8.0,<4.0" """ ,
35- None
79+ """
80+ [tool.poetry.dependencies]
81+ python = "^3.8"
82+ example-url1 = {url = "https://example.com/my-package-0.1.0.tar.gz"}
83+
84+ [tool.poetry.dev.dependencies]
85+ nox = ">=2022.8.7"
86+ example-url2 = {url = "https://example.com/my-package-0.2.0.tar.gz"}
87+ """ ,
88+ {
89+ "tool.poetry.dependencies" : ["example-url1 = {'url': 'https://example.com/my-package-0.1.0.tar.gz'}" ],
90+ "tool.poetry.dev.dependencies" : ["example-url2 = {'url': 'https://example.com/my-package-0.2.0.tar.gz'}" ],
91+ }
3692 )
3793 ]
3894)
39- def test_dependencies_check ( filters , source , expected ):
40- for _ , version in loads ( source ). items ():
41- assert _source_filter ( version , filter ) == expected
95+ def test_dependency_check_parse ( toml , expected ):
96+ dependencies = DependenciesCheck ( toml ). parse ()
97+ assert dependencies . illegal ( ) == expected
4298
4399
44100@pytest .mark .parametrize (
45- "toml, expected" ,
101+ "toml,expected" ,
46102 [
47103 (
48- """[tool.poetry.dependencies]
104+ """
105+ [tool.poetry.dependencies]
49106python = "^3.8"
50- example-url = {url = "https://example.com/my-package-0.1.0.tar.gz"}
107+ example-url1 = {url = "https://example.com/my-package-0.1.0.tar.gz"}
51108
52109[tool.poetry.dev.dependencies]
53110nox = ">=2022.8.7"
111+ example-url2 = {url = "https://example.com/my-package-0.2.0.tar.gz"}
54112
55113[tool.poetry.group.test.dependencies]
56114sphinx = ">=5.3,<8"
@@ -60,21 +118,52 @@ def test_dependencies_check(filters, source, expected):
60118pytest = ">=7.2.2,<9"
61119example-path1 = {path = "../my-package/dist/my-package-0.1.0.tar.gz"}
62120example-path2 = {path = "../my-package/dist/my-package-0.2.0.tar.gz"}
63- """ ,
64- """4 illegal dependencies:
121+ """ ,
122+ """5 illegal dependencies
65123
66- [tool.poetry.dependencies]
67- example-url = {'url': 'https://example.com/my-package-0.1.0.tar.gz'}
124+ \\ [tool.poetry.dependencies]
125+ example-url1 = {'url': 'https://example.com/my-package-0.1.0.tar.gz'}
68126
69- [tool.poetry.group.test.dependencies]
127+ \\ [tool.poetry.dev.dependencies]
128+ example-url2 = {'url': 'https://example.com/my-package-0.2.0.tar.gz'}
129+
130+ \\ [tool.poetry.group.test.dependencies]
70131example-git = {'git': '[email protected] :requests/requests.git'} 71132
72- [tool.poetry.group.dev.dependencies]
133+ \\ [tool.poetry.group.dev.dependencies]
73134example-path1 = {'path': '../my-package/dist/my-package-0.1.0.tar.gz'}
74135example-path2 = {'path': '../my-package/dist/my-package-0.2.0.tar.gz'}
136+
137+ """
138+ ),
139+ (
140+ """
141+ [tool.poetry.dependencies]
142+ python = "^3.8"
143+
144+ [tool.poetry.dev.dependencies]
145+ nox = ">=2022.8.7"
146+
147+ [tool.poetry.group.test.dependencies]
148+ sphinx = ">=5.3,<8"
149+
150+ [tool.poetry.group.dev.dependencies]
151+ pytest = ">=7.2.2,<9"
152+ """ ,
153+ """Success: All dependencies refer to explicit pipy releases.
75154"""
76155 ),
77156 ]
78157)
79- def test_dependencies_check (toml , expected ):
80- assert _dependencies_check (toml ) == expected
158+ def test_dependencies_check_report (toml , expected ):
159+ class Console :
160+ def __init__ (self ):
161+ self .output = ""
162+
163+ def print (self , output : str , style : str = None ):
164+ self .output += output + "\n "
165+
166+ console = Console ()
167+ dependencies = DependenciesCheck (toml ).parse ()
168+ dependencies .report_illegal (console )
169+ assert console .output == expected
0 commit comments