# Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import io import os import fixtures import testscenarios import testtools from openstack_requirements.cmds import edit_constraint as edit from openstack_requirements import requirement load_tests = testscenarios.load_tests_apply_scenarios class SmokeTest(testtools.TestCase): def test_make_url(self): stdout = io.StringIO() tmpdir = self.useFixture(fixtures.TempDir()).path constraints_path = os.path.join(tmpdir, 'name.txt') with open(constraints_path, 'wt') as f: f.write('bar===1\nfoo===1.0.2\nquux==3\n') rv = edit.main( [constraints_path, 'foo', '--', '-e /path/to/foo'], stdout) self.assertEqual(0, rv) content = open(constraints_path, 'rt').read() self.assertEqual('-e /path/to/foo\nbar===1\nquux==3\n', content) class TestEdit(testtools.TestCase): def test_add(self): reqs = {} res = edit.edit(reqs, 'foo', 'foo==1.2') self.assertEqual(requirement.Requirements( [requirement.Requirement('', '', '', 'foo==1.2')]), res) def test_delete(self): reqs = requirement.parse('foo==1.2\n') res = edit.edit(reqs, 'foo', '') self.assertEqual(requirement.Requirements([]), res) def test_replace(self): reqs = requirement.parse('foo==1.2\n') res = edit.edit(reqs, 'foo', 'foo==1.3') self.assertEqual(requirement.Requirements( [requirement.Requirement('', '', '', 'foo==1.3')]), res) def test_replace_many(self): reqs = requirement.parse('foo==1.2;p\nfoo==1.3;q') res = edit.edit(reqs, 'foo', 'foo==1.3') self.assertEqual(requirement.Requirements( [requirement.Requirement('', '', '', 'foo==1.3')]), res)