mirror of
https://github.com/google/nomulus.git
synced 2025-04-30 12:07:51 +02:00
Clarify diff display of MutatingCommand
Tools inheriting from MutatingCommand print out the change they are going to make and then ask the user to confirm that this is indeed what they wanted to do. The change is outputted as a list of updated values in the form key -> [oldValue, newValue] e.g. dnsPaused -> [true, false] This CL will change the output to be clearer: key: oldValue -> newValue e.g. dnsPaused: true -> false ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=170853745
This commit is contained in:
parent
fd62f4a74e
commit
01591ff88e
8 changed files with 30 additions and 31 deletions
|
@ -63,7 +63,7 @@ Cursors can be updated as follows:
|
|||
$ nomulus -e {ENVIRONMENT} update_cursors exampletld --type RDE_STAGING \
|
||||
--timestamp 2016-09-01T00:00:00Z
|
||||
Update Cursor@ahFzfmRvbWFpbi1yZWdpc3RyeXIzCxIPRW50aXR5R3JvdXBSb290Igljcm9zcy10bGQMCxIIUmVnaXN0cnkiB3lvdXR1YmUM_RDE_STAGING
|
||||
cursorTime -> [2016-09-23T00:00:00.000Z, 2016-09-01T00:00:00.000Z]
|
||||
cursorTime: 2016-09-23T00:00:00.000Z -> 2016-09-01T00:00:00.000Z
|
||||
|
||||
Perform this command? (y/N): Y
|
||||
Updated 1 entities.
|
||||
|
|
|
@ -76,7 +76,7 @@ parameter:
|
|||
```shell
|
||||
$ nomulus -e {ENVIRONMENT} update_tld exampletld --premium_list exampletld
|
||||
Update Registry@exampletld
|
||||
premiumList -> [null, Key<?>(EntityGroupRoot("cross-tld")/PremiumList("exampletld"))]
|
||||
premiumList: null -> Key<?>(EntityGroupRoot("cross-tld")/PremiumList("exampletld"))
|
||||
|
||||
Perform this command? (y/N): y
|
||||
Updated 1 entities.
|
||||
|
|
|
@ -124,7 +124,7 @@ parameter:
|
|||
$ nomulus -e {ENVIRONMENT} update_tld exampletld \
|
||||
--add_reserved_lists common_bad-words
|
||||
Update Registry@exampletld
|
||||
reservedLists -> [null, [Key<?>(EntityGroupRoot("cross-tld")/ReservedList("common_bad-words"))]]
|
||||
reservedLists: null -> [Key<?>(EntityGroupRoot("cross-tld")/ReservedList("common_bad-words"))]
|
||||
Perform this command? (y/N): y
|
||||
Updated 1 entities.
|
||||
```
|
||||
|
|
|
@ -57,16 +57,16 @@ import javax.annotation.Nullable;
|
|||
* <p>For example, if you had an {@code ImmutableSortedMap<String, String>} on a field named
|
||||
* {@code field}, then this would look like:<pre> {@code
|
||||
*
|
||||
* field.key -> [key1, key2]
|
||||
* field.value -> [value1, value2]}</pre>
|
||||
* field.key: key1 -> key2
|
||||
* field.value: value1 -> value2}</pre>
|
||||
*
|
||||
* <p>If you had an {@code ImmutableSortedMap<String, EmbeddedClass>} on a field named
|
||||
* {@code field}, where {@code EmbeddedClass} defines two {@code foo} and {@code bar} fields, then
|
||||
* the embedded properties might look like:<pre> {@code
|
||||
*
|
||||
* field.key -> [key1, key2]
|
||||
* field.value.foo -> [foo1, foo2]
|
||||
* field.value.bar -> [bar1, bar2]}</pre>
|
||||
* field.key: key1 -> key2
|
||||
* field.value.foo: foo1 -> foo2
|
||||
* field.value.bar: bar1 -> bar2}</pre>
|
||||
*
|
||||
* @param <K> key type for sorted map which must be {@link Comparable}
|
||||
* @param <V> value type for sorted map
|
||||
|
|
|
@ -15,7 +15,6 @@
|
|||
package google.registry.util;
|
||||
|
||||
import static com.google.common.base.Predicates.notNull;
|
||||
import static com.google.common.collect.Lists.newArrayList;
|
||||
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import com.google.common.base.Joiner;
|
||||
|
@ -54,7 +53,7 @@ public final class DiffUtils {
|
|||
@Override
|
||||
public String toString() {
|
||||
// Note that we use newArrayList here instead of ImmutableList because a and b can be null.
|
||||
return newArrayList(a, b).toString();
|
||||
return String.format("%s -> %s", a, b);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -141,9 +140,9 @@ public final class DiffUtils {
|
|||
&& ((DiffPair) value).b instanceof Set) {
|
||||
DiffPair pair = ((DiffPair) value);
|
||||
String prettyLineDiff = prettyPrintSetDiff((Set<?>) pair.a, (Set<?>) pair.b) + "\n";
|
||||
output = newPath + ((prettyLineDiff.startsWith("\n")) ? " ->" : " -> ") + prettyLineDiff;
|
||||
output = newPath + ((prettyLineDiff.startsWith("\n")) ? ":" : ": ") + prettyLineDiff;
|
||||
} else {
|
||||
output = newPath + " -> " + value + "\n";
|
||||
output = newPath + ": " + value + "\n";
|
||||
}
|
||||
builder.append(output);
|
||||
}
|
||||
|
|
|
@ -99,16 +99,16 @@ public class MutatingCommandTest {
|
|||
String changes = command.prompt();
|
||||
assertThat(changes).isEqualTo(
|
||||
"Update HostResource@2-ROID\n"
|
||||
+ "lastEppUpdateTime -> [null, 2014-09-09T09:09:09.000Z]\n"
|
||||
+ "lastEppUpdateTime: null -> 2014-09-09T09:09:09.000Z\n"
|
||||
+ "\n"
|
||||
+ "Update HostResource@3-ROID\n"
|
||||
+ "currentSponsorClientId -> [TheRegistrar, Registrar2]\n"
|
||||
+ "currentSponsorClientId: TheRegistrar -> Registrar2\n"
|
||||
+ "\n"
|
||||
+ "Update Registrar@Registrar1\n"
|
||||
+ "billingIdentifier -> [null, 42]\n"
|
||||
+ "billingIdentifier: null -> 42\n"
|
||||
+ "\n"
|
||||
+ "Update Registrar@Registrar2\n"
|
||||
+ "blockPremiumNames -> [false, true]\n");
|
||||
+ "blockPremiumNames: false -> true\n");
|
||||
String results = command.execute();
|
||||
assertThat(results).isEqualTo("Updated 4 entities.\n");
|
||||
assertThat(ofy().load().entity(host1).now()).isEqualTo(newHost1);
|
||||
|
@ -229,13 +229,13 @@ public class MutatingCommandTest {
|
|||
+ host1 + "\n"
|
||||
+ "\n"
|
||||
+ "Update HostResource@3-ROID\n"
|
||||
+ "currentSponsorClientId -> [TheRegistrar, Registrar2]\n"
|
||||
+ "currentSponsorClientId: TheRegistrar -> Registrar2\n"
|
||||
+ "\n"
|
||||
+ "Delete Registrar@Registrar1\n"
|
||||
+ registrar1 + "\n"
|
||||
+ "\n"
|
||||
+ "Update Registrar@Registrar2\n"
|
||||
+ "blockPremiumNames -> [false, true]\n");
|
||||
+ "blockPremiumNames: false -> true\n");
|
||||
String results = command.execute();
|
||||
assertThat(results).isEqualTo("Updated 4 entities.\n");
|
||||
assertThat(ofy().load().entity(host1).now()).isNull();
|
||||
|
@ -269,13 +269,13 @@ public class MutatingCommandTest {
|
|||
+ host1 + "\n"
|
||||
+ "\n"
|
||||
+ "Update HostResource@3-ROID\n"
|
||||
+ "currentSponsorClientId -> [TheRegistrar, Registrar2]\n"
|
||||
+ "currentSponsorClientId: TheRegistrar -> Registrar2\n"
|
||||
+ "\n"
|
||||
+ "Delete Registrar@Registrar1\n"
|
||||
+ registrar1 + "\n"
|
||||
+ "\n"
|
||||
+ "Update Registrar@Registrar2\n"
|
||||
+ "blockPremiumNames -> [false, true]\n");
|
||||
+ "blockPremiumNames: false -> true\n");
|
||||
try {
|
||||
command.execute();
|
||||
assertWithMessage("Expected transaction to fail with IllegalStateException").fail();
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
The following changes were made to the registrar:
|
||||
whoisServer -> [null, foo.bar.baz]
|
||||
ipAddressWhitelist -> [null, [1.1.1.1/32, 2.2.2.2/32, 4.4.4.4/32]]
|
||||
localizedAddress.street.0 -> [123 Example Bőulevard, 123 Street Rd]
|
||||
localizedAddress.street.1 -> [null, Ste 156]
|
||||
localizedAddress.city -> [Williamsburg, New York]
|
||||
localizedAddress.zip -> [11211, 10011]
|
||||
phoneNumber -> [+1.2223334444, +1.2223335555]
|
||||
emailAddress -> [new.registrar@example.com, thase@the.registrar]
|
||||
contacts ->
|
||||
whoisServer: null -> foo.bar.baz
|
||||
ipAddressWhitelist: null -> [1.1.1.1/32, 2.2.2.2/32, 4.4.4.4/32]
|
||||
localizedAddress.street.0: 123 Example Bőulevard -> 123 Street Rd
|
||||
localizedAddress.street.1: null -> Ste 156
|
||||
localizedAddress.city: Williamsburg -> New York
|
||||
localizedAddress.zip: 11211 -> 10011
|
||||
phoneNumber: +1.2223334444 -> +1.2223335555
|
||||
emailAddress: new.registrar@example.com -> thase@the.registrar
|
||||
contacts:
|
||||
ADDED:
|
||||
{parent=Key<?>(EntityGroupRoot("cross-tld")/Registrar("TheRegistrar")), name=Extra Terrestrial, emailAddress=etphonehome@example.com, phoneNumber=null, faxNumber=null, types=[ADMIN, BILLING, TECH, WHOIS], gaeUserId=null, visibleInWhoisAsAdmin=true, visibleInWhoisAsTech=false, visibleInDomainWhoisAsAbuse=false}
|
||||
REMOVED:
|
||||
|
|
|
@ -68,8 +68,8 @@ public class DiffUtilsTest {
|
|||
Map<String, Object> mapB = new HashMap<String, Object>();
|
||||
mapB.put("a", "tim");
|
||||
mapB.put("b", ImmutableSet.of());
|
||||
// This ensures that it is not outputting a diff of [b -> [null, []].
|
||||
assertThat(prettyPrintEntityDeepDiff(mapA, mapB)).isEqualTo("a -> [jim, tim]\n");
|
||||
// This ensures that it is not outputting a diff of b: null -> [].
|
||||
assertThat(prettyPrintEntityDeepDiff(mapA, mapB)).isEqualTo("a: jim -> tim\n");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
Loading…
Add table
Reference in a new issue