Skip to content

Commit

Permalink
TS-31571 Rework
Browse files Browse the repository at this point in the history
  • Loading branch information
stahlbauer committed Nov 4, 2024
1 parent a995c4a commit 9d98f3c
Showing 1 changed file with 42 additions and 36 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -49,21 +49,21 @@ public void cleanup() throws Exception {

@Test
public void testUploadMethodRecognition() throws Exception {
assertThat(parser.parse(null).determineUploadMethod()).isEqualTo(AgentOptions.EUploadMethod.LOCAL_DISK);
assertThat(parser.parse("azure-url=azure.com,azure-key=key").determineUploadMethod()).isEqualTo(
assertThat(parseAndThrow(null).determineUploadMethod()).isEqualTo(AgentOptions.EUploadMethod.LOCAL_DISK);
assertThat(parseAndThrow("azure-url=azure.com,azure-key=key").determineUploadMethod()).isEqualTo(
AgentOptions.EUploadMethod.AZURE_FILE_STORAGE);
assertThat(parser.parse(
assertThat(parseAndThrow(
String.format("%s=%s,%s=%s,%s=%s", ArtifactoryConfig.ARTIFACTORY_URL_OPTION, "http://some_url",
ArtifactoryConfig.ARTIFACTORY_API_KEY_OPTION, "apikey",
ArtifactoryConfig.ARTIFACTORY_PARTITION, "partition")
).determineUploadMethod()).isEqualTo(AgentOptions.EUploadMethod.ARTIFACTORY);

String basicTeamscaleOptions = "teamscale-server-url=teamscale.com,teamscale-user=user,teamscale-access-token=token,teamscale-partition=p";
assertThat(parser.parse(basicTeamscaleOptions)
assertThat(parseAndThrow(basicTeamscaleOptions)
.determineUploadMethod()).isEqualTo(AgentOptions.EUploadMethod.TEAMSCALE_MULTI_PROJECT);
assertThat(parser.parse(basicTeamscaleOptions + ",teamscale-project=proj")
assertThat(parseAndThrow(basicTeamscaleOptions + ",teamscale-project=proj")
.determineUploadMethod()).isEqualTo(AgentOptions.EUploadMethod.TEAMSCALE_SINGLE_PROJECT);
assertThat(parser.parse(
assertThat(parseAndThrow(
basicTeamscaleOptions + ",sap-nwdi-applications=com.package.MyClass:projectId;com.company.Main:project")
.determineUploadMethod())
.isEqualTo(AgentOptions.EUploadMethod.SAP_NWDI_TEAMSCALE);
Expand All @@ -74,21 +74,21 @@ public void testUploadMethodRecognitionWithTeamscaleProperties() throws Exceptio
TeamscaleCredentials credentials = new TeamscaleCredentials(HttpUrl.get("http://localhost"), "user", "key");
AgentOptionsParser parser = new AgentOptionsParser(new CommandLineLogger(), null, null, credentials);

assertThat(parser.parse(null).determineUploadMethod()).isEqualTo(AgentOptions.EUploadMethod.LOCAL_DISK);
assertThat(parser.parse("azure-url=azure.com,azure-key=key").determineUploadMethod()).isEqualTo(
assertThat(parseAndThrow(null).determineUploadMethod()).isEqualTo(AgentOptions.EUploadMethod.LOCAL_DISK);
assertThat(parseAndThrow("azure-url=azure.com,azure-key=key").determineUploadMethod()).isEqualTo(
AgentOptions.EUploadMethod.AZURE_FILE_STORAGE);
assertThat(parser.parse(
assertThat(parseAndThrow(
String.format("%s=%s,%s=%s,%s=%s", ArtifactoryConfig.ARTIFACTORY_URL_OPTION, "http://some_url",
ArtifactoryConfig.ARTIFACTORY_API_KEY_OPTION, "apikey",
ArtifactoryConfig.ARTIFACTORY_PARTITION, "partition")
).determineUploadMethod()).isEqualTo(AgentOptions.EUploadMethod.ARTIFACTORY);

String basicTeamscaleOptions = "teamscale-server-url=teamscale.com,teamscale-user=user,teamscale-access-token=token,teamscale-partition=p";
assertThat(parser.parse(basicTeamscaleOptions)
assertThat(parseAndThrow(basicTeamscaleOptions)
.determineUploadMethod()).isEqualTo(AgentOptions.EUploadMethod.TEAMSCALE_MULTI_PROJECT);
assertThat(parser.parse(basicTeamscaleOptions + ",teamscale-project=proj")
assertThat(parseAndThrow(basicTeamscaleOptions + ",teamscale-project=proj")
.determineUploadMethod()).isEqualTo(AgentOptions.EUploadMethod.TEAMSCALE_SINGLE_PROJECT);
assertThat(parser.parse(
assertThat(parseAndThrow(
basicTeamscaleOptions + ",sap-nwdi-applications=com.package.MyClass:projectId;com.company.Main:project")
.determineUploadMethod())
.isEqualTo(AgentOptions.EUploadMethod.SAP_NWDI_TEAMSCALE);
Expand All @@ -104,7 +104,7 @@ public void environmentConfigIdOverridesCommandLineOptions() throws Exception {
mockWebServer.enqueue(new MockResponse().setBody(JsonUtils.serialize(registration)));
AgentOptionsParser parser = new AgentOptionsParser(new CommandLineLogger(), "my-config",
null, teamscaleCredentials);
AgentOptions options = parser.parse("teamscale-partition=bar");
AgentOptions options = parseAndThrow("teamscale-partition=bar");

assertThat(options.teamscaleServer.partition).isEqualTo("foo");
}
Expand All @@ -113,7 +113,7 @@ public void environmentConfigIdOverridesCommandLineOptions() throws Exception {
public void environmentConfigFileOverridesCommandLineOptions() throws Exception {
AgentOptionsParser parser = new AgentOptionsParser(new CommandLineLogger(), null, configFile.toString(),
teamscaleCredentials);
AgentOptions options = parser.parse("teamscale-partition=from-command-line");
AgentOptions options = parseAndThrow("teamscale-partition=from-command-line");

assertThat(options.teamscaleServer.partition).isEqualTo("from-config-file");
}
Expand All @@ -128,67 +128,67 @@ public void environmentConfigFileOverridesConfigId() throws Exception {
mockWebServer.enqueue(new MockResponse().setBody(JsonUtils.serialize(registration)));
AgentOptionsParser parser = new AgentOptionsParser(new CommandLineLogger(), "my-config", configFile.toString(),
teamscaleCredentials);
AgentOptions options = parser.parse("teamscale-partition=from-command-line");
AgentOptions options = parseAndThrow("teamscale-partition=from-command-line");

assertThat(options.teamscaleServer.partition).isEqualTo("from-config-file");
}

@Test
public void notAllRequiredTeamscaleOptionsSet() {
assertThatCode(
() -> parser.parse(
() -> parseAndThrow(
"teamscale-server-url=teamscale.com,teamscale-user=user,teamscale-access-token=token,teamscale-partition=p,teamscale-project=proj")
).doesNotThrowAnyException();
assertThatCode(
() -> parser.parse(
() -> parseAndThrow(
"teamscale-server-url=teamscale.com,teamscale-user=user,teamscale-access-token=token,teamscale-partition=p")
).doesNotThrowAnyException();
assertThatCode(
() -> parser.parse(
() -> parseAndThrow(
"teamscale-server-url=teamscale.com,teamscale-user=user,teamscale-access-token=token")
).doesNotThrowAnyException();

assertThatThrownBy(
() -> parser.parse(
() -> parseAndThrow(
"teamscale-server-url=teamscale.com,teamscale-user=user,teamscale-access-token=token,teamscale-project=proj")
).hasMessageContaining("You configured a 'teamscale-project' but no 'teamscale-partition' to upload to.");

assertThatThrownBy(
() -> parser.parse("teamscale-server-url=teamscale.com")
() -> parseAndThrow("teamscale-server-url=teamscale.com")
).hasMessageContaining("not all required ones");
assertThatThrownBy(
() -> parser.parse("teamscale-server-url=teamscale.com,teamscale-user=user")
() -> parseAndThrow("teamscale-server-url=teamscale.com,teamscale-user=user")
).hasMessageContaining("not all required ones");
assertThatThrownBy(
() -> parser.parse("teamscale-server-url=teamscale.com,teamscale-access-token=token")
() -> parseAndThrow("teamscale-server-url=teamscale.com,teamscale-access-token=token")
).hasMessageContaining("not all required ones");
assertThatThrownBy(
() -> parser.parse("teamscale-user=user,teamscale-access-token=token")
() -> parseAndThrow("teamscale-user=user,teamscale-access-token=token")
).hasMessageContaining("not all required ones");
assertThatThrownBy(
() -> parser.parse("teamscale-revision=1234")
() -> parseAndThrow("teamscale-revision=1234")
).hasMessageContaining("not all required ones");
assertThatThrownBy(
() -> parser.parse("teamscale-commit=master:1234")
() -> parseAndThrow("teamscale-commit=master:1234")
).hasMessageContaining("not all required ones");
}

@Test
public void sapNwdiRequiresAllTeamscaleOptionsExceptProject() {
assertThatThrownBy(
() -> parser.parse(
() -> parseAndThrow(
"teamscale-server-url=teamscale.com,teamscale-user=user,teamscale-access-token=token,sap-nwdi-applications=com.package.MyClass:projectId;com.company.Main:project")
).hasMessageContaining(
"You provided an SAP NWDI applications config, but the 'teamscale-' upload options are incomplete");

assertThatThrownBy(
() -> parser.parse(
() -> parseAndThrow(
"teamscale-server-url=teamscale.com,teamscale-user=user,teamscale-access-token=token,teamscale-partition=p,teamscale-project=proj,sap-nwdi-applications=com.package.MyClass:projectId;com.company.Main:project")
).hasMessageContaining(
"The project must be specified via sap-nwdi-applications");

assertThatThrownBy(
() -> parser.parse(
() -> parseAndThrow(
"teamscale-server-url=teamscale.com,teamscale-user=user,teamscale-access-token=token,teamscale-partition=p,teamscale-project=proj,sap-nwdi-applications=com.package.MyClass:projectId;com.company.Main:project")
).hasMessageContaining(
"You provided an SAP NWDI applications config and a teamscale-project")
Expand All @@ -198,11 +198,11 @@ public void sapNwdiRequiresAllTeamscaleOptionsExceptProject() {
@Test
public void revisionOrCommitRequireProject() {
assertThatThrownBy(
() -> parser.parse(
() -> parseAndThrow(
"teamscale-server-url=teamscale.com,teamscale-user=user,teamscale-access-token=token,teamscale-partition=p,teamscale-revision=12345")
).hasMessageContaining("you did not provide the 'teamscale-project'");
assertThatThrownBy(
() -> parser.parse(
() -> parseAndThrow(
"teamscale-server-url=teamscale.com,teamscale-user=user,teamscale-access-token=token,teamscale-partition=p,teamscale-commit=master:HEAD")
).hasMessageContaining("you did not provide the 'teamscale-project'");
}
Expand All @@ -219,28 +219,34 @@ public void environmentConfigIdDoesNotExist() {

@Test
public void notGivingAnyOptionsShouldBeOK() throws Exception {
parser.parse("");
parser.parse(null);
parseAndThrow("");
parseAndThrow(null);
}

@Test
public void mustPreserveDefaultExcludes() throws Exception {
assertThat(parser.parse("").jacocoExcludes).isEqualTo(AgentOptions.DEFAULT_EXCLUDES);
assertThat(parser.parse("excludes=**foo**").jacocoExcludes)
assertThat(parseAndThrow("").jacocoExcludes).isEqualTo(AgentOptions.DEFAULT_EXCLUDES);
assertThat(parseAndThrow("excludes=**foo**").jacocoExcludes)
.isEqualTo("**foo**:" + AgentOptions.DEFAULT_EXCLUDES);
}

@Test
public void teamscalePropertiesCredentialsUsedAsDefaultButOverridable() throws Exception {
AgentOptionsParser parser = new AgentOptionsParser(new CommandLineLogger(), null, null, teamscaleCredentials);

assertThat(parser.parse("teamscale-project=p,teamscale-partition=p").teamscaleServer.userName).isEqualTo(
assertThat(parseAndThrow("teamscale-project=p,teamscale-partition=p").teamscaleServer.userName).isEqualTo(
"user");
assertThat(parser.parse(
assertThat(parseAndThrow(
"teamscale-project=p,teamscale-partition=p,teamscale-user=user2").teamscaleServer.userName).isEqualTo(
"user2");
}

private AgentOptions parseAndThrow(String options) throws Exception {
AgentOptions result = parser.parse(options);
parser.throwOnCollectedErrors();
return result;
}

/**
* Delete created coverage folders
*/
Expand Down

0 comments on commit 9d98f3c

Please sign in to comment.