Code review comment: Extracting `0` to channelId would make the test a bit more readable.

Code under review:
public void testSnapshotAfterEndOfPartition() throws Exception {
		VerifyRecordsDataOutput<Long> output = new VerifyRecordsDataOutput<>();
		LongSerializer inSerializer = LongSerializer.INSTANCE;
		int numInputChannels = 1;
		StreamTestSingleInputGate<Long> inputGate = new StreamTestSingleInputGate<>(numInputChannels, 0, inSerializer, 1024);
		TestRecordDeserializer[] deserializers = IntStream.range(0, numInputChannels)
			.mapToObj(index -> new TestRecordDeserializer(ioManager.getSpillingDirectoriesPaths()))
			.toArray(TestRecordDeserializer[]::new);
		StreamTaskNetworkInput<Long> input = new StreamTaskNetworkInput<>(
			new CheckpointedInputGate(
				inputGate.getInputGate(),
				new CheckpointBarrierUnaligner(
					new int[] { 1 },
					ChannelStateWriter.NO_OP,
					"test",
					new DummyCheckpointInvokable())),
			inSerializer,
			new StatusWatermarkValve(1, output),
			0,
			deserializers);

		inputGate.sendEvent(new CheckpointBarrier(0, 0, CheckpointOptions.forCheckpointWithDefaultLocation()), 0);
		inputGate.sendElement(new StreamRecord<>(42L), 0);

		assertHasNextElement(input, output);
		assertHasNextElement(input, output);
		assertEquals(1, output.getNumberOfEmittedRecords());

		
		inputGate.sendEvent(EndOfPartitionEvent.INSTANCE, 0);
		input.emitNext(output);
		assertNull(deserializers[0]);

		
		CompletableFuture<Void> completableFuture = input.prepareSnapshot(ChannelStateWriter.NO_OP, 0);
		completableFuture.join();
	}

Line commented on: assertNull(deserializers[0]);

Revised code:
public void testSnapshotAfterEndOfPartition() throws Exception {
		int numInputChannels = 1;
		int channelId = 0;
		int checkpointId = 0;

		VerifyRecordsDataOutput<Long> output = new VerifyRecordsDataOutput<>();
		LongSerializer inSerializer = LongSerializer.INSTANCE;
		StreamTestSingleInputGate<Long> inputGate = new StreamTestSingleInputGate<>(numInputChannels, 0, inSerializer, 1024);
		TestRecordDeserializer[] deserializers = IntStream.range(0, numInputChannels)
			.mapToObj(index -> new TestRecordDeserializer(ioManager.getSpillingDirectoriesPaths()))
			.toArray(TestRecordDeserializer[]::new);
		StreamTaskNetworkInput<Long> input = new StreamTaskNetworkInput<>(
			new CheckpointedInputGate(
				inputGate.getInputGate(),
				new CheckpointBarrierUnaligner(
					new int[] { numInputChannels },
					ChannelStateWriter.NO_OP,
					"test",
					new DummyCheckpointInvokable())),
			inSerializer,
			new StatusWatermarkValve(numInputChannels, output),
			0,
			deserializers);

		inputGate.sendEvent(
			new CheckpointBarrier(checkpointId, 0L, CheckpointOptions.forCheckpointWithDefaultLocation()),
			channelId);
		inputGate.sendElement(new StreamRecord<>(42L), channelId);

		assertHasNextElement(input, output);
		assertHasNextElement(input, output);
		assertEquals(1, output.getNumberOfEmittedRecords());

		
		inputGate.sendEvent(EndOfPartitionEvent.INSTANCE, channelId);
		input.emitNext(output);
		assertNull(deserializers[channelId]);

		
		CompletableFuture<Void> completableFuture = input.prepareSnapshot(ChannelStateWriter.NO_OP, checkpointId);
		completableFuture.join();
	}