@@ -34,6 +34,21 @@ def test_new_pkg(pretend_pip, tmp_path, capsys):
3434 assert out == "resolving a...\n a==1: adding...\n "
3535
3636
37+ def test_new_pkg_multiple_packages (pretend_pip , tmp_path , capsys ):
38+ pretend_pip .joinpath ("a-1-py3-none-any.whl" ).touch ()
39+ pretend_pip .joinpath ("c-2-py3-none-any.whl" ).touch ()
40+
41+ packages_ini = tmp_path .joinpath ("packages.ini" )
42+ packages_ini .write_text ("[b==1]\n " )
43+
44+ assert add_pkg .main (("a" , "c" , f"--packages-ini={ packages_ini } " )) == 0
45+
46+ assert packages_ini .read_text () == "[a==1]\n \n [b==1]\n \n [c==2]\n "
47+
48+ out , _ = capsys .readouterr ()
49+ assert out == "resolving a c...\n a==1: adding...\n c==2: adding...\n "
50+
51+
3752def test_pkg_already_present (pretend_pip , tmp_path , capsys ):
3853 pretend_pip .joinpath ("a-1-py3-none-any.whl" ).touch ()
3954
@@ -65,3 +80,22 @@ def test_pkg_copied_from_previous_version(pretend_pip, tmp_path, capsys):
6580
6681 out , _ = capsys .readouterr ()
6782 assert out == "resolving a...\n a==2: adding...\n "
83+
84+
85+ def test_skip_resolve (tmp_path , capsys ):
86+ packages_ini = tmp_path .joinpath ("packages.ini" )
87+ packages_ini .write_text ("[a==1]\n " )
88+
89+ # an attempt to use `pip` should raise!
90+ with mock .patch .object (subprocess , "check_call" , side_effect = AssertionError ):
91+ ret = add_pkg .main (("a==2" , "--skip-resolve" , f"--packages-ini={ packages_ini } " ))
92+ assert ret == 0
93+
94+ assert packages_ini .read_text () == "[a==1]\n [a==2]\n "
95+
96+
97+ def test_error_with_skip_resolve_an_not_pinned (capsys ):
98+ with pytest .raises (SystemExit ) as excinfo :
99+ add_pkg .main (("wat" , "--skip-resolve" ))
100+ (msg ,) = excinfo .value .args
101+ assert msg == "dep must be name==version: 'wat'"
0 commit comments