Skip to content

Commit 22b121a

Browse files
authored
Merge pull request #217 from zvezdan/fix-project-dir-handling
Fix handling of project name and directory.
2 parents 8b3f685 + 4bb94cf commit 22b121a

File tree

4 files changed

+40
-34
lines changed

4 files changed

+40
-34
lines changed

pygradle-plugin/src/integTest/groovy/com/linkedin/gradle/python/plugin/PackageSettingsIntegrationTest.groovy

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ class PackageSettingsIntegrationTest extends Specification {
4444
| import com.linkedin.gradle.python.util.PackageInfo
4545
|
4646
| class DefaultTestPackageSettings extends DefaultPackageSettings {
47-
| DefaultTestPackageSettings(String projectName) { super(projectName) }
47+
| DefaultTestPackageSettings(File projectDir) { super(projectDir) }
4848
|
4949
| @Override
5050
| Map<String, String> getEnvironment(PackageInfo packageInfo) {
@@ -58,7 +58,7 @@ class PackageSettingsIntegrationTest extends Specification {
5858
| import com.linkedin.gradle.python.tasks.PipInstallTask
5959
|
6060
| project.tasks.withType(PipInstallTask) { PipInstallTask task ->
61-
| task.packageSettings = new DefaultTestPackageSettings(project.name)
61+
| task.packageSettings = new DefaultTestPackageSettings(project.projectDir)
6262
| }
6363
|
6464
|${PyGradleTestBuilder.createRepoClosure()}
@@ -100,7 +100,7 @@ class PackageSettingsIntegrationTest extends Specification {
100100
| import com.linkedin.gradle.python.util.PackageInfo
101101
|
102102
| class DefaultTestPackageSettings extends DefaultPackageSettings {
103-
| DefaultTestPackageSettings(String projectName) { super(projectName) }
103+
| DefaultTestPackageSettings(File projectDir) { super(projectDir) }
104104
|
105105
| @Override
106106
| List<String> getGlobalOptions(PackageInfo packageInfo) {
@@ -111,7 +111,7 @@ class PackageSettingsIntegrationTest extends Specification {
111111
| import com.linkedin.gradle.python.tasks.PipInstallTask
112112
|
113113
| project.tasks.withType(PipInstallTask) { PipInstallTask task ->
114-
| task.packageSettings = new DefaultTestPackageSettings(project.name)
114+
| task.packageSettings = new DefaultTestPackageSettings(project.projectDir)
115115
| }
116116
|
117117
|${PyGradleTestBuilder.createRepoClosure()}
@@ -152,7 +152,7 @@ class PackageSettingsIntegrationTest extends Specification {
152152
| import com.linkedin.gradle.python.util.PackageInfo
153153
|
154154
| class DefaultTestPackageSettings extends DefaultPackageSettings {
155-
| DefaultTestPackageSettings(String projectName) { super(projectName) }
155+
| DefaultTestPackageSettings(File projectDir) { super(projectDir) }
156156
|
157157
| @Override
158158
| List<String> getInstallOptions(PackageInfo packageInfo) {
@@ -163,7 +163,7 @@ class PackageSettingsIntegrationTest extends Specification {
163163
| import com.linkedin.gradle.python.tasks.PipInstallTask
164164
|
165165
| project.tasks.withType(PipInstallTask) { PipInstallTask task ->
166-
| task.packageSettings = new DefaultTestPackageSettings(project.name)
166+
| task.packageSettings = new DefaultTestPackageSettings(project.projectDir)
167167
| }
168168
|
169169
|${PyGradleTestBuilder.createRepoClosure()}
@@ -204,7 +204,7 @@ class PackageSettingsIntegrationTest extends Specification {
204204
| import com.linkedin.gradle.python.util.PackageInfo
205205
|
206206
| class DefaultTestPackageSettings extends DefaultPackageSettings {
207-
| DefaultTestPackageSettings(String projectName) { super(projectName) }
207+
| DefaultTestPackageSettings(File projectDir) { super(projectDir) }
208208
|
209209
| @Override
210210
| List<String> getSupportedLanguageVersions(PackageInfo packageInfo) {
@@ -215,7 +215,7 @@ class PackageSettingsIntegrationTest extends Specification {
215215
| import com.linkedin.gradle.python.tasks.PipInstallTask
216216
|
217217
| project.tasks.withType(PipInstallTask) { PipInstallTask task ->
218-
| task.packageSettings = new DefaultTestPackageSettings(project.name)
218+
| task.packageSettings = new DefaultTestPackageSettings(project.projectDir)
219219
| }
220220
|
221221
|${PyGradleTestBuilder.createRepoClosure()}
@@ -262,7 +262,7 @@ class PackageSettingsIntegrationTest extends Specification {
262262
| import com.linkedin.gradle.python.util.PackageInfo
263263
|
264264
| class DefaultTestPackageSettings extends DefaultPackageSettings {
265-
| DefaultTestPackageSettings(String projectName) { super(projectName) }
265+
| DefaultTestPackageSettings(File projectDir) { super(projectDir) }
266266
|
267267
| @Override
268268
| boolean requiresSourceBuild(PackageInfo packageInfo) {
@@ -273,7 +273,7 @@ class PackageSettingsIntegrationTest extends Specification {
273273
| import com.linkedin.gradle.python.tasks.PipInstallTask
274274
|
275275
| project.tasks.withType(PipInstallTask) { PipInstallTask task ->
276-
| task.packageSettings = new DefaultTestPackageSettings(project.name)
276+
| task.packageSettings = new DefaultTestPackageSettings(project.projectDir)
277277
| }
278278
|
279279
|${PyGradleTestBuilder.createRepoClosure()}
@@ -317,7 +317,7 @@ class PackageSettingsIntegrationTest extends Specification {
317317
| import com.linkedin.gradle.python.util.PackageInfo
318318
|
319319
| class DefaultTestPackageSettings extends DefaultPackageSettings {
320-
| DefaultTestPackageSettings(String projectName) { super(projectName) }
320+
| DefaultTestPackageSettings(File projectDir) { super(projectDir) }
321321
|
322322
| @Override
323323
| Map<String, String> getEnvironment(PackageInfo packageInfo) {
@@ -331,7 +331,7 @@ class PackageSettingsIntegrationTest extends Specification {
331331
| import com.linkedin.gradle.python.tasks.BuildWheelsTask
332332
|
333333
| project.tasks.withType(BuildWheelsTask) { BuildWheelsTask task ->
334-
| task.packageSettings = new DefaultTestPackageSettings(project.name)
334+
| task.packageSettings = new DefaultTestPackageSettings(project.projectDir)
335335
| }
336336
|
337337
|${PyGradleTestBuilder.createRepoClosure()}
@@ -374,7 +374,7 @@ class PackageSettingsIntegrationTest extends Specification {
374374
| import com.linkedin.gradle.python.util.PackageInfo
375375
|
376376
| class DefaultTestPackageSettings extends DefaultPackageSettings {
377-
| DefaultTestPackageSettings(String projectName) { super(projectName) }
377+
| DefaultTestPackageSettings(File projectDir) { super(projectDir) }
378378
|
379379
| @Override
380380
| List<String> getGlobalOptions(PackageInfo packageInfo) {
@@ -385,7 +385,7 @@ class PackageSettingsIntegrationTest extends Specification {
385385
| import com.linkedin.gradle.python.tasks.BuildWheelsTask
386386
|
387387
| project.tasks.withType(BuildWheelsTask) { BuildWheelsTask task ->
388-
| task.packageSettings = new DefaultTestPackageSettings(project.name)
388+
| task.packageSettings = new DefaultTestPackageSettings(project.projectDir)
389389
| }
390390
|
391391
|${PyGradleTestBuilder.createRepoClosure()}
@@ -435,7 +435,7 @@ class PackageSettingsIntegrationTest extends Specification {
435435
| import com.linkedin.gradle.python.util.PackageInfo
436436
|
437437
| class DefaultTestPackageSettings extends DefaultPackageSettings {
438-
| DefaultTestPackageSettings(String projectName) { super(projectName) }
438+
| DefaultTestPackageSettings(File projectDir) { super(projectDir) }
439439
|
440440
| @Override
441441
| List<String> getBuildOptions(PackageInfo packageInfo) {
@@ -446,7 +446,7 @@ class PackageSettingsIntegrationTest extends Specification {
446446
| import com.linkedin.gradle.python.tasks.BuildWheelsTask
447447
|
448448
| project.tasks.withType(BuildWheelsTask) { BuildWheelsTask task ->
449-
| task.packageSettings = new DefaultTestPackageSettings(project.name)
449+
| task.packageSettings = new DefaultTestPackageSettings(project.projectDir)
450450
| }
451451
|
452452
|${PyGradleTestBuilder.createRepoClosure()}
@@ -496,7 +496,7 @@ class PackageSettingsIntegrationTest extends Specification {
496496
| import com.linkedin.gradle.python.util.PackageInfo
497497
|
498498
| class DefaultTestPackageSettings extends DefaultPackageSettings {
499-
| DefaultTestPackageSettings(String projectName) { super(projectName) }
499+
| DefaultTestPackageSettings(File projectDir) { super(projectDir) }
500500
|
501501
| @Override
502502
| List<String> getSupportedLanguageVersions(PackageInfo packageInfo) {
@@ -507,7 +507,7 @@ class PackageSettingsIntegrationTest extends Specification {
507507
| import com.linkedin.gradle.python.tasks.BuildWheelsTask
508508
|
509509
| project.tasks.withType(BuildWheelsTask) { BuildWheelsTask task ->
510-
| task.packageSettings = new DefaultTestPackageSettings(project.name)
510+
| task.packageSettings = new DefaultTestPackageSettings(project.projectDir)
511511
| }
512512
|
513513
|${PyGradleTestBuilder.createRepoClosure()}
@@ -554,7 +554,7 @@ class PackageSettingsIntegrationTest extends Specification {
554554
| import com.linkedin.gradle.python.util.PackageInfo
555555
|
556556
| class DefaultTestPackageSettings extends DefaultPackageSettings {
557-
| DefaultTestPackageSettings(String projectName) { super(projectName) }
557+
| DefaultTestPackageSettings(File projectDir) { super(projectDir) }
558558
|
559559
| @Override
560560
| boolean requiresSourceBuild(PackageInfo packageInfo) {
@@ -565,7 +565,7 @@ class PackageSettingsIntegrationTest extends Specification {
565565
| import com.linkedin.gradle.python.tasks.BuildWheelsTask
566566
|
567567
| project.tasks.withType(BuildWheelsTask) { BuildWheelsTask task ->
568-
| task.packageSettings = new DefaultTestPackageSettings(project.name)
568+
| task.packageSettings = new DefaultTestPackageSettings(project.projectDir)
569569
| }
570570
|
571571
|${PyGradleTestBuilder.createRepoClosure()}

pygradle-plugin/src/main/groovy/com/linkedin/gradle/python/plugin/PythonPlugin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public void apply(final Project project) {
6060
createConfigurations(project);
6161
configureVendedDependencies(project, settings);
6262

63-
DefaultPackageSettings packageSettings = new DefaultPackageSettings(project.getName());
63+
DefaultPackageSettings packageSettings = new DefaultPackageSettings(project.getProjectDir());
6464
project.getTasks().withType(SupportsPackageInfoSettings.class, it -> it.setPackageSettings(packageSettings));
6565

6666
/*

pygradle-plugin/src/main/groovy/com/linkedin/gradle/python/util/DefaultPackageSettings.java

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
package com.linkedin.gradle.python.util;
1717

18+
import java.io.File;
1819
import java.nio.file.Files;
1920
import java.util.ArrayList;
2021
import java.util.Collections;
@@ -31,10 +32,10 @@ public class DefaultPackageSettings implements PackageSettings<PackageInfo> {
3132
private static final String PIP_EDITABLE = "--editable";
3233
private static final String PIP_IGNORE_INSTALLED = "--ignore-installed";
3334

34-
private final String projectName;
35+
private final File projectDir;
3536

36-
public DefaultPackageSettings(String projectName) {
37-
this.projectName = projectName;
37+
public DefaultPackageSettings(File projectDir) {
38+
this.projectDir = projectDir;
3839
}
3940

4041
@Override
@@ -49,9 +50,7 @@ public List<String> getGlobalOptions(PackageInfo packageInfo) {
4950

5051
@Override
5152
public List<String> getInstallOptions(PackageInfo packageInfo) {
52-
String name = packageInfo.getName();
5353
String version = packageInfo.getVersion();
54-
boolean isProjectDir = version == null && Files.isDirectory(packageInfo.getPackageFile().toPath());
5554
List<String> options = new ArrayList<>();
5655

5756
// always reinstall snapshots
@@ -63,7 +62,7 @@ public List<String> getInstallOptions(PackageInfo packageInfo) {
6362
* The current project is installed editable.
6463
* This option **must be last** because it expects the directory name after it.
6564
*/
66-
if (projectName.equals(name) || isProjectDir) {
65+
if (isProjectDirectory(packageInfo)) {
6766
options.add(PIP_EDITABLE);
6867
}
6968

@@ -87,14 +86,19 @@ public List<String> getSupportedLanguageVersions(PackageInfo packageInfo) {
8786

8887
@Override
8988
public boolean requiresSourceBuild(PackageInfo packageInfo) {
90-
String name = packageInfo.getName();
9189
String version = packageInfo.getVersion();
9290

9391
// always rebuild the project package itself
94-
if (projectName.equals(name)) {
92+
if (isProjectDirectory(packageInfo)) {
9593
return true;
9694
}
9795
// always rebuild snapshots; otherwise no rebuild required, per semver versions with '-' are pre-release
9896
return (version != null && version.contains("-"));
9997
}
98+
99+
private boolean isProjectDirectory(PackageInfo packageInfo) {
100+
File packageDir = packageInfo.getPackageFile();
101+
String version = packageInfo.getVersion();
102+
return version == null && Files.isDirectory(packageDir.toPath()) && projectDir.equals(packageDir);
103+
}
100104
}

pygradle-plugin/src/test/groovy/com/linkedin/gradle/python/util/PackageSettingsTest.groovy

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,17 @@
1515
*/
1616
package com.linkedin.gradle.python.util
1717

18+
import org.gradle.testfixtures.ProjectBuilder
1819
import spock.lang.Specification
1920

2021

2122
/**
2223
* Unit tests for package settings implementers.
2324
*/
2425
class PackageSettingsTest extends Specification {
25-
PackageSettings<PackageInfo> packageSettings = new DefaultPackageSettings('foo')
26+
def project = new ProjectBuilder().build()
27+
def projectPath = project.file(project.getProjectDir())
28+
PackageSettings<PackageInfo> packageSettings = new DefaultPackageSettings(project.projectDir)
2629

2730
def "default package settings environment"() {
2831
expect: "empty environment"
@@ -47,8 +50,7 @@ class PackageSettingsTest extends Specification {
4750

4851
def "package settings install options for project snapshot()"() {
4952
expect: "project snapshot uses --ignore-installed and --editable"
50-
packageSettings.getInstallOptions(packageInGradleCache('foo-1.2.3-SNAPSHOT.tar.gz')) == [
51-
'--ignore-installed', '--editable']
53+
packageSettings.getInstallOptions(PackageInfo.fromPath(projectPath)) == ['--ignore-installed', '--editable']
5254
}
5355
5456
def "default package settings build options"() {
@@ -68,7 +70,7 @@ class PackageSettingsTest extends Specification {
6870
6971
def "default package settings supported language versions"() {
7072
expect: "empty supported language versions"
71-
packageSettings.getSupportedLanguageVersions(packageInGradleCache('foo-1.2.3.tar.gz')) == []
73+
packageSettings.getSupportedLanguageVersions(PackageInfo.fromPath(projectPath)) == []
7274
}
7375
7476
def "default package settings requires source build"() {
@@ -83,7 +85,7 @@ class PackageSettingsTest extends Specification {
8385
8486
def "package settings requires a rebuild for the current project"() {
8587
expect: "project requires a rebuild"
86-
packageSettings.requiresSourceBuild(packageInGradleCache('foo-1.2.3.tar.gz'))
88+
packageSettings.requiresSourceBuild(PackageInfo.fromPath(projectPath))
8789
}
8890
8991
static PackageInfo packageInGradleCache(String name) {

0 commit comments

Comments
 (0)