@@ -381,7 +381,15 @@ def create_sdist():
381
381
""" ))])
382
382
yield dist_path
383
383
384
- def test_setup_requires_overrides_version_conflict (self ):
384
+ use_setup_cfg = (
385
+ (),
386
+ ('dependency_links' ,),
387
+ ('setup_requires' ,),
388
+ ('dependency_links' , 'setup_requires' ),
389
+ )
390
+
391
+ @pytest .mark .parametrize ('use_setup_cfg' , use_setup_cfg )
392
+ def test_setup_requires_overrides_version_conflict (self , use_setup_cfg ):
385
393
"""
386
394
Regression test for distribution issue 323:
387
395
https://bitbucket.org/tarek/distribute/issues/323
@@ -397,7 +405,7 @@ def test_setup_requires_overrides_version_conflict(self):
397
405
398
406
with contexts .save_pkg_resources_state ():
399
407
with contexts .tempdir () as temp_dir :
400
- test_pkg = create_setup_requires_package (temp_dir )
408
+ test_pkg = create_setup_requires_package (temp_dir , use_setup_cfg = use_setup_cfg )
401
409
test_setup_py = os .path .join (test_pkg , 'setup.py' )
402
410
with contexts .quiet () as (stdout , stderr ):
403
411
# Don't even need to install the package, just
@@ -408,7 +416,8 @@ def test_setup_requires_overrides_version_conflict(self):
408
416
assert len (lines ) > 0
409
417
assert lines [- 1 ].strip () == 'test_pkg'
410
418
411
- def test_setup_requires_override_nspkg (self ):
419
+ @pytest .mark .parametrize ('use_setup_cfg' , use_setup_cfg )
420
+ def test_setup_requires_override_nspkg (self , use_setup_cfg ):
412
421
"""
413
422
Like ``test_setup_requires_overrides_version_conflict`` but where the
414
423
``setup_requires`` package is part of a namespace package that has
@@ -446,7 +455,8 @@ def test_setup_requires_override_nspkg(self):
446
455
""" )
447
456
448
457
test_pkg = create_setup_requires_package (
449
- temp_dir , 'foo.bar' , '0.2' , make_nspkg_sdist , template )
458
+ temp_dir , 'foo.bar' , '0.2' , make_nspkg_sdist , template ,
459
+ use_setup_cfg = use_setup_cfg )
450
460
451
461
test_setup_py = os .path .join (test_pkg , 'setup.py' )
452
462
@@ -464,6 +474,38 @@ def test_setup_requires_override_nspkg(self):
464
474
assert len (lines ) > 0
465
475
assert lines [- 1 ].strip () == 'test_pkg'
466
476
477
+ @pytest .mark .parametrize ('use_setup_cfg' , use_setup_cfg )
478
+ def test_setup_requires_with_attr_version (self , use_setup_cfg ):
479
+ def make_dependency_sdist (dist_path , distname , version ):
480
+ make_sdist (dist_path , [
481
+ ('setup.py' ,
482
+ DALS ("""
483
+ import setuptools
484
+ setuptools.setup(
485
+ name={name!r},
486
+ version={version!r},
487
+ py_modules=[{name!r}],
488
+ )
489
+ """ .format (name = distname , version = version ))),
490
+ (distname + '.py' ,
491
+ DALS ("""
492
+ version = 42
493
+ """
494
+ ))])
495
+ with contexts .save_pkg_resources_state ():
496
+ with contexts .tempdir () as temp_dir :
497
+ test_pkg = create_setup_requires_package (
498
+ temp_dir , setup_attrs = dict (version = 'attr: foobar.version' ),
499
+ make_package = make_dependency_sdist ,
500
+ use_setup_cfg = use_setup_cfg + ('version' ,),
501
+ )
502
+ test_setup_py = os .path .join (test_pkg , 'setup.py' )
503
+ with contexts .quiet () as (stdout , stderr ):
504
+ run_setup (test_setup_py , ['--version' ])
505
+ lines = stdout .readlines ()
506
+ assert len (lines ) > 0
507
+ assert lines [- 1 ].strip () == '42'
508
+
467
509
468
510
def make_trivial_sdist (dist_path , distname , version ):
469
511
"""
@@ -532,7 +574,8 @@ def make_sdist(dist_path, files):
532
574
533
575
def create_setup_requires_package (path , distname = 'foobar' , version = '0.1' ,
534
576
make_package = make_trivial_sdist ,
535
- setup_py_template = None ):
577
+ setup_py_template = None , setup_attrs = {},
578
+ use_setup_cfg = ()):
536
579
"""Creates a source tree under path for a trivial test package that has a
537
580
single requirement in setup_requires--a tarball for that requirement is
538
581
also created and added to the dependency_links argument.
@@ -547,11 +590,39 @@ def create_setup_requires_package(path, distname='foobar', version='0.1',
547
590
'setup_requires' : ['%s==%s' % (distname , version )],
548
591
'dependency_links' : [os .path .abspath (path )]
549
592
}
593
+ test_setup_attrs .update (setup_attrs )
550
594
551
595
test_pkg = os .path .join (path , 'test_pkg' )
552
- test_setup_py = os .path .join (test_pkg , 'setup.py' )
553
596
os .mkdir (test_pkg )
554
597
598
+ if use_setup_cfg :
599
+ test_setup_cfg = os .path .join (test_pkg , 'setup.cfg' )
600
+ options = []
601
+ metadata = []
602
+ for name in use_setup_cfg :
603
+ value = test_setup_attrs .pop (name )
604
+ if name in 'name version' .split ():
605
+ section = metadata
606
+ else :
607
+ section = options
608
+ if isinstance (value , (tuple , list )):
609
+ value = ';' .join (value )
610
+ section .append ('%s: %s' % (name , value ))
611
+ with open (test_setup_cfg , 'w' ) as f :
612
+ f .write (DALS (
613
+ """
614
+ [metadata]
615
+ {metadata}
616
+ [options]
617
+ {options}
618
+ """
619
+ ).format (
620
+ options = '\n ' .join (options ),
621
+ metadata = '\n ' .join (metadata ),
622
+ ))
623
+
624
+ test_setup_py = os .path .join (test_pkg , 'setup.py' )
625
+
555
626
if setup_py_template is None :
556
627
setup_py_template = DALS ("""\
557
628
import setuptools
0 commit comments