def test_multiple_lines_separated_in_project(self): global_content = textwrap.dedent("""\ foo<2;python_version=='2.7' foo>1;python_version!='2.7' """) project_content = textwrap.dedent("""\ foo<1.8;python_version=='2.7' # mumbo gumbo foo>0.9;python_version!='2.7' """) global_reqs = requirement.parse(global_content) project_reqs = list(requirement.to_reqs(project_content)) actions, reqs = update._sync_requirements_file( global_reqs, project_reqs, 'f', False, False, False) self.assertEqual(requirement.Requirements([ requirement.Requirement( 'foo', '', '<2', "python_version=='2.7'", ''), requirement.Requirement( 'foo', '', '>1', "python_version!='2.7'", ''), requirement.Requirement( '', '', '', '', "# mumbo gumbo")]), reqs) self.assertEqual(project.StdOut( " foo<1.8;python_version=='2.7' -> " "foo<2;python_version=='2.7'\n"), actions[2]) self.assertEqual(project.StdOut( " foo>0.9;python_version!='2.7' -> " "foo>1;python_version!='2.7'\n"), actions[3]) self.assertThat(actions, matchers.HasLength(4))
def test_multiple_lines_separated_in_project(self): global_content = textwrap.dedent("""\ foo<2;python_version=='2.7' foo>1;python_version!='2.7' """) project_content = textwrap.dedent("""\ foo<1.8;python_version=='2.7' # mumbo gumbo foo>0.9;python_version!='2.7' """) global_reqs = requirement.parse(global_content) project_reqs = list(requirement.to_reqs(project_content)) actions, reqs = update._sync_requirements_file(global_reqs, project_reqs, 'f', False, False, False) self.assertEqual( requirement.Requirements([ requirement.Requirement('foo', '', '<2', "python_version=='2.7'", ''), requirement.Requirement('foo', '', '>1', "python_version!='2.7'", ''), requirement.Requirement('', '', '', '', "# mumbo gumbo") ]), reqs) self.assertEqual( project.StdOut(" foo<1.8;python_version=='2.7' -> " "foo<2;python_version=='2.7'\n"), actions[2]) self.assertEqual( project.StdOut(" foo>0.9;python_version!='2.7' -> " "foo>1;python_version!='2.7'\n"), actions[3]) self.assertThat(actions, matchers.HasLength(4))
def test_unparseable_line(self): global_content = textwrap.dedent("""\ foo """) project_content = textwrap.dedent("""\ foo -e https://git.openstack.org/openstack/neutron.git#egg=neutron """) global_reqs = requirement.parse(global_content) project_reqs = list(requirement.to_reqs(project_content)) actions, reqs = update._sync_requirements_file( global_reqs, project_reqs, 'f', False, False, False) n = '-e https://git.openstack.org/openstack/neutron.git#egg=neutron' self.assertEqual(requirement.Requirements([ requirement.Requirement('foo', '', '', '', ''), requirement.Requirement('', '', '', '', n)]), reqs)
def test_extras_kept(self): global_content = textwrap.dedent("""\ oslo.db>1.4.1 """) project_content = textwrap.dedent("""\ oslo.db[fixture,mysql]>1.3 """) global_reqs = requirement.parse(global_content) project_reqs = list(requirement.to_reqs(project_content)) actions, reqs = update._sync_requirements_file( global_reqs, project_reqs, 'f', False, False, False) self.assertEqual(requirement.Requirements([ requirement.Requirement( 'oslo.db', '', '>1.4.1', '', '', ['fixture', 'mysql'])]), reqs) self.assertThat(actions, matchers.HasLength(3)) self.assertEqual(project.StdOut( " oslo.db[fixture,mysql]>1.3 -> " "oslo.db[fixture,mysql]>1.4.1\n"), actions[2])
def test_single_global_multiple_in_project(self): global_content = textwrap.dedent("""\ foo>1 """) project_content = textwrap.dedent("""\ foo<2;python_version=='2.7' foo>1;python_version!='2.7' """) global_reqs = requirement.parse(global_content) project_reqs = list(requirement.to_reqs(project_content)) actions, reqs = update._sync_requirements_file( global_reqs, project_reqs, 'f', False, False, False) self.assertEqual(requirement.Requirements([ requirement.Requirement('foo', '', '>1', "", '')]), reqs) self.assertEqual(project.StdOut( " foo<2;python_version=='2.7' -> foo>1\n"), actions[2]) self.assertEqual(project.StdOut( " foo>1;python_version!='2.7' -> \n"), actions[3]) self.assertThat(actions, matchers.HasLength(4))
def test_multiple_lines_nochange(self): global_content = textwrap.dedent("""\ foo<2;python_version=='2.7' foo>1;python_version!='2.7' """) project_content = textwrap.dedent("""\ foo<2;python_version=='2.7' foo>1;python_version!='2.7' """) global_reqs = requirement.parse(global_content) project_reqs = list(requirement.to_reqs(project_content)) actions, reqs = update._sync_requirements_file( global_reqs, project_reqs, 'f', False, False, False) self.assertEqual(requirement.Requirements([ requirement.Requirement( 'foo', '', '<2', "python_version=='2.7'", ''), requirement.Requirement( 'foo', '', '>1', "python_version!='2.7'", '')]), reqs) self.assertThat(actions, matchers.HasLength(0))